技术博客
AI 工具如何检测你的位置?Claude、Codex 内部审核机制分析
AI 编程工具在使用过程中可能检测你的地理位置。本文从技术角度分析 Claude、Codex 等工具可能使用的检测方法和信号来源。
AI 工具的位置检测背景
随着 AI 编程工具(如 Claude Code、Codex、Cursor 等)的普及,越来越多的开发者关心这些工具是否会检测自己的地理位置。位置检测可能影响服务的可用性、功能限制或账号状态。
AI 工具的位置检测通常不是单一维度的判断,而是多层信号的组合。从网络层到系统层再到应用层,每一层都可能携带位置信息。ClaudeSignal 的设计原理就是模拟这些层的信号暴露情况。
检测层次一:网络层
最直接的位置信号来自网络层。当 AI 工具发起 API 请求时,服务器可以看到:
请求 IP 地址:这是最基本的位置信号。IP 地理定位服务可以将 IP 映射到国家、城市、甚至更精细的地理位置。准确率因 ISP 和地区而异,但国家级别的准确率通常在 95% 以上。
ASN/ISP 信息:IP 对应的自治系统号(ASN)和互联网服务提供商(ISP)可以提供额外的位置上下文。例如,中国三大运营商(中国电信、中国联通、中国移动)的 ASN 范围是明确的。
代理/数据中心标记:IP 地理定位服务还可以判断 IP 是否来自住宅宽带、VPN、数据中心或代理服务器。VPN 和数据中心 IP 通常会被标记,因为它们经常被用于隐藏真实位置。
检测层次二:系统层
终端工具(如 Claude Code)运行在操作系统上,可以直接读取系统级信息:
系统时区:通过读取操作系统的时区配置(如 macOS 的 /etc/localtime、Linux 的 TZ 环境变量、Windows 注册表)。这是一个非常强的位置信号,因为时区设置通常在安装系统时确定。
主机名:计算机的主机名有时包含地理位置线索(如 "DESKTOP-BJ001" 可能暗示北京)。
系统语言:操作系统的语言设置反映用户的语言环境。
网络接口信息:本地网络接口的 IP 地址、子网掩码和网关信息可以揭示内部网络拓扑。
检测层次三:应用层
在浏览器环境中,AI 工具可以通过 JavaScript 读取大量设备和环境信息:
浏览器指纹:包括时区、语言、Intl 区域、字体、WebGL/GPU、数字格式、日期格式、键盘布局、屏幕 DPI、Emoji 渲染等。ClaudeSignal 检测的 14 项信号中,大部分来自这一层。
用户行为模式:输入法切换频率、打字速度、代码中的注释语言等,虽然不直接是位置信号,但可能间接反映用户的语言背景。
API 请求头:HTTP 请求中的 Accept-Language、User-Agent 等头部信息携带语言和系统信息。
Claude Code 的特殊性
Claude Code 作为终端工具,有其独特的检测特点:
直接系统访问:与浏览器不同,Claude Code 可以直接读取操作系统级别的配置,不受浏览器沙箱的限制。
Unicode 隐写术:根据公开分析,Claude Code 在 system prompt 中的日期行使用了 Unicode 隐写术,通过微妙的字符变体编码了用户是否看起来像中国用户。这是极其隐蔽的检测方式。
终端环境信息:Claude Code 可以读取 shell 环境变量、已安装的包管理器、系统架构等信息。
ClaudeSignal 的检测范围
ClaudeSignal 专注于检测浏览器和网络层的外部可见信号。它能检测:
客户端指纹信号(10 项):时区、语言、Intl 区域、字体、WebGL/GPU、数字格式、日期格式、键盘布局、屏幕 DPI、Emoji 渲染。
服务端 IP 信号(4 项):IP 归属地、住宅/代理标记、ISP 区域、网络类型。
ClaudeSignal 无法检测的是:终端级信号(系统时区、主机名、环境变量)、账号级信息(手机号、支付方式、账号历史)以及 AI 服务内部的内部审核逻辑。
尽管如此,浏览器和网络层的信号与终端层的关键信号(如时区)是一致的,因此 ClaudeSignal 的检测结果仍然具有参考价值。
总结
AI 工具的位置检测是一个多层、多信号的复杂系统。没有任何单一信号能完全决定结果,但多个独立信号的组合可以形成非常强的画像。
使用 ClaudeSignal 可以帮你理解你的环境暴露了哪些信号。