我是PHP的新手。我搜索了StackOverflow,并按照类似问题的答案的说明。但是,说明对我不起作用。
这就是问题所在:
我正在尝试使用PHP cURL获取HTML进行解析。
的 http://actas.rfef.es/actas/NPortada
这是一个可公开访问的页面。当我通过浏览器的地址栏请求页面时,它工作正常。但是,如果请求是通过cURL,我将被重定向到http://actas.rfef.es/actas/NLogin(0字节空白页)。
我认为useragent可能是一个问题,并将curl的用户代理值和followlocation
设置为false,但它仍会重定向!
这是我的代码:
$home="http://actas.rfef.es/actas/NPortada";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$home);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER, TRUE);
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:18.0)Gecko/20100101 Firefox/18.0");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch,CURLOPT_COOKIEJAR, "cookies.txt");
echo curl_exec($ch);
curl_close($ch);
为什么重定向,即使followLocation
设置为false
?该目标页面中没有元刷新标记。
如何避免重定向并获取目标网页的HTML?我做错了什么?
过去3天我一直在努力解决这个问题。请有人帮我这个吗?提前谢谢。
答案 0 :(得分:0)
浏览器好!但卷曲(在PHP上)不起作用!然后看下面的
总是,在命令行上检查curl选项!因为它太容易了!
curl < url to visit >
在浏览器的开发工具上查看请求标题!
和...
使用浏览器的请求标题卷曲
curl < url to visit >
-A "User-Agent"
或
-e "Referer"
或
--cookie "Cookie Key:value"
等...
在你的情况下,
http://actas.rfef.es/actas/NPortada在浏览器上运行良好,但在curl上无法正常工作
您可以使用curl -v http://actas.rfef.es/actas/NPortada
并查看浏览器并使用开发工具....然后没有重定向!
并使用浏览器的请求标头重新尝试curl!用户代理不工作,Referer也不工作。
然后尝试使用cookie选项!
curl -v --cookie "JSESSIONID=B2F73A51E07D624FB205A114B2CC5D19" "http://actas.rfef.es/actas/NPortada"
我找到了解决方案。必须使用Cookie请求http://actas.rfef.es/actas/NPortada!