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

PHP cURL请求部分URL附加至请求页面,无响应问题咨询

问题分析:OpenSecrets API请求无响应及URL变更原因

问题场景

在本地http://localhost/test.php中发起PHP cURL请求调用OpenSecrets API,代码如下:

$endpoint = 'http://www.opensecrets.org/api/';
$params = array(
    'method' => 'candContrib',
    'apikey' => 'a5f3d10fc4afedaa161edd6556dced39',
    'cid'    => 'N00041954',
    'output' => 'json'
);
$url = $endpoint . '?' . http_build_query($params);


$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => $url, 
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

当前无法获取API响应,但更换代码可获取响应头,且页面URL变为:

http://localhost/api/?method=candContrib&apikey=a5f3d10fc4afedaa161edd6556dced39&cid=N00041954&output=json&__cf_chl_rt_tk=wc_F3WN1i7uMCtxSArUZRkV1jTFZTHcP6o0UuT.Z2wQ-1704945973-0-gaNycGzNChA

此前该代码变体可正常运行,现怀疑与API提供商变更有关。


原因解析

1. URL变更的核心:Cloudflare验证令牌

URL中的__cf_chl_rt_tk是Cloudflare的实时验证令牌,说明OpenSecrets API现在启用了Cloudflare的反爬虫/人机验证机制。当你的cURL请求未通过验证时,会被Cloudflare重定向到带有该令牌的页面(结合你本地服务器的配置,最终显示为localhost的URL)。

2. 无响应的直接原因

你的cURL配置未适配Cloudflare的验证要求:

  • 默认cURL请求头(如User-Agent)过于简单,容易被识别为非浏览器请求
  • 未启用Cookie存储,无法保存Cloudflare验证过程中生成的会话Cookie
  • 纯静态cURL无法执行JS验证逻辑,无法完成Cloudflare的人机验证环节

3. 代码从有效变失效的根源

OpenSecrets近期大概率更新了反爬策略,新增了Cloudflare防护,导致旧的无验证cURL请求不再被API服务器允许。


可行的解决方向

  • 添加模拟浏览器的请求头:给cURL配置CURLOPT_USERAGENT参数,模拟主流浏览器的标识,比如:
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    
  • 启用Cookie存储:添加Cookie文件读写配置,保存验证会话:
    CURLOPT_COOKIEJAR => 'cookie.txt',
    CURLOPT_COOKIEFILE => 'cookie.txt'
    
  • 尝试JS渲染工具:如果上述方法无效,可使用支持JS渲染的工具绕过Cloudflare验证;也可查看OpenSecrets官方文档,确认是否有API调用的白名单申请通道。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:31