You need to enable JavaScript to run this app. PHP cURL请求跨域文件返回空白页、触发406错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

PHP cURL请求跨域文件返回空白页、触发406错误如何解决

问题修正方案

核心错误定位

zalmos代理能正常拉取内容,本质是它不会触发CDN的拦截规则,而你当前的cURL代码存在多处直接触发拦截的硬伤:

  • 手动配置了错误的Host: example.com请求头。你的目标请求域名是smumcdnems01.cdnsrv.jio.com,Nginx CDN 会基于Host头匹配对应站点规则,Host不匹配时直接返回406 Not Acceptable 或空响应。
  • 手动声明了Accept-Encoding: gzip, deflate, sdch,但没有开启cURL的自动解压能力。CDN会按照你声明的压缩格式返回二进制压缩内容,直接输出时就会呈现完全空白的效果,看起来和没有返回内容一致。
  • 配置的UA值为占位字符串agent,属于明显的爬虫识别特征,会直接被CDN的WAF规则拦截。
  • 携带了Chrome内部调试头X-Chrome-offline,这类非用户正常请求会携带的字段,是WAF判定异常请求的核心标记,会直接触发拦截。
  • 所有鉴权字段都填写的是无意义占位值,比如appkey: 1111111、deviceId: device id,这类值根本无法通过CDN的基础鉴权校验。

修正后的可运行代码

$url = "http://smumcdnems01.cdnsrv.jio.com/jiotv.live.cdn.jio.com/" . $ch . "/" . $ch . "_" . $q  . ".m3u8" . $tok;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// 自动处理压缩内容,无需手动声明Accept-Encoding头
curl_setopt($curl, CURLOPT_ENCODING, "");
// 自动跟随302跳转,适配CDN的临时跳转逻辑
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

$headers = array(
   // 替换为真实的移动端浏览器UA,不要使用占位字符串
   "User-Agent: Mozilla/5.0 (Linux; Android 12; M2101K6G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
   "lbcookie: 300",
   "devicetype: 1",
   "os: android",
   // 替换为真实有效的鉴权参数值
   "appkey: 你的有效appkey",
   "deviceId: 你的真实设备ID",
   "uniqueId: 你的真实唯一标识",
   "ssotoken: 你的有效SSO令牌",
   "Upgrade-Insecure-Requests: 1",
   "Connection: keep-alive",
   "Accept: */*",
   "Accept-Language: en-GB,en-US;q=0.9,en;q=0.8",
   "subscriberId: 你的有效订阅者ID",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
// 调试阶段可临时关闭SSL校验
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
// 调试时打印请求错误信息,快速定位问题
$curlErr = curl_error($curl);
curl_close($curl);

echo $url;
echo $resp;
if ($curlErr) {
    echo "请求异常:" . $curlErr;
}

避坑注意事项

  • 永远不要手动设置Host头,cURL会自动从目标URL中提取正确的Host值,手动填写极容易匹配错误触发CDN拦截。
  • 如果修正后仍返回406,可通过浏览器开发者工具抓取真实请求的完整头信息,逐一比对补齐缺失的Cookie、鉴权字段,不要使用无意义的占位值。
  • 不要携带和真实用户场景无关的自定义调试头,这类字段是CDN WAF识别恶意爬虫的核心判断依据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 20:06:03