我的知识记录

Python requests处理Cookie:手动携带与本地保存

讲解requests中Cookie的读取、手动设置、从浏览器复制Cookie字符串加载、持久化到本地文件,适合需要登录态但又不想每次都登录的场景。

场景痛点

很多网站登录有验证码、有扫码,用脚本模拟登录很麻烦。更实用的做法是:在浏览器里手动登录一次,把Cookie复制出来贴到脚本里,后续请求直接带着这个Cookie访问。本文讲清楚Cookie在requests里怎么读、怎么设、怎么存。

用到的库

pip install requests beautifulsoup4 lxml

完整代码

# 导入库
import requests

def use_dict_cookie():
"""方式一:用字典传Cookie"""
cookies = {
"sessionid": "abc123",
"token": "xyz789",
}
resp = requests.get(
"https://httpbin.org/cookies",
cookies=cookies,
timeout=10,
)
print("字典Cookie方式:")
print(resp.text)

def use_string_cookie():
"""方式二:直接把浏览器里复制的Cookie字符串塞进去"""
# 从浏览器开发者工具 Network 里随便找一个请求,复制Cookie请求头整段
cookie_str = "sessionid=abc123; token=xyz789; uid=10086"

# 用一个Session,把整段字符串按 ; 拆开转成字典
cookies = {}
for item in cookie_str.split(";"):
if "=" in item:
k, v = item.strip().split("=", 1)
cookies[k] = v

resp = requests.get(
"https://httpbin.org/cookies",
cookies=cookies,
timeout=10,
)
print("字符串解析Cookie方式:")
print(resp.text)

def save_cookies_to_file(session, path="cookies.txt"):
"""把Session里的Cookie保存到文本文件"""
with open(path, "w", encoding="utf-8") as f:
for name, value in session.cookies.items():
f.write(f"{name}={value}\n")
print(f"Cookie已保存到 {path}")

def load_cookies_from_file(path="cookies.txt"):
"""从文件读回Cookie"""
cookies = {}
with open(path, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if "=" in line:
k, v = line.split("=", 1)
cookies[k] = v
return cookies

if __name__ == "__main__":
use_dict_cookie()
use_string_cookie()

# 演示保存与加载
s = requests.Session()
s.cookies.set("token", "saved_token_123")
save_cookies_to_file(s)
loaded = load_cookies_from_file()
print("从文件读回:", loaded)

代码讲解

  • cookies 参数接收一个字典,key是Cookie名,value是Cookie值,requests会自动拼成 Cookie: 请求头。
  • 从浏览器复制出来的Cookie是一整段用分号隔开的字符串,用 split(";") 拆开再逐个 split("=", 1) 转成字典,注意只split一次,避免value里也有等号。
  • session.cookies.items() 可以遍历当前会话里所有Cookie,写文件持久化,下次启动脚本直接读文件就不用重新登录。
  • Cookie里通常有敏感信息(登录态),保存到本地文件后注意别提交到代码仓库。

运行结果

运行后会打印两种方式下服务器收到的Cookie,再打印保存到文件后又读回来的Cookie字典。httpbin的 /cookies 接口会把服务器收到的Cookie原样返回,方便验证。

注意事项

  • 浏览器里复制Cookie时要复制完整一段,少了 sessionidtoken 就会失效。
  • Cookie有时效性,过期后需要重新从浏览器复制,脚本里要做好过期处理(重新登录)。
  • 不要把包含Cookie的脚本和文件随便分享给别人,等于把账号密码给了对方。
  • 同域名下不同路径的Cookie行为不一样,复杂场景建议用Session让它自动管理。

Python requests处理Cookie:手动携带与本地保存

标签:

更新时间:2026-09-14 20:50:00

上一篇:Python requests下载图片文件:流式保存与文件命名

下一篇:Python requests批量下载文件:多线程提速与失败重试