Skip to content

fix(mihoyo): 米游社签到返回 -100 登录失效——Cookie 缺少 stoken 字段(signIn 接口强依赖) #4

Description

@jinyehyy

米游社签到失败:signIn 接口返回 -100「登录失效」,Cookie 缺少 stoken 字段

问题描述

scripts/mihoyo.py 在青龙中运行报「原神/星穹铁道/绝区零: 失败 - Cookie 失效」。经排查,Cookie 本身有效,真正原因是脚本对 signIn 接口的认证要求与现有 Cookie 不匹配。

排查过程

  1. Cookie 有效api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie 返回 retcode=0 OK,正常拉到原神账号(game_uid 可见),说明登录态完好。
  2. DS 盐值无误:脚本使用 t0qEgfub6cvueAPgR5m9aQWWVciEer7v(x6),与活跃项目 MihoyoBBSTools(Womsxd)的 get_ds2 所用盐值一致;尝试了 MihoyoBBSTools 中的全部 4 个盐值(含最新 47f15f1b66bee46b816115d8e8e6ebb6),均无法签到成功。
  3. 真正的差异在认证字段:对照 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 而非凭据过期)。

建议

  1. 在脚本头注释与 README 中明确:MIHOYO_COOKIE 须包含 stoken(v2 体系同时含 stuid/stuid_v2mid),仅 cookie_token 不足以完成签到;
  2. -100 的报错信息从「Cookie 失效」改为更准确的「缺少 stoken 或 Cookie 已失效」,并在日志中检测缺失字段给出指引;
  3. 可选:支持 login_ticket 自动兑换 stoken,降低用户抓包要求。

环境

  • 青龙 2.20.2,容器内 Python 3.11,requests 正常
  • 提供完整 Cookie(含 cookie_token/ltoken 六件套)即可复现

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions