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

PHP CURL无法获取纳斯达克API数据问题求助

问题:PHP CURL无法获取纳斯达克接口数据,但Postman可正常请求

我尝试从接口 https://www.nasdaq.com/api/v1/loadmore/content_feed_2_3?content_types=article&title=Latest%20News&load_more_text=See%20More%20News&total_limit=40&base_nid=7456&offset=0 获取数据,用Postman(Chrome扩展)能正常拿到结果,但用下面的PHP CURL脚本却请求失败:

error_reporting(E_ALL);
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://www.nasdaq.com/api/v1/loadmore/content_feed_2_3?content_types=article&title=Latest%20News&load_more_text=See%20More%20News&total_limit=40&base_nid=7456&offset=0',
    CURLOPT_RETURNTRANSFER => true,
   // CURLOPT_ENCODING => '',
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',
    CURLOPT_HTTPHEADER => array('Content-type: text/plain'),
   // CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
//    CURLOPT_HTTPHEADER => array(
//        'Cookie: ak_bmsc=0A6F4EE1A61A153AF8CEACFCF215E5B6~000000000000000000000000000000~YAAQJ1stF9zG2kKDAQAAbw2EdBGJ660iRvYwu0OI1LbOUohUTyzwtnMcOXf1u3pf889WVJC69C2Jg7d7STDNE/jUR1BgOo8uoPCyJ/LY9d9ZCZu2zgSUOBNy5yeRkkONEcQigyuKK+9BnLnlJZWPgWNOIvCcZjPz4sUxrUDndRWL4z0eW7Cz/lwwZoaN1da85i+AwvwEUNbJEH+GgqcxUDo3Yur5d0dyPVrmnmDSeHYJojGC9Rc7HtFMGqa7M3+yIeFqGE4sLG2Jdc3ekb9ma0lCLuE+UF7sZtSmuEBNiGe08RqN5gCFWPnbxf44Sn479BfPN68HLY3JGVNaly5344Mk7QdHEuP29uuTAAmrYsLEsYaj2S1kzNeROZMQ'
//    ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

问题排查与修复方案

核心问题点

  1. 多余的请求头:GET请求不需要设置Content-type: text/plain,这个头会被服务器判定为异常请求,而Postman默认不会添加该字段。
  2. 缺失验证Cookie:纳斯达克接口依赖ak_bmsc这类反爬Cookie验证请求合法性,你注释掉了Cookie头,而Postman会自动携带浏览器的有效Cookie。
  3. UA版本过旧:脚本里的Firefox 38 UA太老旧,容易被反爬机制拦截。

修复后的脚本

error_reporting(E_ALL);
$curl = curl_init();

// 替换成你从浏览器/Postman获取的有效Cookie(Cookie会过期,需实时获取)
$validCookie = 'ak_bmsc=你的实时有效Cookie值~000000000000000000000000000000~YAAQ...';

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://www.nasdaq.com/api/v1/loadmore/content_feed_2_3?content_types=article&title=Latest%20News&load_more_text=See%20More%20News&total_limit=40&base_nid=7456&offset=0',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => 'gzip, deflate', // 开启压缩,匹配Postman默认行为
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    CURLOPT_HTTPHEADER => array(
        'Cookie: ' . $validCookie,
        'Accept: application/json, text/plain, */*' // 明确接受响应类型
    ),
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$response = curl_exec($curl);

// 增加错误调试
if(curl_errno($curl)) {
    echo 'CURL错误:' . curl_error($curl);
}

curl_close($curl);
echo $response;

额外说明

  • Cookie必须是当前有效的,你可以从浏览器开发者工具的请求头里复制最新的ak_bmsc值;
  • 去掉多余的Content-type头,GET请求无需设置该字段;
  • 添加Accept头,明确告诉服务器接受的响应格式,和Postman请求行为保持一致。

内容的提问来源于stack exchange,提问作者Muhammad Hadi Qureshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:30:53