Claude Code 被曝暗藏 147 个域名,我在本机复核了

哈喽,我是飞飞。
昨天一条关于 Claude Code 的爆料在开发者圈里炸开了。有人从客户端里翻出一套标记逻辑,里面有中国时区、147 个域名、11 个 AI 实验室关键词,还有一段 base64 加 XOR 91 的混淆代码。
我没有急着转那句最吓人的“Anthropic 在监控中国用户”。我先拆了自己电脑上的 Claude Code 2.1.197。代码确实在,数字也对得上。但目前能证明的是客户端会给部分代理请求加隐藏标记,证明不了“监控所有中国用户”,更证明不了远程执行。
这事依然让我不舒服。原因很简单:我每个月给 Anthropic 交的钱不算少,十几个写作 skill 也长在 Claude Code 上。一个能读仓库、跑 Shell、推代码的客户端,最贵的资产其实是用户愿意把钥匙交给它。
代码做了什么
首发分析来自开发者 Thereallo。他检查 Claude Code 2.1.196 时,注意到系统提示词里有一句看起来很普通的话:
1 | Today's date is 2026-06-30. |
客户端会在特定条件下改两个地方。日期里的短横线会变成斜杠,Today's 中间的 ASCII 撇号也会换成三个长得很像的 Unicode 字符之一。
肉眼看,四种句子几乎一样。程序看,它们是四个不同字符。再加上日期分隔符的两种状态,刚好能表达三个二元信号:是否处在中国时区、域名是否命中列表、域名里是否带实验室关键词。
域名列表没有明文躺在代码里。客户端先做 base64 解码,再让每个字节和 91 做 XOR,按逗号切开。结果是 147 个域名。另一个列表有 11 个关键词,包括 deepseek、moonshot、minimax、zhipu、baichuan 和 volces。
这就是大家口中的“隐写”。普通日期句子成了载体,分类信息藏在几个很难察觉的字符里。
我本机看到了什么
说实话,这一步比转述爆料重要得多。
我现在用的版本是 2.1.197,机器时区正好是 Asia/Shanghai。我直接从本机 Anthropic 签名的二进制里提取相关代码,能看到 ANTHROPIC_BASE_URL、Asia/Shanghai、Asia/Urumqi,也能看到改撇号和日期格式的函数。
我又把两段字符串按代码原样解码。前一段确实得到 147 项,后一段得到 11 项。域名里既有百度、阿里、美团、字节、小红书等公司网络,也有一批 Claude 中转、模型路由和 API 镜像站。
我特意没有复制首发文章里的结果。脚本直接读取我电脑上的可执行文件,先定位密钥和两段编码字符串,再按二进制里的函数逐字节还原。终端打印出 domains 147 和 keywords 11 时,我盯着屏幕停了几秒。这意味着争议里的核心数字,至少能从我正在使用的正式版本里重新算出来。
这份列表的组成也很微妙。它没有只收那些名字直白的转售站,还混进了中国科技公司的内部域名、云服务区域域名和 AI 实验室名称。单看列表,无法知道每一项为什么被放进去。可一旦命中,普通日期句子就会换一个字符。这种“看起来什么都没发生”的设计,正是我最难接受的部分。
所以,核心机制不是一张来路不明的截图。至少在我电脑上的 2.1.197 里,它可以被独立复现。
另一位分析者 Adnane Khan 还交叉检查了 2.1.193 与 2.1.196,得到相同结论。截至我写稿时,我没有找到 Anthropic 对这段具体实现的公开解释。
哪些说法过头了
最容易被标题吃掉的细节是:这段逻辑有一道代理开关。
没有设置 ANTHROPIC_BASE_URL,或者它指向官方的 api.anthropic.com,客户端会提前返回。中国时区本身不会让默认直连请求被标记。它主要盯的是自定义 base URL,也就是企业网关、模型路由、本地代理和转售中转这类环境。
它也没有另开一条网络通道。标记被塞进本来就要发送的系统上下文里,随模型请求走向你配置的服务端。客户端代码能证明“标记存在”,却无法证明 Anthropic 后端一定读取了它,更说不清后端拿它做了什么。
至于“它既然能读 Shell,下一步就能远程控制电脑”,这还是推演。当前这段代码没有给出远程执行证据。
把边界说清,不等于替 Anthropic 洗地。恰恰相反,删掉夸张部分之后,剩下的问题才更难绕开。
风控为何让人不安
我能理解它可能想干什么。
Anthropic 的隐私说明写得很直白:公司会用 IP 和其他信号估算国家或地区,用来执行服务条款和防止滥用。Claude Code 的官方数据文档也写明,客户端支持 VPN 与 LLM 代理,用户提示词和系统上下文会通过网络发送。
如果有人拿中转站批量转售 Claude,或者用模型路由做大规模蒸馏,供应商当然会做风控。你花几十亿美元训练模型,不会坐在门口看别人搬服务器。
可风控目的合理,不代表实现方式就可以躲起来。
它完全可以用一个写进文档的字段,明确告诉企业网关管理员“这里会上报路由类别”。现在的做法偏偏把三个分类位塞进日期和撇号,域名列表再套一层 XOR。真实滥用者换个域名、时区或客户端补丁就能绕过,正常使用内部网关的人反而更容易留下标记。
官方文档里其实有一个很好的对照。Claude Code 的 WebFetch 会把待访问的主机名发给 Anthropic 做安全检查。文档明确写了发送什么、缓存五分钟,还给出关闭配置。用户未必喜欢这项检查,但至少能看见规则。日期标记缺的就是这份明牌。
说白了,这是一笔很差的信任交易。风控拿到的信号很脆,用户付出的疑虑却很实。
重度用户先查什么
如果你和我一样重度依赖 Claude Code,先别急着删工具。打开终端,查清自己的请求到底往哪走:
1 | printf '%s\n' "$ANTHROPIC_BASE_URL" |
变量为空,或者你走官方端点,这段代理标记逻辑通常不会触发。你若用了公司内部网关、OpenRouter 类模型路由或外部中转,就该继续问三件事:网关域名是否命中列表,组织是否知道客户端会编码这些信号,供应商能否给出正式的数据用途说明。
企业环境还可以抓一份自己有权查看的出站请求,比较系统提示词里的原始字符。别只盯屏幕,Unicode 撇号看起来太像,应该看 code point 或原始 JSON。
这里还要分清两种代理。HTTPS_PROXY 常用来让网络流量经过公司代理,ANTHROPIC_BASE_URL 则会改模型 API 的目标地址。这次代码盯的是后者。别因为电脑开着 VPN 就认定自己一定被标记,也别把所有企业代理都混成外部中转。先看环境变量,再谈风险,能少掉一半没必要的恐慌。
我不会提供绕过风控的改包教程。那会把一个透明度问题带偏成猫鼠游戏。对正常用户更有用的动作,是保留版本号和请求样本,要求 Anthropic 解释这三个标记由谁读取、保存多久、会触发什么处理。
我等一个解释
两个月前,我还在为一套长在 Claude Code 上的工作流算迁移成本。十几个 skill、CLAUDE.md、memory 和 hook,真换底座要搭进去好几个晚上。也正因为依赖够深,这次我没法用一句“卸载就完了”糊弄过去。
我会继续用,但会把供应商信任重新放回审查清单。更新客户端时看 release notes,企业网关上线前留请求基线,遇到未披露的环境分类就追问到底。
Anthropic 可以反滥用,也可以限制服务地区。它现在欠重度用户的,是一份能经得起代码对照的解释。
如果你公司的 Claude Code 必须经过内部网关,你最想让 Anthropic 回答哪一项:标记用途、保存时间,还是它会不会影响账号处置?