使用 PHP cURL 获取页面时出现 403 禁止错误

Posted

技术标签:

【中文标题】使用 PHP cURL 获取页面时出现 403 禁止错误【英文标题】:403 Forbidden error when getting a page with PHP cURL 【发布时间】:2011-04-11 23:40:37 【问题描述】:

这是我的代码:

$url = 'http://www.douban.com/'; $url = str_replace(" ", "%20", $url); $TheURL_header = substr($url, 0, 7); if ($TheURL_header == "http://") $pos = strpos($url, "/", 7); 如果($pos) $host = substr($url, 7, $pos - 7); 别的 $host = substr($url, 7); $referer = "http://" 。 $主机。 "/"; else if ($TheURL_header == "https://") $pos = strpos($url, "/", 8); 如果($pos) $host = substr($url, 8, $pos - 8); 别的 $host = substr($url, 8); $referer = "https://" 。 $主机。 "/"; 别的 $pos = strpos($url, "/"); 如果($pos) $host = substr($url, 0, $pos); 别的 $host = substr($url, 0); $url = "http://" 。 $网址; $referer = "http://" 。 $主机。 "/"; $c = curl_init(); $curl_header = 数组( '接受: */*', '推荐人:'。 $推荐人, '用户代理: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2', '主持人: ' 。 $主机, '连接:保持活动'); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_HTTPHEADER, $curl_header); curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($c, CURLOPT_TIMEOUT, 30); curl_setopt($c, CURLOPT_HEADER, 0); $res = curl_exec($c); 回声 $res;

当我设置 $url = 'http://www.google.com' 时它工作正常,但如果我更改 $url,如 www.aoguejewellery.com 和其他一些 url,我总是收到 403 错误。

【问题讨论】:

403 不是 Bad Request 错误,而是 Forbidden 错误。 Bad Request 的状态码是400 该站点可能正在使用 cookie 来跟踪会话。我没有把它作为答案,因为我有更多使用 java 抓取网页的经验。但是我遇到了类似的问题,我不得不使用 apache HttpClient java 库来完全模拟浏览器并处理 cookie 管理。只是要研究一下。 删除所有 substr/strpos 废话并使用 urlencode() :p 无法复制 - 作品。也许您的IP被阻止或其他什么。顺便说一句,在 curl 设置中添加行 curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); 以在 curl 中启用重定向嗅探。 【参考方案1】:

尝试删除curl_setopt($c, CURLOPT_CUSTOMREQUEST, 'GET');,然后重试。

【讨论】:

以上是关于使用 PHP cURL 获取页面时出现 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

禁止访问!尝试运行 php 文件时出现错误 403

使用 PHP cURL for paypal 获取交易详细信息时出现安全错误

在 PHP 中使用 curl 加载 Spotify URL 时出现问题

使用 Tumblr PHP API 时出现致命错误 cURL 错误 60 [重复]

使用 mechanize 检索 robots.txt 时出现 HTTP 403 错误

尝试使用 .htaccess 文件删除 .php 扩展名时出现 403 禁止错误