声明:本文章为纯手写,AI 含量 0%

Claude Code 是如何知道你在中国大陆的?
og

大家都知道 Anthropic 一直在封禁中国大陆用户,但之前没人搞清楚为什么明明伪装得天衣无缝还是会被封,直到昨天有国外开发者把 Claude Code 逆向了一遍,真相这才浮出水面

它是怎么检测的?

根据 Reddit 上一位老哥的帖子,Claude Code 大致会走这样一套流程:

  1. 检测你是否在使用代理 / 中转站
  2. 若你在使用,则会检查你的时区是否为 Asia/ShanghaiAsia/Urumqi
  3. 在此基础上,会检测你的中转站的域名是否命中 Claude Code 内置的域名列表
  4. 不只如此,Claude Code 还内置了一份 AI Lab 关键词列表,同样会检查你使用的中转站的域名是否命中该列表

检测结果又是怎么传回服务器的?

那问题来了,“这个用户是中国大陆用户”这个信息总得传回 A\ 的服务器吧?但要是直接传,为什么一直没人抓包抓出来呢?

Anthropic 给出的答案是:谁会傻乎乎明着传,直接藏进系统提示词里就行!

而且这个藏的手法,属实有点阴间!

每次和 Claude Code 对话,系统都会在用户提示词前面自动拼一段系统提示词,其中有一行是:

Today’s date is 2026-07-03

要是你的时区是 Asia/ShanghaiAsia/Urumqi,Claude Code 就会把这行提示词里的 - 换成 /

Today’s date is 2026/07/03

如果你用的中转站已经被标记,但没有命中关键词列表,这段提示词就会变成这样:

Today’s date is 2026-07-03

看着是不是跟前面一模一样?到底哪里被改了?答案在 Today’s 这个单引号上——它从正常的单引号 '\u0027)悄悄换成了右单引号(right single quotation mark)\u2019

如果你用的中转站没有被标记,但命中了关键词列表,单引号则会变成修饰符单引号(modifier letter apostrophe)ʼ\u02BC

Todayʼs date is 2026-07-03

要是你的中转站被标记了,命中了关键词列表,单引号就会变成修饰符字母撇号(modifier letter prime)ʹ\u02B9

Todayʹs date is 2026-07-03

一点感想

虽然 Anthropic 这么做只是在落实自己的 ToS,防止受限制地区的用户使用模型

但 Claude Code 用这种神不知鬼不觉的隐蔽方式,把你的时区信息和中转站信息偷偷传出去,这事的性质就不一样了

既然连这种事都干得出来,那往模型里“注水”让它变笨这种操作岂不是更轻而易举?(事实证明确实这么干过,Fable 就被注过水)

甚至往极端了想,他们完全有能力让 Claude 在用户电脑上跑恶意代码、窃取隐私数据——很多用户本来就开着 YOLO 模式,就算不开,哪怕是在网页端,A÷ 也能通过不可见的 Unicode 字符搞视觉攻击,让用户自己亲手执行恶意命令

而且,A\ 这套检测方案想绕过也不难,比如

  • 使用 TUN 模式或软路由等透明代理而不是系统代理
  • 更改电脑的时区为 Asia/Singapore 等其他 UTC+8 时区
  • 换成官方 API 接口或者用 Nginx、HAProxy 等反向代理应用在本地反代中转站 API 接口使用

所以说,是 A\ 自己亲手把用户的信任给毁了,这波操作说白了就是捡了芝麻丢了西瓜