如何使用Python3+Requests提取请求头中的Cookie?
问题原因与解决办法
首先得理清楚两个核心点:
- 你在Chrome里看到的请求Cookie,是浏览器之前访问该网站时留存的旧Cookie,但Requests默认发起的是全新无状态请求,不会自动带上这些历史Cookie,所以
r.request.headers里自然看不到。 r.cookies是服务器通过响应头Set-Cookie返回给你的新Cookie,要是这次请求服务器没下发Cookie,就会返回空的<RequestsCookieJar[]>。
具体解决办法
1. 手动添加Cookie到请求头
把Chrome开发者工具里看到的Cookie字符串复制出来,手动加到Requests的请求头中:
import requests headers = { 'Cookie': '替换成你在Chrome里看到的完整Cookie内容' } r = requests.get("https://www.example.com", headers=headers) # 现在就能看到发送出去的Cookie了 print(r.request.headers['Cookie'])
2. 使用Session维持会话
如果需要多次请求保持Cookie状态(比如登录后后续操作),用requests.Session()可以自动保存服务器返回的Cookie,后续请求会自动带上:
import requests session = requests.Session() # 第一次请求,服务器返回的Cookie会被session保存 r = session.get("https://www.example.com") # 后续请求自动携带已保存的Cookie r2 = session.get("https://www.example.com/some-page") print(r2.request.headers.get('Cookie'))
3. 检查服务器是否下发Cookie
想确认服务器有没有给你Cookie,可以打印响应的Set-Cookie头:
import requests r = requests.get("https://www.example.com") print(r.headers.get('Set-Cookie'))
如果这个值为空,说明服务器这次请求没设置Cookie,r.cookies自然是空的。
内容的提问来源于stack exchange,提问作者supervoaleh32
相关产品推荐
相关产品推荐

