python请求requests通过session自动管理cookie维持会话状态

352 阅读1分钟

有的网站可能需要通过cookie来维持会话状态,来保持登陆状态或者认证状态,比如抖音搜索或者获取直播间信息等查询的时候,可以通过requests.session()来管理cookie。

1.直接通过session对象管理

自动化管理,不用手动修改操作,很方便

import requests 

 
session = requests.session() 

print("会话初始cookie:",dict(session.cookies)) 

 
get_url = "https://postman-echo.com/get" 

res = session.get(url=get_url) 

 
print("响应头中set-cookie:",res.headers.get("set-cookie")) 

print("会话现有cookie:",dict(session.cookies)) 

输出结果:

会话初始cookie: {}

响应头中set-cookie: sails.sid=s%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4; Path=/; HttpOnly

会话现有cookie: {'sails.sid': 's%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4'}

2.通过key设置

直接通过key设置cookie,但不支持设置cookie的 path、domain 等值

import requests 

 
session = requests.session() 

print("会话初始cookie:",dict(session.cookies)) 

 
# 直接通过key设置cookie,但不支持设置cookie的 path、domain 等值 

session.cookies["cka"]="111a" 

session.cookies["ckb"]="111b" 

 
get_url = "https://postman-echo.com/get" 

res = session.get(url=get_url) 

 
print("本次请求使用的cookie:",res.request.headers.get("Cookie")) 

print("会话现有cookie:",dict(session.cookies)) 

3.通过set 方法设置

通过set方法设置cookie,且支持设置path、domain等值

import requests 

 
session = requests.session() 

print("会话初始cookie:",dict(session.cookies)) 

 
# 通过set方法设置cookie,且支持设置path、domain等值 

session.cookies.set("ck2","222",path="/",domain="postman-echo.com") 

 
get_url = "https://postman-echo.com/get" 

res = session.get(url=get_url) 

 
print("本次请求使用的cookie:",res.request.headers.get("Cookie")) 

print("会话现有cookie:",session.cookies)