如何移除requests库发起请求时自动添加的多余请求头
问题原因说明
你列出的X-Forwarded-For、Cdn-Loop这类头部,不是原生requests库自动添加的,这类属于CDN/代理网关的透传头部,只会在流量经过中间代理节点、目标站点上游网关时被附加。
解决方案
根据头部添加的场景不同,对应处理方式如下:
- 如果是本地/系统配置了代理导致头部被附加:
可以在请求时显式禁用代理,或者关闭requests读取环境代理的配置,代码示例:
配置后你可以通过打印请求发送的原始头部,确认本地实际发出的内容:import requests # 方式1:单次请求禁用代理 resp = requests.get("目标地址", proxies={"http": None, "https": None}) # 方式2:会话全局禁用环境代理配置 s = requests.Session() s.trust_env = False resp = s.get("目标地址")print(resp.request.headers) - 如果是目标站点托管在Cloudflare、DigitalOcean等云平台,头部由目标站点的上游网关自动添加:
该类头部是请求到达目标平台后由对方服务附加,本地发送端无权限移除。如果是你自己管理的站点,可以登录对应CDN/云服务后台,关闭额外请求头附加的相关配置即可。 - 如果是在云函数、在线运行环境等第三方托管环境中运行代码,头部由平台出口网关附加:
可联系平台运维确认是否支持关闭出口附加头的配置,或更换无额外头添加的出口节点。
内容的提问来源于stack exchange,提问作者nosheyakku
相关产品推荐
相关产品推荐

