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

使用Python Requests获取网站Cookie中Token遇到问题求助

解决方案:获取登录后的Token并用于后续请求

问题根源分析

  • 部分网站的Token并非在登录请求直接返回,而是需要登录后访问特定页面(比如用户首页、个人中心)才会通过Set-Cookie返回;若你仅发送了登录请求,未触发后续生成Token的步骤,自然拿不到目标Token。
  • 若未使用requests.Session()维护会话,普通请求的Cookie不会自动持久化,后续请求无法继承登录后的Cookie状态,也会导致Token丢失。

具体解决步骤

1. 用Session对象完整复刻浏览器流程

requests.Session()会自动保存所有响应的Cookie,需用同一个Session实例完成登录、触发Token生成、后续请求的全流程:

import requests

# 创建会话对象,自动维护Cookie
session = requests.Session()

# 1. 发送登录请求(替换为实际登录接口和参数)
login_payload = {
    'username': '你的用户名',
    'password': '你的密码'
}
session.post('https://目标网站域名/login', data=login_payload)

# 2. 访问Chrome中看到Token的那个页面(比如用户首页),触发服务器返回Token
session.get('https://目标网站域名/user-dashboard')

# 查看会话中所有Cookie,此时应该包含目标Token
print(session.cookies.get_dict())

2. 提取Token并用于后续请求

若需手动将Token填入请求头的Cookie字段,可从Session的Cookie中提取后构造请求头:

# 从会话Cookie中取出目标Token(替换为Chrome中看到的Token名称)
target_token = session.cookies.get('Token的Cookie键名')
session_id = session.cookies.get('eZSESSID')

# 构造包含Token的请求头
custom_headers = {
    'Cookie': f'eZSESSID={session_id}; Token的Cookie键名={target_token}'
}

# 发送后续请求
response = session.get('https://目标网站域名/需要Token的接口', headers=custom_headers)

3. 关于eZSESSID生成Token?

不可能直接通过eZSESSID生成Token。Token通常是服务器端结合会话ID、用户身份信息、加密密钥生成的,客户端没有足够的密钥和逻辑逆向生成,必须通过服务器触发的流程获取。

额外排查点

  • 复刻浏览器请求头:检查Chrome中登录和后续请求的User-Agent、Referer等字段,在代码中添加这些请求头,部分网站会校验这些字段,缺失则不返回Token。
  • 确认登录成功:打印登录响应的内容,验证是否真的登录成功,若登录失败,服务器不会生成Token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:39:57