我正在將一個使用請求的程式遷移到使用 aiohttp,但我遇到了其中的一部分,因為使用 aiohttp 得到的回應與請求不同。
功能是這樣的,并嘗試將用戶登錄到網站。
async def LoginLN(usuario, contrase?a, email, url, session):
s = session # aiohttp session
# some stuff and some other requests using the same aiohttp session to get the appropriate cookies for login and up to this part, all responses are OK
r5 = await s.post('https://some-website.com.ar/register-user', headers=headerss5, cookies=cookie_dict, timeout = 140)
texto5 = await r5.text()
# some more stuff
我得到
texto5 = '{"registration_status":"invalid_credentials","user":[]}'
并且用戶沒有登錄。如果我只是通過保持每個引數相同來替換 r5 定義
async def LoginLN(usuario, contrase?a, email, url, session):
# some stuff and some other requests using the same aiohttp session to get the appropriate cookies for login and up to this part, all responses are OK
ss = requests.session()
r5 = ss.post('https://some-website.com.ar/register-user', headers=headerss5, cookies = cookie_dict, timeout = 140)
texto5 = r5.text
# some more stuff
回應是正確的,我能夠正確登錄用戶。headerss5 和 cookie_dict 是常用的 header 和 cookie 字典。
我已經對這兩個請求進行了wireshark 并看到了一些差異,但不知道如何進一步分析這一點,即使我確實找到了一些東西,我也不知道該怎么做才能使aiohttp 正常作業,但歡迎提出任何建議。
請求請求 aiohttp 請求
我正在使用 Windows 10 并且:
requests == 2.27.1
aiohttp == 3.8.3
python == 3.10.0
uj5u.com熱心網友回復:
我終于可以看到發生了什么。使用 mitmproxy 檢查兩個請求(請求與 aiohttp)我可以看到 aiohttp 發送的 cookie 添加了雙引號,其中請求不會添加它們以生成不同的回應。調查這個問題以找到一個已經存在的解決方案,我遵循了這里提出的解決方法,將 cookie 明確地作為標題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511394.html
