使用Python Requests访问setcookie.net无法获取Cookie求助
你的核心问题是请求数据格式错误:当前用json=payload发送的是JSON格式的Request Payload,但目标网站需要的是application/x-www-form-urlencoded类型的Form Data,只需修改以下两处:
- 替换请求参数:把
json=payload改成data=payload,requests的data参数会自动将字典编码为Form Data格式发送。 - 删除请求头中的
Content-Length:手动设置的长度可能和实际发送的Form Data长度不匹配,requests会自动计算并设置这个头,无需手动指定。
修改后的完整代码
import requests s = requests.Session() headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'Cache-Control':'max-age=0', 'Content-Type':'application/x-www-form-urlencoded', 'Cookie':'__SecureToken=1234', 'Origin':'https://setcookie.net', 'Referer':'https://setcookie.net/', 'Sec-Ch-Ua':'"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"', 'Sec-Ch-Ua-Mobile':'?0', 'Sec-Ch-Ua-Platform':'"Windows"', 'Sec-Fetch-Dest':'document', 'Sec-Fetch-Mode':'navigate', 'Sec-Fetch-Site':'same-origin', 'Sec-Fetch-User':'?1', 'Upgrade-Insecure-Requests':'1', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' } payload = { 'name':'__Secure-next-auth.session-token.0', 'value':'please', 'path':'/', 'dom':'none', 'ss':'notset', 'httponly':'on' } # 改用data参数发送Form Data r = s.post('https://setcookie.net/', data=payload, headers=headers) print(s.cookies)
修改后,请求会以服务器期望的Form Data格式发送,服务器就能正确处理并返回Cookie,此时print(s.cookies)就能输出有效的CookieJar内容。
内容的提问来源于stack exchange,提问作者Морфей
相关产品推荐
相关产品推荐

