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

为何URL在Postman中可正常响应,Python调用却无返回?

修复方案

你的Python请求和Postman中正常工作的请求存在几个关键差异,逐个修正即可解决问题:

1. 补全URL缺失的查询参数

Postman的cURL包含strategy=DEFAULT、pageSize=500、isProtected、_t(毫秒时间戳)这些参数,但你的Python代码仅传入了tradeDate。这些是服务器验证请求合法性的必要参数,必须补充完整。

2. 添加浏览器标识头(User-Agent)

CME这类金融网站会校验请求的客户端身份,缺少User-Agent会被直接拦截。需要在请求头中添加模拟浏览器的标识值。

3. 替换为有效Cookie

Cookie中的ak_bmsc和bm_sv属于会话临时凭证,有效期很短。你需要从当前能正常访问的浏览器或Postman中复制最新的Cookie值替换代码里的旧值。

4. 移除无用的data参数

GET请求无需data参数,直接删除即可,避免干扰请求逻辑。


修正后的完整代码示例

import requests
import time

# 生成当前毫秒级时间戳(对应cURL里的_t参数)
current_timestamp = int(time.time() * 1000)

url = "https://www.cmegroup.com/CmeWS/mvc/Settlements/Futures/Settlements/10047/FUT"

# 用params统一管理查询参数,比直接拼接URL更清晰易维护
params = {
    "strategy": "DEFAULT",
    "tradeDate": "10/07/2022",
    "pageSize": "500",
    "isProtected": "",
    "_t": current_timestamp
}

headers = {
    # 替换成你当前有效的Cookie值
    'Cookie': 'ak_bmsc=XXX; bm_sv=XXX',
    # 模拟Chrome浏览器的User-Agent,也可以用你自己浏览器的实际标识
    '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'
}

response = requests.get(url, headers=headers, params=params)

# 先打印状态码,方便快速排查问题
print("响应状态码:", response.status_code)
print(response.text)

额外注意事项

  • _t参数必须是当前请求的毫秒级时间戳,不要固定使用旧值,用time.time()*1000动态生成即可。
  • 如果仍出现连接关闭的情况,可以尝试补充Accept、Accept-Language等浏览器常用请求头,完全复制浏览器的请求头能进一步提高请求成功率。
  • Cookie有效期通常较短,若再次失效,需重新从浏览器开发者工具的Network面板中复制最新Cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:01:23