首页 >后端开发 >php教程 >为什么我的网站抓取工具在远程服务器上使用'file_get_contents()”返回 403 禁止错误?

为什么我的网站抓取工具在远程服务器上使用'file_get_contents()”返回 403 禁止错误?

DDD
DDD原创
2024-10-26 18:04:03423浏览

Why is My Website Scraper Returning a 403 Forbidden Error with `file_get_contents()` on Remote Servers?

file_get_contents() 出现 403 禁止错误

在尝试开发网站抓取工具时,开发人员在远程服务器上遇到 403 禁止错误服务器,同时使用 file_get_contents() 在本地计算机上没有任何问题。错误信息表明HTTP请求失败。

经检查,php.ini配置文件中的allow_url_fopen设置已被验证为启用,导致寻找进一步的解决方案。为了深入了解错误原因,建议使用 PHP 的调试机制。

具体来说, $http_response_header 变量可以在每次 file_get_contents() 调用后提供响应 HTTP 标头。此外,ignore_errors 上下文选项可以返回实际响应,可能解释 403 错误。

实际分析表明该错误可能源于缺少所需的 HTTP 标头,例如 Referer 或 User-Agent。为了解决这个问题,可以使用stream_context_create()创建自定义上下文来设置用户代理,模拟真实的浏览器请求。

$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);

此代码示例演示了如何设置用户代理并将请求发送到Google ,展示如何操作标头以进行有效的网页抓取。

以上是为什么我的网站抓取工具在远程服务器上使用'file_get_contents()”返回 403 禁止错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn