gpt4 book ai didi

php - file_get_contents 返回 403 禁止

转载 作者:IT王子 更新时间:2023-10-29 01:20:36 31 4
gpt4 key购买 nike

我正在尝试制作一个网站抓取工具。我是在我的本地机器上制作的,在那里工作得很好。当我在我的服务器上执行相同的操作时,它显示 403 forbidden 错误。我正在使用 PHP Simple HTML DOM Parser .我在服务器上得到的错误是这样的:

Warning: file_get_contents(http://example.com/viewProperty.html?id=7715888) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/scraping/simple_html_dom.php on line 40

触发它的代码行是:

$url="http://www.example.com/viewProperty.html?id=".$id;

$html=file_get_html($url);

我检查了服务器上的 php.ini,allow_url_fopen 已打开。可能的解决方案是使用 curl,但我需要知道哪里出错了。

最佳答案

我知道这是一个相当古老的线程,但我想分享一些想法。

如果您在访问网页时没有获得任何内容,很可能是它不希望您获得该内容。那么它如何识别脚本正在尝试访问网页,而不是人呢?一般是发给服务器的HTTP请求中的User-Agent头。

所以要让网站认为访问网页的脚本也是一个人类,你必须在请求期间更改User-Agent header 。如果您将 User-Agent header 设置为某些常见 Web 浏览器使用的值,大多数 Web 服务器可能会允许您的请求。

浏览器常用的用户代理列表如下:

  • Chrome: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'

    <
  • Firefox:Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:75.0)Gecko/20100101 Firefox/75.0

  • 等等……


$context = stream_context_create(
array(
"http" => array(
"header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
)
)
);

echo file_get_contents("www.google.com", false, $context);

这段代码伪造了用户代理并将请求发送到 https://google.com .

引用资料:

干杯!

关于php - file_get_contents 返回 403 禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545790/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com