
sub2api 半分钟里把三张补丁并进 main——Cloudflare 1010 误判封号、Gemini 工具 schema 400、DeepSeek 图片双写——三张都没发版,另附 CLIProxyAPI 两处还没人修的鉴权与冷却口子。
| 单号 | 并入 main(北京) | 规模 | 修的是什么 |
|---|---|---|---|
| #8224 | 20:08:52 | 2 文件 +25/−19 | DeepSeek Responses 把同一张图写了两份 |
| #8188 | 20:09:06 | 2 文件 +298/−4 | Gemini 工具参数里的 const 与 examples 没被清掉 |
| #8255 | 20:09:19 | 2 文件 +128/−15 | Cloudflare 1010 被当成账号级 403 去处罚 |
7da09cab(一笔赞助名单提交),之后再没别的动作。三条报障单(#8222 / #8187 / #8248)都已关成 completed。Python-urllib/3.x 拿到 403 error code: 1010,换成 curl、requests、node 都能过。说明请求根本没走到账号那一层。handle403 先按平台分流:Antigravity 单独一支;只有 OpenAI 平台与多协议 Key 才进 handleOpenAI403,而 1010 的豁免就写在那个函数里;Anthropic 与 Gemini 落到函数最后一句 handleAuthError,一次就 SetError。
handle403:第 1031 行只把 OpenAI 与多协议 Key 送进 handleOpenAI403,第 1041 行是 Anthropic、Gemini 落到的那句 handleAuthError。handle403 第一句,跨全部平台,并打一条 403_cloudflare_bot_block_skips_account_penalty(旧键是 openai_ 前缀那条,升级后按新名字 grep)。判定也换了:
aa48a8bbd8 里的判定函数:先解 JSON,认 cloudflare_error 配 1010 或 browser_signature_banned,解不出才退回纯文本。{"message":"error code: 1010"} 与不带 cloudflare_error 的 {"error":{"code":1010}} 都判 false,真实封号仍按原样处罚,还专门加了「Anthropic 真 403 照样罚」的用例。1010 与 browser_signature_banned。命中的账号需要手动从 error 改回来,而根治是在 sub2api 前面把下游 UA 归一化——user-agent 在转发白名单里(第 79 与 98 行),客户端写什么上游就收到什么。OpenAI 平台账号还能在凭证里写 user_agent 钉住,Anthropic 账号没有这个字段。Unknown name "const" at 'tools[0].function_declarations[65].parameters.properties[3]…' 和 Unknown name "examples"。两个 Google AI Studio 的 Key 都能复现。cleanToolSchema 删掉 $defs、deprecated、additionalProperties 这些,名单里没有 const 与 examples。examples,同名业务字段保留;字符串 const 转成单值 enum,并与原 enum 求交集;非字符串常量直接去掉、保留原 type,作者自己写明这是有损降级。递归覆盖 properties、items、anyOf/allOf/oneOf、prefixItems、dependencies。
cleanToolSchema 删除名单:第 3777–3781 行逐个数过去,没有 const,也没有 examples。image_url 与 url,请求体近乎翻倍,入站 24 MiB 就撞上 48 MiB 上限。url、只写 image_url。测试断言 url 不再存在,理由写过——只发 url 会回 input_image must have image_url or file_id。GET /v1/responses 升级成 WebSocket 时只过一次鉴权,之后每一条 response.create 都不再问 access manager。被撤销、或额度用完的 key,在已经打开的 socket 上继续执行。Codex 客户端一条 socket 常挂几个小时。
Authenticate 只在第 204 行被调一次,属于每个 HTTP 请求过一次的那层。NextRetryAfter 清零、状态回到 active——冷却白等,凭证提前放行,然后在真实 429 上再被扣一次。#6643 那个水位 cooldownRecordedSeq 也被抹成 0。model 自然取不到。80aa2b1d,窗口内没再动)、sub2api v0.2.17、codex-proxy 预发布 v2.1.20-beta.0543eaa、codex2api v3.1.1。1010 与 browser_signature_banned;命中的先改 UA 再恢复账号,否则恢复完还会再红一次。This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.