如何用Python Requests设置Cookie?维基百科Cookie操作失败求助
问题原因与解决方法
先说说你代码里的问题
第一个代码的问题
你通过requests.get()的cookies参数传入自定义Cookie,是把这个Cookie发送给维基百科服务器,但response.cookies只显示服务器返回给你的Cookie。维基百科不会把你发过去的自定义Cookie再回传给你,所以你看不到它,不代表没发送成功。
第二个代码的问题
你创建了两个完全独立的Session实例:http_session和requests.session(),你在后者身上设置了Cookie,却用前者去发起请求,自然不会带上这个Cookie;另外domain参数要填纯域名(比如wikipedia.com),不能带https://前缀。
正确做法
方法1:用Session管理Cookie(适合多请求复用)
用同一个Session实例设置Cookie并发起请求,同时可以通过请求头确认Cookie是否发送成功:
import requests with requests.Session() as http_session: # 给Session添加自定义Cookie,domain填正确的域名 http_session.cookies.set("my_cookie", "my_val", domain="wikipedia.com") r = http_session.get("https://wikipedia.com") # 查看服务器返回的Cookie print("服务器返回的Cookie:", r.cookies) # 查看发送给服务器的Cookie(在请求头里) print("发送的Cookie:", r.request.headers.get("Cookie"))
方法2:单次请求发送自定义Cookie
如果只是单次请求,同样可以通过请求头确认发送状态:
import requests my_cookie = {"new_cookie": "new_value"} response = requests.get("https://wikipedia.com", cookies=my_cookie) # 查看服务器返回的Cookie print("服务器返回的Cookie:", response.cookies) # 查看发送的Cookie print("发送的Cookie:", response.request.headers.get("Cookie"))
额外说明
如果需要让自定义Cookie在后续请求中自动携带,必须用Session对象来管理——它会自动保存你设置的Cookie,以及服务器返回的Cookie,后续请求都会带上这些Cookie。
内容的提问来源于stack exchange,提问作者Thegreen
相关产品推荐
相关产品推荐

