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

Python Requests Session认证未传递至后续请求 新手求助

问题:Google Play登录后短Token验证失败,返回Invalid token

我正在尝试从一款手机游戏接口拉取数据,用来给Discord Bot做更新推送。未绑定账号的公开数据能正常获取,但走Google Play登录流程时,用长ID Token调用认证接口已经成功拿到短Token,但用这个短Token发起后续GET请求时,一直收到{"detail":"Invalid token."}错误。用HTTPS抓包工具看了,两次请求之间没有额外步骤,怀疑是认证信息没正确传递到第二个请求,求指导。

代码示例

session=requests.Session()

URL0 = "https://URL/auth-login-google/"
headers0={
    'accept':'application/json',
    'accept-encoding':'gzip',
    'content-length':'1137',
    'content-type':'application/json; charset=utf-8',
    'host':'api.lost-vault.com',
    'user-agent':'Dart/3.0 (dart:io)'
}
body0={
  "id_token": "LONG_ID_TOKEN",  
  "platform": "android"
}

post0=session.post(URL0, headers=headers0, json=body0)


URL = "https://URL"
headers={
    'accept':'application/json',
    'accept-encoding':'gzip',
    'authorization':'Token SHORT_TOKEN',
    'host':'api.lost-vault.com',
    'user-agent':'Dart/3.0 (dart:io)'
}

r=session.get(URL, headers=headers)

抓包截图

  • POST请求:
    POST REQUEST

  • 响应体:
    POST RESPONSE BODY

  • GET请求:
    GET REQUEST

排查方向

  • 动态提取短Token,避免手动硬编码:不要手动填写SHORT_TOKEN,直接从POST响应中提取,比如:
    auth_response = post0.json()
    short_token = auth_response.get('token')  # 根据响应体实际结构调整key,比如可能是'auth_token'
    
    再将其拼到Authorization头:f'Token {short_token}',避免手动复制时出现字符遗漏或错误。
  • 核对Authorization头格式:对比抓包的GET请求中实际发送的Authorization头,确认是Token <token>还是Bearer <token>,有些接口对格式要求严格,格式错误会直接判定Token无效。
  • 移除不必要的请求头:手动设置content-length和host可能导致请求异常,requests会自动处理这些字段,删除headers0中的content-length、host,以及headers中的host。
  • 检查会话Cookie的传递:部分接口除了Token外,还依赖会话Cookie维持认证。查看POST响应的Set-Cookie字段,确认GET请求是否带上了对应的Cookie。如果需要,不要覆盖全部headers,仅添加Authorization,让session自动管理Cookie。
  • 验证Token有效性:检查短Token的过期时间,或调用接口的Token验证端点(如果存在),确认Token本身是否有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:14:56