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

如何通过Python自动生成Barchart接口请求的有效Headers?

自动生成Barchart API请求的有效Headers

当然可以通过Python自动生成可用的Headers,核心思路是先访问目标页面获取服务器下发的Cookie(包括XSRF-TOKEN),再提取并构造请求所需的Headers,具体实现如下:

实现步骤

  • 用requests.Session()维持会话,访问目标页面时服务器会自动设置必要Cookie,Session会自动保存这些Cookie
  • 从Session的CookieJar中提取XSRF-TOKEN,注意要对其做URL解码(Cookie中的值是URL编码后的)
  • 构造包含x-xsrf-token及其他必要字段的Headers
  • 利用同一个Session发起目标XHR接口的GET请求,Session会自动携带有效Cookie

完整代码示例

import requests
from urllib.parse import unquote

# 初始化会话,自动管理Cookie
session = requests.Session()

# 设置基础请求头,模拟浏览器行为
session.headers.update({
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
    'accept-language': 'en-US,en;q=0.9'
})

# 第一步:访问目标页面,触发服务器下发Cookie和XSRF-TOKEN
target_page_url = "https://www.barchart.com/futures/quotes/CLZ22/futures-prices?viewName=main&timeFrame=current"
session.get(target_page_url)

# 提取并解码XSRF-TOKEN
xsrf_token = unquote(session.cookies.get('XSRF-TOKEN'))

# 构造API请求专用Headers
api_headers = {
    'accept': 'application/json',
    'referer': target_page_url,
    'x-xsrf-token': xsrf_token,
    'sec-ch-ua': '"Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin'
}

# 第二步:请求目标XHR接口
api_url = "https://www.barchart.com/proxies/core-api/v1/quotes/get?fields=symbol%2CcontractSymbol%2ClastPrice%2CpriceChange%2CopenPrice%2ChighPrice%2ClowPrice%2CpreviousPrice%2Cvolume%2CopenInterest%2CtradeTime%2CsymbolCode%2CsymbolType%2ChasOptions&lists=futures.contractInRoot&root=CL&meta=field.shortName%2Cfield.type%2Cfield.description%2Clists.lastUpdate&hasOptions=true&page=1&limit=100&raw=1"
response = session.get(api_url, headers=api_headers)

# 输出响应内容
print(response.text)

关键说明

  • Session会自动处理Cookie的存储和携带,无需手动维护过期的Cookie字符串
  • XSRF-TOKEN必须经过URL解码后才能作为x-xsrf-token的值,否则会触发服务器的验证失败
  • 保持请求头中的浏览器标识、来源页等字段与真实浏览器一致,降低被反爬机制拦截的概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:30:41