使用php curl的HTTP错误403

I want to do a http request with curl but can't get a valid response from the server.

the $url variable is filled with the string: "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;
}
dongshang5862
dongshang5862 我将您提供的信息分组到问题的顶部,并删除了不必要的信息,例如“谢谢”。格式化代码也有助于更快地理解可能存在的问题。
5 年多之前 回复

1个回答

That website checks for a valid User-Agent header which the cURL PHP client does not provide by default (though the commandline client does). To overcome that you can add:

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

or similar.

Edit: full code succesfully tested:

<?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');

?>
dtxooq1020
dtxooq1020 超级回答“curl / 7.39.0”是神奇的代理人我不知道这个代理人的意义但是经过测试50-100用户代理只有这对我有用。谢谢很多
3 年多之前 回复
douliang2087
douliang2087 非常感谢,编辑错误。
5 年多之前 回复
douzhaishan5462
douzhaishan5462 仔细检查你的代码,我已经粘贴了有效的完整代码
5 年多之前 回复
doukuipai8544
doukuipai8544 使用有效的用户代理我仍然会得到相同的错误
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