Skip to content

v0.5.4 — 一键签到:能领的领掉,领不了的说明原因

Choose a tag to compare

@collegeming collegeming released this 01 Oct 02:08
· 10 commits to main since this release

一张截图里的三个问题。

ZCode 为什么失败

claim 是官方客户端唯一还挂阿里云验证码的端点,而且服务端是强制的:不带令牌一律 400 {"code":3007,"msg":"captcha verify failed"},响应里没有可解的挑战。本插件不产出验证码,所以 ZCode 的一键签到不可能成功,重试没有意义。推理不受影响(实测无需验证码)。

顺带纠正:我此前写的「领取端点目前也不需要验证码」是从 skip_model_request: true 过度外推的——那个字段说的是模型请求。

而且失败原因根本没送到你眼前:HUB 的签到行只读顶层 message,而 ZCode 的响应没有这个字段,于是那句可执行的话躺在 outcomes[].message 里没人看,页面上只剩一个 failed。现在 ZCode 会发布摘要,措辞也直接说明「重试不会有不同结果」以及该去哪里领。

Raccoon 为什么不能一键

它真的没有每日签到(每日 300 由服务端自动发放,没有端点)。但一次性桌面端登录奖励是可以领的,而且你账上正躺着 3000 分没领——之前那句「请在插件页单独领取」等于让你绕路。

现在一键动作会领它,两道闸保证放在每天按的按钮后面是安全的:

  1. 先读奖励状态(由账单历史推导),已领过就报「已领取」,一次写请求都不发;
  2. 服务端 granted 标志兜底:重复调用返回 granted:false,映射为「已领取」而非第二次「领取成功」。

真实账号实测:276 → 3276(reward 桶 0 → 3000);再次运行报「已领取」,余额不变。

其它

  • 该渠道的路由契约测试原本断言「不允许存在 /checkin」。现在断言的是相反的不变量:路由存在,且描述必须写明本渠道没有每日签到,以免下一个读者误解。
  • 传了不存在的 auth_index 时,原本回「没有可用账号」,会让拿着过期索引的人去找一个明明就在的凭据。现在会指出是哪个选择器没匹配上。

每一项新断言都通过破坏它所保护的行为做了反向验证:页面加载就写入、忽略已领取状态、丢掉顶层 message、让成功压过失败。