详细内容或原文请订阅后点击阅览
使用 Python 完全控制 HTTP 请求标头
在这篇博文中,我将展示如何删除任何标头、设置它们的顺序、定义它们的大写以及如何发送重复的标头。
来源:bin.re _恶意软件恶意服务器,甚至一些 CDN,正在使用 HTTP 标头来识别客户端,并会根据标头的存在、其顺序甚至标头名称的大小写来拒绝查询。根据 RFC 2616,其中许多功能并不重要,这可能就是为什么使用 Python 的请求和 httpx 库无法完全控制 HTTP 标头的原因。
请求
httpx
在这篇博文中,我将展示如何在 HTTP 标头方面实现以下 4 个方面:
- 删除任何标头,包括那些通常应该发送的标头,如 User-Agent、按特定顺序排序标头、定义 http 标头的大小写(例如,USER-AGENT 而不是 User-Agent),并允许重复的标头(例如两个 Set-Cache 标头)。
User-Agent
USER-AGENT
User-Agent
Set-Cache
使用更现代的 httpx 可以实现所有四点,除了更改 Host 标头的顺序或将其完全删除。为了做到这一点,您需要对一些函数进行 monkey patch。
httpx
Host
非常流行的请求库由于底层的 OrderedDict 数据结构而无法执行重复标头,但您可以控制其余 3 个方面。
请求
OrderedDict
✔
✔*
主机
请求