请求重定向,即使CURLOPT_FOLLOWLOCATION设置为FALSE

时间:2013-02-01 02:40:34

标签: php curl libcurl

我是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天我一直在努力解决这个问题。请有人帮我这个吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

浏览器好!但卷曲(在PHP上)不起作用!然后看下面的

总是,在命令行上检查curl选项!因为它太容易了!

  1. curl < url to visit >

  2. 在浏览器的开发工具上查看请求标题

  3. 和...

    1. 使用浏览器的请求标题卷曲

      curl < url to visit >

      -A "User-Agent"

      -e "Referer"

      --cookie "Cookie Key:value"

      等...

    2. 在你的情况下,

      http://actas.rfef.es/actas/NPortada在浏览器上运行良好,但在curl上无法正常工作

      您可以使用curl -v http://actas.rfef.es/actas/NPortada

      查看重定向

      并查看浏览器并使用开发工具....然后没有重定向!

      enter image description here

      并使用浏览器的请求标头重新尝试curl!用户代理不工作,Referer也不工作。

      然后尝试使用cookie选项!

      curl -v --cookie "JSESSIONID=B2F73A51E07D624FB205A114B2CC5D19" "http://actas.rfef.es/actas/NPortada"
      

      我找到了解决方案。必须使用Cookie请求http://actas.rfef.es/actas/NPortada