5

我正在使用函数 file_get_contents 从网页获取内容。一些网站运行良好,但大多数网站都给了我这个错误

failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable

这是我的简单代码

echo file_get_contents("url");

当我在浏览器中运行此 url 时,它工作正常。可能是什么问题?

4

2 回答 2

6

503 表示功能正在运行,并且您从远程服务器获得拒绝您的响应。如果你曾经尝试对谷歌结果进行 cURL 搜索,同样的事情也会发生,因为他们可以检测到 file_get_contents 和 cURL 使用的用户代理,从而阻止这些用户代理。您访问的服务器也有可能将其 IP 地址列入黑名单以进行此类做法。

主要是命令在远程情况下无法像浏览器一样工作的三个常见原因。

1) The default USER-AGENT has been blocked.
2) Your server's IP block has been blocked.
3) Remote host has a proxy detection. 
于 2013-06-12T09:20:35.630 回答
1

使用此脚本,所有网站都认为您是浏览器:

<?php
$url='http://mywebsite.com'
$ch = curl_init();
     $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
          curl_setopt($ch, CURLOPT_AUTOREFERER, false);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);

        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSLVERSION,CURL_SSLVERSION_DEFAULT);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $webcontent= curl_exec ($ch);
        $error = curl_error($ch); 
        curl_close ($ch);
?>
于 2017-06-01T23:22:46.210 回答