2026-07 · 5 分钟阅读
Claude Code 如何检测中国用户:时区、隐写术与代理检查
当 Claude Code 通过 ANTHROPIC_BASE_URL 连接到非官方 API 端点时,它会执行一系列检查来判断用户是否位于中国。根据公开的逆向工程报告,这套 Claude Code 中国用户检测机制至少依赖两个信号:操作系统时区和代理主机名。检测结果随后通过隐写术编码到 system prompt 中——用户不可见,但模型可以读取。
时区检查——最核心的信号
Claude Code 中国用户检测中最重要的信号是系统时区。Claude Code 读取操作系统时区——与浏览器通过 Intl.DateTimeFormat().resolvedOptions().timeZone 暴露的值完全相同。如果结果是 Asia/Shanghai、Asia/Urumqi 或 Asia/Chongqing 等中国时区,检测就会触发。
这就是为什么在任何模拟 Claude Code 检测的浏览器指纹扫描器中,时区都携带最高权重。在我们 fuck-claude.app 的工具中,仅时区信号就占 100 分风险总分中的 26 分。大中华区时区如 Asia/Hong_Kong、Asia/Macau 和 Asia/Taipei 也会触发部分匹配。
代理主机名分析
第二个信号针对的是 Claude Code 连接的代理或 API 中继。当用户将 ANTHROPIC_BASE_URL 配置为指向第三方端点时,Claude Code 据报道会检查主机名中是否包含与中国 AI 实验室、云服务商或已知代理服务相关的关键词。包含中国科技公司或 AI 研究机构相关术语的主机名可能触发检测。
这项检查无法在浏览器指纹扫描器中复现,因为网站无法访问用户的 Claude Code 配置。但了解它作为整体中国用户检测流程的重要组成部分是有价值的。
Unicode 隐写术——判定结果如何隐藏
一旦 Claude Code 判定用户是否来自中国,它就会使用 Unicode 隐写术将判定结果编码到 system prompt 中。编码方式极其精妙。在 system prompt 的 "Today's date is ..." 这一行中,会发生两处修改。
首先,日期分隔符会改变:标准格式中的连字符(-)在检测到中国时区时变为斜杠(/)。其次,"Today's" 中的撇号字符在四个视觉上完全相同的 Unicode 变体之间轮换。每个变体编码不同的标记组合——时区匹配、主机名匹配或两者兼有。对人眼来说,这些字符看起来完全一样。对读取 system prompt 的模型来说,它们承载着不同的含义。
什么会触发标记,什么不会
根据逆向工程分析,触发 Claude Code 中国用户检测的最强信号是系统时区为 Asia/Shanghai 且通过主机名匹配标记模式的代理连接。单独一个信号可能触发部分标记,但两者同时出现会产生最强的检测信号。
中国大陆以外的用户——包括新加坡、日本、韩国或西方国家的用户——通常不会触发检测,除非他们的系统时区被手动设置为中国时区。直接连接官方 Anthropic API 而不使用代理的用户也会完全绕过主机名检查。
相关的浏览器指纹信号
虽然 Claude Code 只检查时区和代理主机名,但浏览器指纹扫描器可以检测与中国用户身份相关的其他信号。这些信号包括浏览器语言设置(zh-CN 是否为首选语言)、已安装的中文字体(如微软雅黑或苹方)、Intl 区域设置、时区偏移(UTC+8),甚至可能暴露中国市场硬件的 WebGL 渲染器信息。
我们在 fuck-claude.app 的 Claude Code 中国用户扫描器检测 11 个此类信号,生成 0 到 100 的综合风险评分。时区信号权重最高(26 分),与 Claude Code 的实际检测机制匹配,其余信号则提供浏览器环境"中国特征"的更全面画像。
如何降低检测风险
最有效的操作是将操作系统时区从中国时区切换出去。切换到 America/New_York 或 Europe/London 可以立即消除最强信号。调整浏览器语言偏好,将英语放在 zh-CN 之上也有帮助。对于 Claude Code 而言,避免使用主机名包含被标记关键词的代理服务同样重要。
你可以使用我们扫描工具上的伪装模拟器测试不同配置。它允许你逐个开关信号,精确查看每项更改如何影响你的整体风险评分。