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

Python使用requests库如何从请求中获取x-csrf-token请求头

用Python requests库获取x-csrf-token的实现方法

和OpenBullet中<HEADERS(x-csrf-token)>的获取逻辑对应,requests库的实现可以参考以下步骤,根据站点csrf-token的返回位置选择对应方法即可:


前置要求

必须使用requests.Session()创建会话实例,维持上下文cookie和会话状态,否则获取到的csrf-token会因会话不匹配被站点判定无效。


常见获取场景

1. 从响应头中获取(和OpenBullet逻辑完全一致)

如果目标站点的csrf-token直接在前置请求的响应头中返回,直接从响应的headers属性提取即可:

import requests

# 初始化会话
session = requests.Session()

# 发起前置请求,通常是目标站点的表单页、登录页或csrf下发接口
pre_response = session.get("https://你的目标站点地址")

# 提取x-csrf-token,部分站点响应头key为全小写,可做兼容处理
csrf_token = pre_response.headers.get("X-Csrf-Token")
if not csrf_token:
    csrf_token = pre_response.headers.get("x-csrf-token")

# 后续提交请求时携带即可
post_response = session.post(
    "https://目标站点提交接口地址",
    headers={
        "X-Csrf-Token": csrf_token,
        # 其他必要请求头,如User-Agent、Content-Type等
    },
    # 提交的表单/JSON参数
    json={"key": "value"}
)

2. 从HTML页面的meta标签中获取

如果站点将csrf-token放在页面的meta标签中(格式通常为<meta name="csrf-token" content="xxxx">),可以用正则快速提取:

import re

# 从前置请求返回的HTML文本中匹配csrf-token
match_res = re.search(r'<meta name="csrf-token" content="(.*?)"', pre_response.text)
if match_res:
    csrf_token = match_res.group(1)

3. 从Cookie中获取

部分站点会将csrf-token存在Cookie中,常见key为XSRF-TOKEN或csrf_token,提取方法如下:

# 从会话cookie中提取
csrf_token = session.cookies.get("XSRF-TOKEN")
# 也可以直接从响应cookie中提取
csrf_token = pre_response.cookies.get("XSRF-TOKEN")

注意事项

  • 不同站点的csrf-token命名、返回位置存在差异,你可以先手动抓包一次前置请求,确认token的返回位置后再选择对应提取方法
  • 所有请求必须共用同一个session实例,不要单独用requests.get/requests.post发起请求,否则会话不关联会导致token失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:39:03