米游社签到失败:signIn 接口返回 -100「登录失效」,Cookie 缺少 stoken 字段
问题描述
scripts/mihoyo.py 在青龙中运行报「原神/星穹铁道/绝区零: 失败 - Cookie 失效」。经排查,Cookie 本身有效,真正原因是脚本对 signIn 接口的认证要求与现有 Cookie 不匹配。
排查过程
- Cookie 有效:
api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie 返回 retcode=0 OK,正常拉到原神账号(game_uid 可见),说明登录态完好。
- DS 盐值无误:脚本使用
t0qEgfub6cvueAPgR5m9aQWWVciEer7v(x6),与活跃项目 MihoyoBBSTools(Womsxd)的 get_ds2 所用盐值一致;尝试了 MihoyoBBSTools 中的全部 4 个盐值(含最新 47f15f1b66bee46b816115d8e8e6ebb6),均无法签到成功。
- 真正的差异在认证字段:对照 MihoyoBBSTools 源码,其签到(signIn)请求强制使用
stuid + stoken(v2 体系还需 mid)。而 MIHOYO_COOKIE 环境变量若只包含 cookie_token/cookie_token_v2/ltoken_v2/account_id_v2/ltuid_v2 等字段、缺少 stoken 时,signIn 接口会返回 -100 登录失效。
关键区分
| 接口类型 |
需要的凭据 |
现状 |
查角色/任务状态(getUserGameRolesByCookie 等) |
cookie_token 即可 |
✅ 有效 |
签到(apihub/app/api/signIn) |
stuid + stoken(v2 需 mid) |
❌ 缺 stoken |
这也解释了为何用「查看角色/任务接口」验证 Cookie 总是通过、但签到始终失败 —— 两类接口的认证要求不同。
根因
- 脚本未在文档中说明 signIn 需要 stoken 体系凭据(README 只写
MIHOYO_COOKIE 必填),用户按照其它签到脚本惯例抓取 cookie_token 六件套,导致签到必然失败,且报错信息「Cookie 失效」具有误导性(实际是缺少 stoken 而非凭据过期)。
建议
- 在脚本头注释与 README 中明确:
MIHOYO_COOKIE 须包含 stoken(v2 体系同时含 stuid/stuid_v2 与 mid),仅 cookie_token 不足以完成签到;
- 将
-100 的报错信息从「Cookie 失效」改为更准确的「缺少 stoken 或 Cookie 已失效」,并在日志中检测缺失字段给出指引;
- 可选:支持 login_ticket 自动兑换 stoken,降低用户抓包要求。
环境
- 青龙 2.20.2,容器内 Python 3.11,requests 正常
- 提供完整 Cookie(含 cookie_token/ltoken 六件套)即可复现
米游社签到失败:signIn 接口返回 -100「登录失效」,Cookie 缺少 stoken 字段
问题描述
scripts/mihoyo.py在青龙中运行报「原神/星穹铁道/绝区零: 失败 - Cookie 失效」。经排查,Cookie 本身有效,真正原因是脚本对 signIn 接口的认证要求与现有 Cookie 不匹配。排查过程
api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie返回retcode=0 OK,正常拉到原神账号(game_uid 可见),说明登录态完好。t0qEgfub6cvueAPgR5m9aQWWVciEer7v(x6),与活跃项目 MihoyoBBSTools(Womsxd)的get_ds2所用盐值一致;尝试了 MihoyoBBSTools 中的全部 4 个盐值(含最新47f15f1b66bee46b816115d8e8e6ebb6),均无法签到成功。stuid + stoken(v2 体系还需mid)。而MIHOYO_COOKIE环境变量若只包含cookie_token/cookie_token_v2/ltoken_v2/account_id_v2/ltuid_v2等字段、缺少stoken时,signIn 接口会返回-100 登录失效。关键区分
getUserGameRolesByCookie等)apihub/app/api/signIn)这也解释了为何用「查看角色/任务接口」验证 Cookie 总是通过、但签到始终失败 —— 两类接口的认证要求不同。
根因
MIHOYO_COOKIE 必填),用户按照其它签到脚本惯例抓取 cookie_token 六件套,导致签到必然失败,且报错信息「Cookie 失效」具有误导性(实际是缺少 stoken 而非凭据过期)。建议
MIHOYO_COOKIE须包含stoken(v2 体系同时含stuid/stuid_v2与mid),仅 cookie_token 不足以完成签到;-100的报错信息从「Cookie 失效」改为更准确的「缺少 stoken 或 Cookie 已失效」,并在日志中检测缺失字段给出指引;环境