【问题标题】:HTTP Error 403 with php curlphp curl 的 HTTP 错误 403
【发布时间】:2015-03-02 21:15:38
【问题描述】:

我想用 curl 发出一个 http 请求,但无法从服务器获得有效响应。

$url 变量用字符串填充:"http://www.transfermarkt.de/borussia-dortmund/startseite/verein/16/index.html"

function request($url) {

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($ch);
    $statuscode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $statustext = curl_getinfo($ch);
    curl_close($ch);
    if($statuscode!=200){
    echo "HTTP ERROR ".$statuscode."<br>";
    echo "<pre>";
    echo var_dump($statustext);
    echo "</pre>";
    return "false";

    }
    return $result;
}

【问题讨论】:

  • 我将您提供的信息分组到问题的顶部,并删除了不必要的信息,例如“谢谢”。格式化代码也有助于更快地理解问题所在。

标签: php curl http-status-code-403


【解决方案1】:

该网站检查 cURL PHP 客户端默认不提供的有效 User-Agent 标头(尽管命令行客户端提供)。为了克服这个问题,您可以添加:

curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: curl/7.39.0');

或类似的。

编辑:完整代码已成功测试:

<?php

function request($url){
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);

        curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: curl/7.39.0');

        $result = curl_exec($ch);
        $statuscode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $statustext = curl_getinfo($ch);
        curl_close($ch);
        if($statuscode!=200){
        echo "HTTP ERROR ".$statuscode."<br>";
        echo "<pre>";
        echo var_dump($statustext);
        echo "</pre>";
        return "false";

        }
        return $result;
    }

echo request('http://www.transfermarkt.de/borussia-dortmund/startseite/verein/16/index.html');

?>

【讨论】:

  • 超级答案 "curl/7.39.0" 是神奇的代理我不知道这个代理是什么意思但是在测试了 50-100 个用户代理之后只有这个对我有用。非常感谢
猜你喜欢
  • 2019-01-01
  • 2013-05-30
  • 2014-03-05
  • 1970-01-01
  • 2023-03-11
  • 2016-12-23
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多