PHP Curl 访问文件总是显示 403 错误

问题描述 投票:0回答:1

我尝试通过 Curl 访问 JSON 文件,但它总是显示 403 禁止错误。

我在我的网站上使用 Cloudflare。

这是代码,只有 else 块正在运行。

我可以通过

browser and FTP
访问此JSON,没有错误,但通过
Curl and wget
它显示
403

$url = "https://example.com/pub/media/sample.json";
            
$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);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

if ($code == 200) {
    $status = true;
} else {
    $status = false;
}
curl_close($ch);
        
if ($status){
    echo 'sucess';
}
else{
    echo  $code.' My File Error '. $url;
    
}
php curl cloudflare
1个回答
0
投票

如果您使用 cURL 访问 JSON 文件并收到 403 Forbidden 错误,则可能是因为服务器阻止来自 cURL 的请求。这里有一些要点供您研究和尝试。

  1. User-Agent 标头:验证 User-Agent 标头的设置是否正确。包含可疑 User-Agent 标头或不提供 User-Agent 标头的请求有时会被服务器(包括 Cloudflare)阻止。从代码中的 CURLOPT_USERAGENT 选项中删除“User-Agent:”前缀:

    curl_setopt($ch, CURLOPT_USERAGENT, 'curl/7.39.0');

  2. Cookie 和标头:如果没有某些 Cookie 或标头,某些网站可能不允许访问。 Curl 可用于尝试复制浏览器标头。举个例子

    curl_setopt($ch, CURLOPT_HTTPHEADER, 数组( '用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/58.0.3029.110 Safari/537.3', '接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/appng,/;q=0.8', '接受语言:en-US,en;q=0.9', )); 注意:根据您的浏览器发送的内容,修改标头。

  3. 验证 Cloudflare 安全首选项、Cloudflare 速率限制和访问限制。

  4. 点击此链接:https://copyprogramming.com/howto/curl-gives-403-error

© www.soinside.com 2019 - 2024. All rights reserved.