【问题标题】:Retriving a rss feed with jfeed and curl?使用 jfeed 和 curl 检索 rss 提要?
【发布时间】:2013-05-23 21:30:45
【问题描述】:

我已经为此奋斗了好几个小时,现在我正试图从 maxhire 检索一个 rss 提要: rsslink,解析内容并使用jfeed显示。现在我知道ajax不允许跨域并且我一直在使用jfeed附带的proxy.php,但无济于事它只是告诉我url中有很多重定向所以我像这样增加了它们:

<?php
header('Content-type: text/html');
$context = array(
    'http'=>array('max_redirects' => 99)
);
$context = stream_context_create($context);
// hand over the context to fopen()
$handle = fopen($_REQUEST['url'], "r", false, $context);

if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>

但仍然没有运气,它只是返回一条消息,告诉我该对象已被移动。所以我开始像这样使用 curl:

$ch = curl_init('http://www.maxhire.net/cp/?EC5A6C361E43515B7A591C6539&L=EN');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);

$result = curl_exec($ch);
var_dump($result);

在本地检索 xml 页面,但它只返回对象已移动的相同错误:

<body>string(237) "<title>Object moved</title>
<h2>Object moved to <a href="/cp/?EC5A6C361E43515B7A591C6539&amp;L=EN&amp;AspxAutoDetectCookieSupport=1&amp;AspxAutoDetectCookieSupport=1">here</a>.</h2>

"
</body>

然后将我重定向到本地 url,并在末尾添加:&AspxAutoDetectCookieSupport=1。 有人可以解释一下我做错了什么吗?

【问题讨论】:

    标签: php rss jfeed


    【解决方案1】:

    是的,我设法通过伪造用户代理和 cookie 来让 curl 工作,并且我正在使用 wordpress 中的自定义元字段来分配 url,如下所示:

        <?php
      $mykey_values = get_post_custom_values('maxhireurl');
      foreach ( $mykey_values as $key => $value ) {  
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $value);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.897.0 Safari/535.6'); 
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_REFERER, "http://www.maxhire.net");
    $html = curl_exec($ch);
    curl_close($ch);
    echo $html;
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多