【问题标题】:file_get_contents failed to open stream: HTTP request failed only for SPECIFIC web pagefile_get_contents 无法打开流:HTTP 请求仅针对特定网页失败
【发布时间】:2014-04-12 03:38:56
【问题描述】:

尝试在特定 URL 上执行 file_get_contents 时出现以下错误:http://lolking.net/champions/。我在我尝试过的任何其他网页上执行file_get_contents 都没有问题。

错误是:

Warning: file_get_contents(http://lolking.net/champions) [function.file-get-contents]: failed to open stream: HTTP request failed!

我认为该页面故意阻止我尝试发出的请求。我也尝试过使用 cURL 和伪造用户代理,但这些都没有奏效。

我还能做些什么来尝试从上述 URL 中获取信息?

【问题讨论】:

    标签: php curl file-get-contents


    【解决方案1】:

    这对我有用,记得有 cookies.txt。

    $cookie_file = "cookies.txt";
    $url = 'http://www.lolking.net/champions';
    $c = curl_init($url);
    curl_setopt($c, CURLOPT_FRESH_CONNECT, 1);                  
    curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
    curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
    curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0");
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);         
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);     
    $z = curl_getinfo($c);
    $s = curl_exec($c);
    curl_close($c);
    
    echo $s;
    

    【讨论】:

    • 我之前尝试过类似的方法,只是没有使用任何“cookie 文件”。究竟是什么使这项工作,而不是我在这里建议的尝试? stackoverflow.com/questions/697472/…
    • 这是我的标准 curl 请求。很久以前我真的在研究它,基于脚本它可以是任何东西,任何小事,并且您的请求被服务器拒绝。这种结构大部分时间都有效。也许这不是你最好的 USERAGENT,不能说。
    【解决方案2】:

    试试

    file_get_contents('http://www.lolking.net/champions/');
    

    file_get_contents 无法处理 HTTP 标头重定向,该页面执行此操作以使其转到 www.lolking.net。用最后一个斜线试试。

    【讨论】:

    • 我在末尾加了一个斜线。试试看。
    猜你喜欢
    • 2016-06-02
    • 2012-03-23
    • 2010-10-16
    • 2017-08-07
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多