You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP获取重定向图片URL内容遇403错误,求解决办法

问题分析与解决方案

403 Forbidden 错误的核心原因是目标服务器识别出你的请求并非来自正常浏览器,脚本默认的请求头与浏览器差异过大,触发了反爬或访问限制机制。以下是具体解决方法:

关键修复:模拟浏览器请求头

浏览器访问时会携带一系列标识自身的请求头,服务器会依赖这些头判断请求合法性。你需要在脚本中复刻这些字段,重点是 User-Agent,这是最容易被拦截的字段。

修改后的cURL代码

$url = trim($fileUrl);
$ch = curl_init();

// 模拟Chrome浏览器的完整请求头(可根据实际浏览器请求调整)
$headers = [
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    'Accept-Encoding: gzip, deflate, br',
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1'
];

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 注入模拟请求头
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回内容而非直接输出
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 临时跳过SSL验证(生产环境建议开启)
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, br'); // 支持压缩,与浏览器行为一致

// 若目标网站需要会话Cookie,复制浏览器中的Cookie内容填入
// curl_setopt($ch, CURLOPT_COOKIE, 'session_id=xxx; user_token=xxx');

$res = curl_exec($ch);
// 可选:排查curl执行错误
// if(curl_errno($ch)){
//     echo 'Curl错误信息: ' . curl_error($ch);
// }
curl_close($ch);
dd($res);

额外排查方向

  1. 完全复刻浏览器请求头:打开浏览器F12开发者工具,访问目标URL后在Network面板复制完整请求头,直接替换脚本中的$headers数组,确保100%一致。
  2. Cookie验证:如果网站需要登录或会话验证,需将浏览器中对应的Cookie字段复制到CURLOPT_COOKIE参数中。
  3. IP封禁检查:若上述操作无效,可能是你的服务器IP被目标网站拉黑,需更换IP或使用代理请求。

内容的提问来源于stack exchange,提问作者Shaho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:30:30