Claude Code 源码泄露分析,为什么你的账号总被封?
Claude Code 源码泄露分析:5 个”内奸”出卖了你,4 个方案自救
不是用的太猛,是软件本身就在”卖”你

写在前面:为什么你的账号总被封?
用 Claude Code 有一段时间的朋友,可能都遇到过同一个问题:账号莫名其妙被封了。
去网上搜过相关讨论的朋友应该知道,关于 Claude 封号的帖子不少,但几乎没有一篇能说清楚——到底是什么操作触发了风控?
换 IP?换账号?还是用的太频繁?
就在昨天,Claude Code 源码意外泄露。我第一时间把代码 clone 下来,本来只是想分析有哪些值得借鉴的设计,却意外发现了 CLI 到底是怎么”出卖”用户的。
今天这篇文章,我把源码里挖出来的东西原原本本告诉你。没有猜测,全是代码证据。
先上结论:三件事
分析完源码之后,我发现了三件事:
-
第一,Anthropic 没有写任何针对地域封锁的代码,封号完全是算法行为。
-
第二,CLI 版本的设计天然比 Web 版暴露了多得多的风控信号。 不是因为你用的猛,而是软件本身就在”卖”。
-
第三,我在代码中找到了五个具体的”内奸”,并在文末总结了四个可以执行的自救方案。
好,现在我们从第一个”内奸”开始讲。
(1)Device ID(设备标识)
位置:src/services/api/cloud.ts 第 519-528 行
每一次你用 Claude Code 发起请求,请求体中都会带一个字段叫 user_id,它所携带的值就是 Device ID——本质是一个由本地生成并永久存储的 UUID。
问题在哪?
只要你不手动删除本地配置文件,这个 ID 永远不会变。你换了 10 个 VPN 节点,IP 变了,但这个 ID 还是同一个。
从服务端的视角来看,他会看到同一台设备在十分钟内从日本、美国、新加坡各发了一次请求——这是最典型的异常流量特征。
而且这个字段没有任何开关,它是 API 协议的一部分,你关不掉。
(2)数字指纹(System Prompt 注入)
位置:src/constants/system.ts 第 59-94 行
这个”内奸”更加隐蔽。Anthropic 会把一个名为 x-anthropic-billing-header 的内容注入到每条对话的 System Prompt 里。
这个 header 包含了:
-
CLI 版本号
-
入口类型
-
CCH 字段
听起来像是 HTTP 请求头?不是。 它被直接写在了 Prompt 文本里面。
这意味着即使你用代理中间人全程拦截流量,这段指纹也会原封不动地传到服务端。
每一条消息都在明明白白地告诉 Anthropic:我是 CLI 用户。
(3)X-CLI-User-Agent(HTTP 请求头)
位置:src/services/api/client.ts 第 105-116 行
这个”内奸”相对直接一点。在 HTTP 请求头里有一行 X-CLI-User-Agent。
有人会说:这有什么大不了的?外部用户也有 User-Agent 啊。
区别在于: 外部用户混在浏览器流量里,单独识别成本极高。但 CLI 用户主动给自己贴了标签,主动站出来说”我是特殊群体”。
服务端完全可以对这个标签单独开启更严格的风控策略。
(4)遥测系统(最勤快的那个)
位置: 源码多处
第四个”内奸”是最勤快的一个——遥测系统。
源码里写得很清楚:默认每 5 秒触发一次遥测上报。
上报什么?几乎你能想到的所有东西:
-
操作系统
-
Node 版本
-
终端类型
-
CPU/内存使用率
-
你的 Account UUID
-
你的邮箱地址
-
你的 Subscription Type 等等
我算了一下,一个 30 分钟的编码 Session 会产生 360 次遥测请求,每一次都带着你当前的真实 IP。
好消息是:这个可以关掉。 我等一下在自救方案里告诉你怎么做。
(5)重试机制(越不稳定越容易封)
位置: 源码重试逻辑部分
第五个是 Claude Code 的重试机制。
当你的 VPN 出现偶发性断线或抖动时,Claude Code 会自动发起重试,多的时候可以重试十次。
从服务端看到的是什么?
同一个 Device ID 在极短时间内从不同的 IP 地址发起了大量请求——这是最经典的”账号被异常工具控制”的特征。
所以越是用不稳定的代理,触发封号的概率反而越高。
CLI vs Web:对比结果
我也对比了 CLI 与 Web 版本的使用场景,对比结果如下:

