Claude Code 是如何知道你在中国大陆的?
声明:本文章为纯手写,AI 含量 0%。
Claude Code 是如何知道你在中国大陆的?
众所周知,Anthropic 一直在封禁中国大陆用户,但是之前没人知道为什么自己伪装得和真的一样也会被封,直到昨天国外开发者逆向了 Claude Code,真相才浮出水面。
怎么检测?
据 Reddit 老哥的帖子所说,Claude Code 会执行如下流程:
https://www.reddit.com/r/ClaudeAI/comments/1ujila1/anthropic_embedded_spyware_in_claude_code_and/
- 检测你是否在使用代理 / 中转站
- 若你在使用,则会检查你的时区是否为
Asia/Shanghai或Asia/Urumqi - 在此基础上,会检测你的中转站的域名是否命中 Claude Code 内置的域名列表
- 不只如此,Claude Code 还内置了一份 AI Lab 关键词列表,同样会检查你使用的中转站的域名是否命中该列表
怎么把结果传给服务器?
然后,肯定要把“用户是中国大陆用户”的信息传给 Anthropic 的服务器吧?但是如果直接传,为什么一直没人抓包抓出来呢?
Anthropic 的答案是:
正经人谁直接明写,我直接藏在系统提示词里!
而且这个藏提示词的方式,极其阴间。
每次你和 Claude Code 对话时,都会自动在用户提示词前面拼接上一段系统提示词,其中有一行是:
1 | Today's date is 2026-07-03 |
如果你的时区为 Asia/Shanghai 或 Asia/Urumqi,Claude Code 会把这段提示词里的 - 改成 /:
1 | Today's date is 2026/07/03 |
如果你在使用已被标记的中转站,但是没有命中关键词列表,这段提示词就会变成:
1 | Today’s date is 2026-07-03 |
看着是不是和前面一模一样?
实际上改的是 Today's 里的单引号:
- 普通单引号
'(U+0027) - 变成右单引号
’(U+2019)
如果你正在使用的中转站没有被标记,但是命中了关键词列表,则会变成修饰符单引号:
1 | Todayʼs date is 2026-07-03 |
其中:
ʼ(U+02BC,Modifier Letter Apostrophe)
如果你的中转站既被标记,又命中了关键词列表,则会变成:
1 | Todayʹs date is 2026-07-03 |
其中:
ʹ(U+02B9,Modifier Letter Prime)
感想
虽然 Anthropic 只是在执行他们的 ToS,以防止自己的模型被受限制地区的用户使用。
但是,Claude Code 敢把你的时区信息和中转站信息通过这种隐蔽的方式神不知鬼不觉地上传,这件事的本质就变了。
既然他们干出来了这种事,那往模型里掺水让模型变傻等操作岂不是手到擒来?(事实证明确实干了,Fable 就被掺水了。)
甚至,他们完全可以让 Claude 在用户电脑上执行恶意代码、窃取隐私数据,因为很多用户都会开启 YOLO 模式;即使不开 YOLO 模式,在网页端也完全可以通过不可见 Unicode 字符等视觉攻击方式,让用户亲手执行恶意命令。
并且,Anthropic 的检查方案实际上也很容易绕过,例如:
- 使用 TUN 模式或软路由等透明代理,而不是系统代理。
- 将电脑时区改为
Asia/Singapore等其他 UTC+8 时区。 - 使用官方 API,或者通过 Nginx、HAProxy 等反向代理在本地转发中转站 API。
所以,Anthropic 亲手毁掉了用户对自己的信任,这波操作可以说是捡了芝麻,丢了西瓜。
