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

Python使用requests发送POST请求时如何生成动态请求头?

动态请求头生成解决方案

1. Content-Length 无需手动生成

requests 库会自动根据你传入的 data/json 参数的长度计算并填充 Content-Length 请求头,不需要你手动写死这个字段。手动填写反而会因为 payload 内容变化导致长度不匹配,触发请求错误。

使用 requests 内置的 Session 对象即可自动维护 cookie 生命周期,无需手动抓包拼接:

import requests

# 初始化会话对象,会自动存储、携带所有服务器返回的cookie
session = requests.Session()

# 先模拟浏览器首次访问网站首页/登录页,获取初始cookie
session.get("https://mywebsite.com", headers=base_headers)

# 后续POST请求直接用session.post发起,cookie会自动携带
response = session.post(url=API_ENDPOINT, headers=base_headers, data=payload)

基础请求头中不需要添加 Cookie 字段,Session 会自动处理。

3. Accept 头处理

绝大多数场景下 Accept 头可以直接固定为浏览器的默认值即可,不需要动态生成。如果目标站点确实对 Accept 有动态校验,直接匹配你抓包时同类型接口的 Accept 值固定填写即可。

可用基础请求头示例

你只需要保留以下固定字段即可,动态字段全部交给库自动处理:

base_headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.5",
    "Connection": "keep-alive",
    "Content-Type": "application/x-www-form-urlencoded",
    "Host": "mywebsite.com",
    "Origin": "https://mywebsite.com",
    "Referer": "https://mywebsite.com",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0"
}

额外注意

如果发起请求后仍被拦截,大概率是站点还有其他动态校验参数(比如请求签名、动态token等),需要你找到对应参数的前端生成逻辑自行实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:45:06