You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Requests会话中设置Cookie失败问题求助

解决Requests中无法复用Buff.163.com登录Cookie的问题

问题分析

你遇到的核心问题是手动将浏览器Cookie复制到Requests后,请求未携带有效登录状态,大概率是以下几个原因:

  • Cookie仅复制了键值对,缺少domain、path等关键属性,导致Requests不知道该向哪个域名发送这些Cookie
  • 遗漏了浏览器中存在的其他登录相关Cookie字段
  • 请求头不够完整,网站的反爬或验证机制识别出非浏览器请求

解决方案

1. 完整导出浏览器的Cookie

不要只复制键值对,需从浏览器开发者工具中导出所有和buff.163.com相关的Cookie,包括它们的domain、path属性:

  • 打开Chrome开发者工具(F12)→ 切换到Application标签 → 左侧Cookies目录下选择https://buff.163.com
  • 复制每一条Cookie的Name、Value、Domain、Path字段,确保没有遗漏登录相关的字段(比如可能存在的login_uid之类的字段)

2. 正确向Session添加Cookie

不要仅用session.cookies.update(),这种方式不会自动绑定Cookie的domain和path,需手动设置每个Cookie的属性:

import requests

# 从浏览器复制的完整Cookie列表,包含所有属性
full_cookies = [
    {"name": "session", "value": "你的真实session值", "domain": ".buff.163.com", "path": "/"},
    {"name": "csrf_token", "value": "你的真实csrf_token值", "domain": ".buff.163.com", "path": "/"},
    {"name": "Locale-Supported", "value": "en", "domain": ".buff.163.com", "path": "/"},
    {"name": "game", "value": "csgo", "domain": ".buff.163.com", "path": "/"},
    {"name": "Device-Id", "value": "你的真实Device-Id值", "domain": ".buff.163.com", "path": "/"},
    # 补充浏览器中存在的其他登录相关Cookie
]

session = requests.session()
# 逐个添加带属性的Cookie
for cookie in full_cookies:
    session.cookies.set(**cookie)

3. 补充完整的请求头

模拟真实浏览器的请求头,避免被网站识别为爬虫:

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Referer": "https://buff.163.com/market/csgo",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1"
}

session.headers.update(headers)

4. 测试请求并验证结果

发送请求前先打印Session的Cookie,确认已正确添加;请求后检查响应内容是否包含登录状态标识:

url = "https://buff.163.com/goods/43011?from=market&tab=selling&tag_ids=447197&page_num=1&sort_by=paintwear.asc&paintseed=555"

# 发送前确认Cookie
print(session.cookies)

response = session.get(url)
print(response.status_code)

# 验证是否登录成功(比如检查页面是否包含用户信息,而非登录按钮)
if "登录" not in response.text:
    print("登录状态已成功复用")
else:
    print("未成功登录,请检查Cookie完整性和请求头")

关键注意事项

  • Cookie的domain必须设置为.buff.163.com(包含主域名和子域名),否则Requests不会在请求buff.163.com时发送该Cookie
  • 确保Cookie是当前有效的,有些网站的Session Cookie会定期过期,需重新从浏览器复制
  • 不要修改Cookie的原始值,任何篡改都会导致登录状态失效

内容的提问来源于stack exchange,提问作者Matthew Casey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:06:26