使用Python requests时如何从请求payload中提取csrf token?
从纯文本payload中提取csrf token的实现方案
你给出的示例是每行键: 值格式的纯文本payload,以下是两种可直接使用的实现方式:
方法1:逐行遍历解析
适合payload格式固定、无特殊嵌套的场景,逻辑简单易懂:
import requests # 第一步:请求获取包含csrf的响应内容 pre_resp = requests.get("你之前请求的接口地址") payload_content = pre_resp.text csrf_token = None for line in payload_content.splitlines(): stripped_line = line.strip() # 跳过空行 if not stripped_line: continue # 匹配csrf_token开头的行 if stripped_line.startswith("csrf_token:"): # 按第一个冒号分割,取后面的token值并去除首尾空白 csrf_token = stripped_line.split(":", 1)[1].strip() break
方法2:正则匹配提取
适合格式有少量空格变动、不想写遍历逻辑的场景,代码更简洁:
import requests import re pre_resp = requests.get("你之前请求的接口地址") payload_content = pre_resp.text # 正则匹配csrf_token后面的所有内容,自动忽略前后空白 match_res = re.search(r"csrf_token:\s*(.+)", payload_content) if match_res: csrf_token = match_res.group(1).strip()
补充说明
- 如果实际返回的payload是JSON格式,无需手动解析,直接调用响应的json方法取值即可:
pre_resp = requests.get("你之前请求的接口地址") csrf_token = pre_resp.json()["csrf_token"] - 注意确认实际返回内容中csrf对应的键名,如果是
csrfToken、X-CSRF-Token等其他写法,对应修改匹配规则即可 - 提取完成后可先打印
csrf_token确认取值正确,避免后续请求校验失败
内容的提问来源于stack exchange,提问作者nousername46291772
相关产品推荐
相关产品推荐

