如何使用requests发送HTTP/2伪首部?

4

这段代码是用于提交表单数据的

headers = {
    'authority': 'ec.ef.com.cn',
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36',
    'accept': '*/*',
    'accept-language': 'en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,uk;q=0.6,en-GB;q=0.5',
}
s = requests.Session()
response = s.post(url, headers = headers)

这似乎与Chrome的操作不同

enter image description here

我了解:authority是一种HTTP/2 Headers。 我如何使用Python requests发送它?


所有这些“headers”都应该从您传递给HTTP客户端库的URL中提取。 - Evert
1个回答

3
您可以使用hyper.contrib.HTTP20Adapter,并设置mount(),例如:
from hyper.contrib import HTTP20Adapter
import requests

def getHeaders():
    headers = {
        ":authority": "xxx",
        ":method": "POST",
        ":path": "/login/secure.ashx",
        ":scheme": "https",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest"
    }
    return headers

sessions=requests.session()
sessions.mount('https://xxxx.com', HTTP20Adapter())
r=sessions.post(url_search,data=playload,headers=getHeaders())

请参考这篇中文博客


这个超文本库已经不再受支持了。他们建议使用httpx代替。 - Wojciech Jakubas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接