requests 傳送請求時 保持 headers 的順序
阿新 • • 發佈:2020-10-20
序
如題,在使用 requests 傳送 post 請求時保持 headers 的順序不變
問題來源於 http://match.yuanrenxue.com/match/3 這個網站
在抓包時發現每次獲取資料前都會發送一個 post 請求去獲取cookies
在模擬時卻發現怎麼都無法獲取cookies
通過 fiddler 檢視發現是 headers 的順序有問題,
通過 postman 調整 headers 的順序,模擬傳送請求,確定是 headers 順序的問題
問題定位
通過 fiddler 檢視發現可能是 headers 的順序有問題,
通過 postman 調整 headers 的順序,模擬傳送請求,確定是 headers 順序的問題
錯誤的響應
正確的響應
解決方案
import requests url = "xxx" headers = { "Host": "match.yuanrenxue.com", "Connection": "keep-alive", "Content-Length": "0", "Origin": "http://match.yuanrenxue.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "Accept": "*/*", "Referer": "http://match.yuanrenxue.com/match/3", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", } # 先session session=requests.Session() # 後session clear,clear這個是比較關鍵的寫法。 session.headers.clear() session.headers.update( headers ) resp=session.post(url)
謹記
之前從未遇到過這個問題,