有的网站可能需要通过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)