结论:不是 Anthropic 在针对 CLI 用户,而是 CLI 的软件设计天然提供了太多稳定的风控信号,让算法更容易做出判断。
自救方案:四个优先级
好了,现在进入最重要的部分——怎么自救?
我给出四个方案,从最推荐到备选,按优先级排列。
方案一
切换到云服务商(最彻底)⭐⭐⭐⭐⭐
直接切换到 Amazon Bedrock、Google Vertex AI 或者 Azure Foundry 来跑 Claude 模型。
这个方案最彻底的原因是:你的请求不再发往 api.anthropic.com,而是发往 AWS 或者 GCP 的服务器。
优势:
-
Anthropic 完全看不到你的真实 IP
-
遥测系统会自动关闭
-
Device ID 的关联风险大幅降低
缺点:
-
需要你有对应的云账号
-
有一定的配置成本
适合: 有条件的朋友
方案二
关闭遥测机制 ⭐⭐⭐⭐
如果暂时上不了方案一,可以先使用方案二。
关闭遥测命令:
# 方法 1:通过配置文件echo '{"telemetry": false}' >> ~/.claude/settings.json# 方法 2:通过环境变量export CLAUDE_TELEMETRY_DISABLED=1# 方法 3:启动时禁用claude --no-telemetry
效果: 30 分钟的 Session 从 360 次遥测请求降到 0 次。
方案三
用 API Key 代替账号登录 ⭐⭐⭐
个人觉得方案二搭配方案三来用效果最好。
用账号登录的方式会持续调用 /api/profile 接口,把 IP 和你的账号强绑定。
换成 API Key 之后,account_uid 字段变成空字符串,IP 和账号的关联风险大幅降低。
配置方法:
# 编辑配置文件vim ~/.claude/config.json# 添加 API Key{"auth_type": "api_key","api_key": "your-api-key-here"}
方案四
基础保障(必须做到)⭐⭐⭐⭐
不管用哪个方案,这一条都要做到:
用稳定的住宅 IP,不要用共享代理或不稳定的机场节点。
原则:
-
一个 IP 对应一个账号
-
绝对不要多账号共用同一个 IP
-
避免频繁切换节点
总结:四个字,没有黑幕
挖完这次的源码,我最大的感受是四个字:没有黑幕。
API 没有针对任何人,封号的逻辑是纯算法的。只是 Claude Code CLI 的设计让风控信号异常丰富,光靠换 IP 和换账号根本解决不了封号问题。
核心问题:
-
Device ID 永久不变
-
System Prompt 注入指纹
-
特殊的 User-Agent 标识
-
高频遥测上报
-
自动重试机制
解决思路:
-
最彻底:走云服务商(AWS/GCP/Azure)
-
最实用:关遥测 + API Key + 稳定 IP
如果这期内容对你有帮助,点个赞,收藏一下,免得哪天账号又封了找不到这篇自救指南。
🎯 往期推荐👇
AI 感兴趣的小伙伴,可以加我微信(LHYYH0001)交流哦~
本号主页对话框联系我~

-
工信部 · AIGC证书 https://www.yuque.com/lhyyh/ai/ins6gx3o7hck7shb -
AI 工具集导航: https://tools.lhagi.com/ -
AI 大模型全栈 80 万字知识库: 本公众号对话框零门槛领取 3 年打磨,全是精华,从普通职场人士到大模型算法,应有尽有!

📌创作不易,觉得有用请收藏🩷推荐⭐️分享
夜雨聆风