v0.5.4 — 一键签到:能领的领掉,领不了的说明原因
一张截图里的三个问题。
ZCode 为什么失败
claim 是官方客户端唯一还挂阿里云验证码的端点,而且服务端是强制的:不带令牌一律 400 {"code":3007,"msg":"captcha verify failed"},响应里没有可解的挑战。本插件不产出验证码,所以 ZCode 的一键签到不可能成功,重试没有意义。推理不受影响(实测无需验证码)。
顺带纠正:我此前写的「领取端点目前也不需要验证码」是从 skip_model_request: true 过度外推的——那个字段说的是模型请求。
而且失败原因根本没送到你眼前:HUB 的签到行只读顶层 message,而 ZCode 的响应没有这个字段,于是那句可执行的话躺在 outcomes[].message 里没人看,页面上只剩一个 failed。现在 ZCode 会发布摘要,措辞也直接说明「重试不会有不同结果」以及该去哪里领。
Raccoon 为什么不能一键
它真的没有每日签到(每日 300 由服务端自动发放,没有端点)。但一次性桌面端登录奖励是可以领的,而且你账上正躺着 3000 分没领——之前那句「请在插件页单独领取」等于让你绕路。
现在一键动作会领它,两道闸保证放在每天按的按钮后面是安全的:
- 先读奖励状态(由账单历史推导),已领过就报「已领取」,一次写请求都不发;
- 服务端
granted标志兜底:重复调用返回granted:false,映射为「已领取」而非第二次「领取成功」。
真实账号实测:276 → 3276(reward 桶 0 → 3000);再次运行报「已领取」,余额不变。
其它
- 该渠道的路由契约测试原本断言「不允许存在 /checkin」。现在断言的是相反的不变量:路由存在,且描述必须写明本渠道没有每日签到,以免下一个读者误解。
- 传了不存在的
auth_index时,原本回「没有可用账号」,会让拿着过期索引的人去找一个明明就在的凭据。现在会指出是哪个选择器没匹配上。
每一项新断言都通过破坏它所保护的行为做了反向验证:页面加载就写入、忽略已领取状态、丢掉顶层 message、让成功压过失败。