4

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

4

1 回答 1

0

浏览器OK!但是 curl (在 php 上)不起作用!然后看下面

总是,检查命令行上的 curl 选项!因为它很容易!

  1. curl < url to visit >

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

和...

  1. curl 与浏览器的请求标头

    curl < url to visit >

    -A "User-Agent"或者

    -e "Referer"或者

    --cookie "Cookie Key:value"

    ETC...

在你的情况下,

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

您可以通过使用查看重定向curl -v http://actas.rfef.es/actas/NPortada

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

在此处输入图像描述

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

然后尝试使用 cookie 选项!

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

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

于 2014-09-23T01:44:53.267 回答