使用PHP Curl访问文件持续出现403错误求助
解决PHP Curl访问Cloudflare防护下JSON文件返回403 Forbidden的问题
你遇到的问题是Cloudflare的安全机制识别出Curl请求为非浏览器请求,从而返回403拦截。浏览器能正常访问是因为它发送了完整的请求头信息,而你的Curl请求头过于简单,触发了Cloudflare的防护规则。
以下是可行的解决方法:
- 模拟完整浏览器请求头:Cloudflare会验证请求中的多个头字段,仅设置User-Agent不够,需要补充Accept、Accept-Language、Referer等常见浏览器头。
- 启用Cookie存储:部分Cloudflare验证流程会通过Cookie记录会话状态,需要让Curl保存并复用Cookie。
- 跟随跳转:Cloudflare可能会先跳转至验证页面,需要开启Curl的自动跟随跳转功能。
- 处理SSL验证:确保Curl能正确处理目标网站的SSL证书。
修改后的代码示例:
$url = "https://example.com/pub/media/sample.json"; // 初始化Curl会话 $ch = curl_init($url); // 设置基础选项 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自动跟随跳转 curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // 保存Cookie到本地文件 curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // 读取本地Cookie发送请求 // 设置模拟浏览器的请求头 $headers = [ 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language: en-US,en;q=0.5', 'Accept-Encoding: gzip, deflate, br', 'Referer: https://example.com/', // 填写目标网站的首页或关联页面 'Connection: keep-alive', 'Upgrade-Insecure-Requests: 1' ]; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 可选:若网站SSL证书存在验证问题,可临时关闭验证(不建议长期使用) // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $result = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $status = ($code == 200) ? true : false; if ($status){ echo 'success'; // 可在此处理返回的JSON数据 // $data = json_decode($result, true); } else { echo $code . ' My File Error ' . $url; }
关键修改说明:
- 请求头补充:使用真实Chrome浏览器的User-Agent和其他常见头字段,让请求行为更接近普通浏览器。
- Cookie处理:通过
CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE保存并复用Cookie,应对Cloudflare的会话验证逻辑。 - 跟随跳转:
CURLOPT_FOLLOWLOCATION确保自动处理Cloudflare可能触发的验证跳转。
如果仍然出现403,可能是遇到了Cloudflare的人机验证(如CAPTCHA),这种情况下需要使用支持JS渲染的工具(如Puppeteer)来绕过,但对于大部分基础防护,上述修改即可解决问题。
内容的提问来源于stack exchange,提问作者ishaq
相关产品推荐
相关产品推荐

