Skip to content

v0.6.1 — ZCode 人工验证通道(已实现,当前不可用)+ 模型数补齐

Choose a tag to compare

@collegeming collegeming released this 01 Oct 02:54
· 7 commits to main since this release

ZCode 验证码:人工验证通道做出来了,但渲染不出来

领取端点的验证码是 ZCode 每日额度唯一的拦路石。要试它的三块拼图其实都是公开的:

  • 参数由服务端公布,不在闭源客户端里:GET /api/v1/client/configs?platform=unknown → {"enabled":true,"prefix":"no8xfe","region":"cn","sceneId":"11xygtvd"}
  • 请求头契约在你本机已装的客户端里(~/.zcode/server/zcode-server.cjs):X-Aliyun-Captcha-Verify-Param + 可选 X-Aliyun-Captcha-Verify-Region
  • 阿里云前端 SDK 是公开脚本,正是吃这三个值

所以插件现在会:读取配置;遇到 3007 且没有令牌时渲染官方验证码组件;通过查询串收回令牌(资源路由只派发 GET)并带着两个头重试——请求头按字面名做了单元测试。

但它不工作,页面也如实这么说。 实测(面板来源):SDK 加载成功、initAliyunCaptcha 执行无异常、getInstance 回调触发、控制台干净——而元素在 embed/popup、传选择器/传元素等各种组合下始终为空。最可能的原因是验证码场景未授权本页面来源(阿里云侧配置,属 ZCode 所有)。转不完的圈比原来那句话更糟,所以组件 6 秒后主动放弃、点名回退方案并隐藏提交按钮。

写这条降级断言时查出一个真实注入:场景参数来自服务端文档,而 strconv.Quote 不足以让一个值安全地嵌进 <script>——HTML 解析器在字符串中间遇到 </script 照样结束元素。jsStringLiteral 现在转义 <、>、& 与 JS 行分隔符,并有测试拿恶意 scene id 打它。

模型数补齐

codearts / lobsterai / trae 三个渠道此前不发布 model_count,HUB 那行因此没有「模型 N」。现在:codearts 8、lobsterai 30、trae 28(cline 本来就有)。

注意这些数字是插件自己的目录,在宿主 oauth-excluded-models 过滤之前——lobsterai 报 30 而 /v1/models 只列 7,是排除清单在起作用,不是 bug。

每一项断言都做了反向验证:删掉验证码头、永不渲染组件、发送空的 region 头(缺失与空值是不同的请求)、去掉脚本上下文转义。