我试图从纽约时报网站上的新闻文章中获取元数据,特别是http://www.nytimes.com/2014/06/25/us/politics/thad-cochran-chris-mcdaniel-mississippi-senate-primary.html
每当我尝试但是我会从视线中获得重定向,因为我的“浏览器”不接受cookie。我已启用curl选项以保存Cookie,并尝试在其他一些StackOverflow问题(here,here和here)中遵循接受的答案,而答案在这些网站上有效似乎没有在nytimes网站上工作。
我目前的php curl函数如下所示:
function get_extra_meta_tags_curl($url) {
$ckfile = tempnam("/public_html/commentarium/", "cookies.txt");
$ch = curl_init($main_url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
}
问题似乎是当我请求URL时,nytimes.com检查浏览器是否接受cookie。在使用REFUSE_COOKIE_ERROR重定向到登录页面之前,我检查了几次。您可以在我的测试页here上看到它,而不是在此处发布完整的重定向列表,以及最终重定向返回的原始html以及我当前的get_extra_meta_tags_curl函数在 CURL测试 <下返回的内容/ p>
感谢您的帮助!
答案 0 :(得分:1)
您以错误的方式启用Cookie自动处理。 CURLOPT_COOKIEJAR
仅允许cookie保存(存储),但您还需要启用cookie加载并通过请求传递它们(通过CURLOPT_COOKIEFILE
选项)。否则cookie自动处理将无法工作,您将体验到“浏览器不接受cookie”问题。
因此,您必须在每个 CURL请求中将CURLOPT_COOKIEJAR
和CURLOPT_COOKIEFILE
选项设置为相同的值($ckfile
):
...
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
...