JJJohn
JJJohn

Reputation: 1079

How do I send a HTTP/2 pseudo-headers with requests?

This code is to post a form data

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)

which seems different to what Chrome does

enter image description here

I understand :authority is a kind of HTTP/2 Headers. How do I send it with Python requests?

Upvotes: 4

Views: 2832

Answers (1)

jizhihaoSAMA
jizhihaoSAMA

Reputation: 12672

You could use hyper.contrib.HTTP20Adapter, and set the mount(),like:

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())

Refer to a Chinese blog

Upvotes: 4

Related Questions