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请求:

响应体:

GET请求:

排查方向
- 动态提取短Token,避免手动硬编码:不要手动填写
SHORT_TOKEN,直接从POST响应中提取,比如:
再将其拼到Authorization头:auth_response = post0.json() short_token = auth_response.get('token') # 根据响应体实际结构调整key,比如可能是'auth_token'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
相关产品推荐
相关产品推荐

