首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
AI 工具与工作流
发新帖
0
0
[原创]深挖Claude Code 接入 Google Cloud Code 伪装 429 RESOURCE_EXHAUSTED竞品指纹过滤破案实录
发表于: 2026-9-29 22:20
199
[原创]深挖Claude Code 接入 Google Cloud Code 伪装 429 RESOURCE_EXHAUSTED竞品指纹过滤破案实录
yuyan98A
2026-9-29 22:20
199
# 【逆向排查】深挖云端黑盒:Claude Code 接入 Google Cloud Code 伪装 429 RESOURCE_EXHAUSTED 竞品指纹过滤破案实录 > **论坛建议板块**:『编程技术』 或 『AI安全』 > **文章标签**:`逆向分析`, `抓包排查`, `GoogleCloudCode`, `WAF规则`, `429误报`, `ClaudeCode` > **摘要**:在尝试将拥有重型 Agent 上下文(15 Skills、30 Tools、144 KB 载荷)的 Claude Code CLI 通过反代接入 Google Cloud Code 时,遭遇了首句即报 `400/429 RESOURCE_EXHAUSTED` 的诡异故障。本文记录了从怀疑“Token 超标/配额耗尽”,到通过压力基准测试与脱机单变量二分探针,层层抽丝剥茧,最终发现 Google 上游 WAF 针对竞品词汇 `"Anthropic"` 实施“假性 429 封杀”的真实机制,以及本地网关状态机自锁陷阱的排查过程。 > **系列说明**: > 本文是《Claude Code 接入 Google Antigravity 实战》的**【排查与破案篇】**。 > 关于反向代理网关的整体系统架构、Google OAuth2 凭证刷新、双向 JSON Schema / SSE 协议转换等完整实现细节,请参阅主篇: > **[《【技术分享】跨生态桥接:将 Claude Code 无缝接入 Google Antigravity/Cloud Code 订阅算力的反向代理架构实现》](./kanxue_post_1_proxy_architecture.md)**。 --- ## 0x01 故障现场:万事俱备,第一句话直接猝死 在完成本地协议转换网关(`antigravity-claude-proxy`)的搭建后,通过 CC Switch 配置好环境变量,终端启动 Claude Code CLI。 用户本地拥有高阶开发工程配置: * 挂载了 15 个 Skill、6 个 Subagent、30 个自定义 Tool * 复杂的 `CLAUDE.md` 与项目规范 * 首次通信的完整报文体积高达 **~144 KB(约 37,000+ tokens)** 在终端输入测试语句: ```text > 你好 ``` 等待十几秒后,屏幕弹出了致命红字: ```text ● API Error: 400 RESOURCE_EXHAUSTED: You have exhausted your capacity on gemini-3. Quota will reset after 30m0s. ``` 切换到 Claude 模型(如 `claude-sonnet-4-6`)同样抛出: ```text ● API Error: 400 RESOURCE_EXHAUSTED: You have exhausted your capacity on claude-sonnet-4-6. Quota will reset after 30m0s. ``` 最诡异的是:在此报错之后,哪怕在终端发送只有几个字的简短指令,代理网关也在 0ms 内秒拒报错。 --- ## 0x02 排除假象:Google 配额真的耗尽了吗? 面对 `RESOURCE_EXHAUSTED` 错误,最符合人类直觉的推断是: 1. **假设 1**:Google 账号的免费/订阅额度被刷空了。 2. **假设 2**:37,000 tokens 上下文过大,触发了 Google 上游的单次 Token 阈值限制。 ### 1. 验证真实剩余配额 编写脚本直接调用代理内置的 `/account-limits` 接口,拉取 Google 后端直接返回的配额数据: * `claude-sonnet-4-6` / `claude-opus-4-6-thinking`:**剩余配额高达 86.5%**! * `gemini-3.8-flash-high` / `gemini-2.5-pro`:**剩余配额高达 60.4%**! **铁证一**:用户的 Google 账号配额充裕,所谓的“Quota exhausted”是完全不符合事实的虚假报错! ### 2. 纯净压力测试:验证 Token 容量上限 为了验证是否是 Google 限制了“大体积请求”: * 编写脚本生成 1,000 ~ 30,000 单词(约 45,000 tokens / 180 KB)的纯英文文档作为上下文。 * 向上游 Google 发送测试。 * **结果**:**在 2.8 秒内成功返回 HTTP 200 OK!** * 进一步在纯净大上下文基础上挂上 30 个 Tool 的声明,耗时 4.2 秒依然返回 200 OK! **铁证二**:Google 基础设施完全支持 45,000+ tokens 的高并发大请求,**绝对不是报文体积或 Token 数量超限的问题**! --- ## 0x03 抽丝剥茧:单变量二分探针破案 既然“配额没空”,而且“45k tokens 纯文本能秒通”,为什么 Claude Code 带着 37k tokens 就必定暴毙? 唯一的解释:**Claude Code 的报文里夹带了“毒丸”!** ### 1. 抓取全量现场 在网关入站处挂载 Dump 钩子,把 Claude Code 首次发送的 144 KB 原始报文完整落盘。拆解出 4 个核心组成部分: * Headers(包含私有头 `x-anthropic-billing-header`) * System Prompt(包含 `You are a Claude agent, built on Anthropic's Claude Agent SDK...`) * Messages(包含 7 个 `<system-reminder>` 块) * Tools(包含 30 个工具的 JSON Schema) ### 2. 构造脱机单变量二分实验 编写独立的 `test_probe.mjs`,绕过复杂的终端 CLI,将报文的不同维度组合发送给 Google 上游(`daily-cloudcode-pa.googleapis.com`): | 实验组 | 报文组合 | 测试结果 | 关键推论 | | :--- | :--- | :--- | :--- | | **Candidate A** | Claude System 提示词 + 简短 User 问题 | **Status 429 RESOURCE_EXHAUSTED** | **真凶必定潜伏在 System Prompt 中!** | | **Candidate B** | Claude Messages(含 7 个上下文提醒)+ 简短 System | **Status 200 OK** | 证实 Messages 内部的所有上下文均合法。 | | **Candidate C** | Claude System 提示词(中和清洗 `Anthropic`/`Claude`) | **Status 200 OK** | 证实整段 System 只要清洗即可瞬间放行! | | **Candidate D** | 等长(15,000 字符)假 System 规则 | **Status 200 OK** | 排除 System 长度限制。 | ### 3. 单字命中定位 对 Candidate C 进行细粒度的单变量还原: * **实验 1**:仅把 `Anthropic` 替换为中立词 `AssistantCorp`,保留 `Claude`、保留所有其他规则 $\rightarrow$ **Status 200 OK**! * **实验 2**:仅替换 `Claude` 为 `Assistant`,但保留 `Anthropic` $\rightarrow$ **Status 429 RESOURCE_EXHAUSTED**! * **实验 3**:移除第一段 Billing Header,保留其余所有文本 $\rightarrow$ **Status 429 RESOURCE_EXHAUSTED**(因为后面有 `built on Anthropic's Claude Agent SDK`)。 --- ## 0x04 真相大白:Google 的“竞品防爬拦截机制” ### 1. 拦截真相(Opaque 429) 现代云厂商为了防止竞品商业 Agent 或倒卖算力的黑产通过个人优惠订阅借壳白嫖算力,在后端 WAF 设置了针对竞品指纹的语义审查规则: * Google Cloud Code PA 在解析 `systemInstruction` 时,内置了第三方品牌黑名单。 * 只要检测到关键词 **`"Anthropic"`**,上游系统为了避免直接返回 `403 Forbidden` 引发公关争议,狡猾地伪装抛出 **`429 RESOURCE_EXHAUSTED (Resource has been exhausted)`**,误导开发者以为是自己调用频次超标。 ### 2. 网关本地状态机的自锁陷阱 为什么一次 429 会导致后续的小请求也永久暴毙? 这是代理网关本身的防御性设计漏洞: * 在 `antigravity-claude-proxy` 的代码中,一旦收到上游的 429,立即轻信为“账号配额耗尽”,并将 `isRateLimited: true` 及 30 分钟的冷却时间持久化写入磁盘配置 `accounts.json`。 * 随后的所有请求在到达网关时,中间件直接查表拦截并在本地抛出 HTTP 400,根本不再向上游发起任何网络通信! --- ## 0x05 最终修复方案 ### 1. 代理网关自动脱敏补丁 修改 `src/cloudcode/request-builder.js`,在 System Instruction 发往 Google 之前,将其自动进行竞品中和: ```javascript const DEFAULT_IDENTITY_SCRUB = [ ['Nous Research', 'the assistant team'], ['Hermes Agent', 'the assistant'], ['Hermes', 'the assistant'], ['Anthropic', 'AssistantCorp'], ['anthropic', 'assistantcorp'], ['ANTHROPIC', 'ASSISTANTCORP'] ]; function scrubClientIdentity(text) { if (typeof text !== 'string') return text; let out = text; for (const [term, replacement] of IDENTITY_SCRUB_RULES) { out = out.split(term).join(replacement); } out = out.replace(/Anthropic/gi, 'AssistantCorp'); return out; } ``` ### 2. 解除本地死锁 重置 `~/.config/antigravity-proxy/accounts.json` 中的 `isRateLimited: false`,并平滑重启代理。 ### 3. 实测验证结果 在**完全保留用户全部 15 个 Skill、6 个 Subagent、30 个 Tool(37,000+ tokens)**的前提下,终端实际调用结果: | 模型 | 调用指令 | 响应延迟 | 验证结果 | | :--- | :--- | :--- | :--- | | **`claude-sonnet-4-6`** | `claude -p "请用一个字回答:好还是不好"` | **3.3 秒** | **成功(返回:“好”)** | | **`claude-opus-4-6-thinking`** | `claude -p "请用5个字以内打招呼"` | **12 秒** | **成功(返回:“你好,有何吩咐?”)** | | **`gemini-3.8-flash-high`** | `claude -p "请用5个字以内打招呼"` | **35 秒** | **成功(返回:“你好!”)** | --- ## 0x06 逆向与排查总结 1. **不要盲信云厂商 4xx/429 报错的字面描述**:在大模型对抗时代,`429 Too Many Requests` 和 `400 Resource Exhausted` 经常被用来伪装“策略拦截与黑名单封杀”。 2. **警惕“容量陷阱”(相关性 $\neq$ 因果性)**:大载荷报错时,人们本能地去删减内容做负荷优化。必须先做同等体量的“纯净 Dummy 载荷基准测试”,避免南辕北辙。 3. **独立脱机探针是终极武器**:脱离复杂的客户端 UI,用 30 行 Node.js 脚本单变量复现,排查效率是终端反复试错的 20 倍以上。 --- ## 0x07 系列导航与架构主篇 * **本系列反向代理架构主篇**: [《【技术分享】跨生态桥接:将 Claude Code 无缝接入 Google Antigravity/Cloud Code 订阅算力的反向代理架构实现》](./kanxue_post_1_proxy_architecture.md) *深入解析反向代理系统的全套设计:Google OAuth 2.0 PKCE 自动续期、内部托管项目绑定、双向 JSON Schema / SSE 协议状态机转换、官方防伪请求头及首包缓冲防挂死策略。*
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
收藏
・
0
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
2
)
mb_elqwyvnm
雪 币:
2755
活跃值:
(3490)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
170
粉丝
0
关注
私信
mb_elqwyvnm
2
楼
666
2026-9-29 22:50
0
財財
雪 币:
2674
活跃值:
(2065)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
5
粉丝
0
关注
私信
財財
3
楼
感谢你分享这么好的资源!
2026-10-1 18:41
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
yuyan98A
2
发帖
2
回帖
10
RANK
关注
私信
他的文章
[原创]深挖Claude Code 接入 Google Cloud Code 伪装 429 RESOURCE_EXHAUSTED竞品指纹过滤破案实录
198
[原创]【技术分享】跨生态桥接:将 Claude Code 无缝接入 Google Antigravity订阅算力的反向代理架构实现
311
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部