Python requests库中如何获取和设置cookie?
爬虫需要登陆的问题 我先用 requests get 请求 想先拿到 cookie 放到 header 中 但是 get 过后 response.cookies 和 chrome 里面的 cookie 不同 少了很多 想问一下怎么拿到这些 cookie
Python requests库中如何获取和设置cookie?
8 回复
一般这种问题还是 chrome 里有些隐秘请求 /操作导致的,requests 只发了一个请求,但你 chrome 打开这个网页可能执行 js,或者发了别的请求,都说不好,仔细排查模拟吧
在Python的requests库中,处理cookie主要有两种方式:自动管理和手动操作。
自动管理(推荐)
使用requests.Session()对象,它会自动处理cookie的存储和发送:
import requests
session = requests.Session()
response = session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
print(session.cookies.get_dict()) # 获取当前session的所有cookie
手动获取和设置
- 从响应中获取cookie:
import requests
response = requests.get('https://httpbin.org/cookies')
cookies = response.cookies
print(cookies.get('cookie_name')) # 获取特定cookie
- 发送请求时设置cookie:
# 方法1:使用cookies参数
cookies = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/cookies', cookies=cookies)
# 方法2:使用CookieJar
from http.cookiejar import CookieJar
jar = CookieJar()
jar.set_cookie(cookie_object)
response = requests.get('https://httpbin.org/cookies', cookies=jar)
常用操作
# 获取所有cookie字典
all_cookies = session.cookies.get_dict()
# 设置单个cookie
session.cookies.set('cookie_name', 'value')
# 删除cookie
session.cookies.clear('cookie_name')
实际示例
import requests
# 创建session自动管理cookie
session = requests.Session()
# 登录设置cookie
login_data = {'username': 'user', 'password': 'pass'}
session.post('https://example.com/login', data=login_data)
# 后续请求自动携带cookie
profile = session.get('https://example.com/profile')
print(f"当前cookies: {session.cookies.get_dict()}")
# 手动添加额外cookie
session.cookies.set('extra_cookie', 'extra_value')
简单说就是:用Session自动管理,需要手动操作时直接操作cookies属性。
有时候浏览器会发送自己的 cookie,不同浏览器还不一样,不用理会,可以先尝试登录。再就是注意是不是登录分成多个请求分步获取参数最后提交的。
requests.session() 了解下
- 如楼上所说使用 requests.session()
2.有些请求会让服务器设置 set-cookies,请在抓包的 时候分析看看是否有这些请求,然后使用 1 的 session 访问
3.有些属性是 chrome 自带。
印象中好像直接复制 chrome 登陆后的 cookie 也能请求
的确可以登录 但是如果想要完全自动化 就必须获取 cookie 了
post 登陆页面获取的 cookie,比使用浏览器登陆的 cookie 要少很多,带着 cookie 访问其他页面。但是依然登陆成功了。

