使用Codex分析Claude code的国内监测机制
作者:FancyPig | 发布时间: | 更新时间:
杂谈
事情是这样的,昨天看到reddit上热心网友发布的帖子,指出Anthropic 的编程工具 Claude Code 会悄悄检查用户是否通过中国相关的代理服务器访问,如果是,就在发给 Anthropic 的系统提示词里用几乎肉眼不可见的 Unicode 字符差异来“标记”这些用户。我们今天教大家通过魔法分析魔法,魔法打败魔法。

同时也有网友爆料在claude code中硬编码了诸多域名,很多是中转站、国内的AI厂商以及服务器运营商的域名

不过,今天Claude Code的负责人Thariq已经在x上回复了这个问题,他认为只是一项实验措施,检测蒸馏攻击而使用,后面会从新的版本中移除。

分析方法
我们这里教大家使用Codex对anthropic的claude code进行分析,如果你还没有codex,可以参考之前的教程,后面我们还会出个更加完整的codex安装、使用教程。
其实用codex的方法非常简单、粗暴。把你的问题描述清楚给它就行了,剩下的交给他来完成吧。
我建了一个空的文件夹,叫Claude-Analysis,然后输入我们的需求。

之后大约工作了27分钟,就有了下面的完整报告。

完整报告
摘要
这份报告旨在调查一个具体的问题:Claude Code 是否会根据用户的 API endpoint、系统时区或某些域名特征,在发送给模型的请求里加入隐藏标记。
结论是:会。
Claude Code 2.1.191 会在本地读取 ANTHROPIC_BASE_URL 和系统时区,计算三个布尔分类:known、labKw、cnTZ。随后它不会把这三个字段作为明文参数上传,而是把结果编码进一句看起来普通的日期文本,也就是 currentDate:
Today's date is 2026-07-01.
编码方式很隐蔽:它改变 Today's 中的撇号字符,必要时还把日期分隔符从 - 改成 /。这个 currentDate 会进入 meta message,并随 /v1/messages?beta=true 的模型请求体发送。
但要把边界说清楚:本报告没有找到 known/labKw/cnTZ 作为独立 telemetry、HTTP header、analytics event、policy event、Datadog、Sentry 或 OTel 字段上传的证据。也没有证据证明它被用于蒸馏检测、模型训练检测、封禁、限流或风控评分。
完整流程图
flowchart LR
A["用户配置 ANTHROPIC_BASE_URL"] --> B["Claude Code 本地取 hostname"]
C["系统时区"] --> D["判断是否 Asia/Shanghai 或 Asia/Urumqi"]
B --> E["命中隐藏域名表 known?"]
B --> F["命中隐藏关键词 labKw?"]
D --> G["得到 cnTZ"]
E --> H["把分类结果编码进 currentDate"]
F --> H
G --> H
H --> I["写入 system-reminder"]
I --> J["随 /v1/messages?beta=true 发送"]
J -. "未发现证据" .-> K["独立 telemetry 字段"]
J -. "未发现证据" .-> L["蒸馏 / 风控 / 封禁用途"]可以把它理解成一种“提示词侧信道”:信息没有以 isChina=true、proxyIsLab=true 这种直白字段出现,而是藏在一句自然语言日期里。模型请求的接收方如果知道规则,就可以从这句话还原分类结果。
到底做了什么
在默认使用官方 Anthropic endpoint 时,日期文本是普通的:
Today's date is 2026-07-01.
当用户设置了非官方 ANTHROPIC_BASE_URL 后,Claude Code 会检查这个 URL 的 hostname。它会问三个问题:
问题 | 代码里的名字 | 通俗解释 |
|---|---|---|
hostname 是否命中隐藏域名表 |
| 这个 endpoint 是否在一张内置域名名单里,或是名单域名的子域名。 |
hostname 是否包含隐藏关键词 |
| 这个 endpoint 是否含有 |
系统时区是否在中国常见时区 |
| 当前系统时区是否为 |
然后它把这三个答案编码进日期文本:
|
|
| Unicode | 示例 |
|---|---|---|---|---|
false | false |
| U+0027 |
|
true | false |
| U+2019 |
|
false | true |
| U+02BC |
|
true | true |
| U+02B9 |
|
如果 cnTZ=true,日期本身也会变化:
| 日期分隔符 | 示例 |
|---|---|---|
false |
|
|
true |
|
|
也就是说,这句日期最多可以表达三类信息:endpoint 是否命中域名表、是否命中模型厂商关键词、系统时区是否命中中国时区。
CurrentDate到底发给了谁
currentDate 不是只停在本地。静态代码和黑盒请求都显示,它会进入 Claude Code 发给模型的 meta message。
简化后的请求链路是:
sequenceDiagram
participant CLI as Claude Code CLI
participant Ctx as Context Builder
participant Msg as Message Builder
participant SDK as SDK Client
participant EP as API Endpoint
CLI->>Ctx: 读取 ANTHROPIC_BASE_URL 和系统时区
Ctx->>Ctx: 计算 known / labKw / cnTZ
Ctx->>Ctx: 生成 currentDate
Ctx->>Msg: 写入 user context
Msg->>Msg: 包装成 system-reminder
Msg->>SDK: 构造 messages
SDK->>EP: POST /v1/messages?beta=true具体发往哪里,取决于模型 API base URL:
场景 | 请求目标 | 日期分类是否启用 | 说明 |
|---|---|---|---|
未设置 |
| 否 | 代码早退,使用普通日期。 |
|
| 否 | 官方 host 判断命中 |
|
| 是 | 命中域名表,黑盒请求捕获到 U+2019 撇号。 |
|
| 是 | 命中关键词,黑盒请求捕获到 U+02BC 撇号。 |
自定义 gateway 再转发 Anthropic | 先到 gateway,再由 gateway 决定 | 是 | 客户端只能证明先发给 gateway;后续是否转发需审计 gateway。 |
只设置 | 模型 endpoint 不变,连接层走代理 | 否 | 普通代理不是这段分类逻辑的输入。 |
关键点是:如果用户设置的是非官方 gateway,那么 Claude Code 客户端直接发送给这个 gateway。Anthropic 是否能看到隐藏编码,取决于 gateway 后面怎么转发。
这是不是“上报”或“蒸馏检测”
这里需要拆开说。
第一,确实存在本地检测。Claude Code 在本地检测 endpoint hostname、关键词和系统时区。
第二,确实存在隐蔽编码。检测结果没有以明文字段出现,而是编码进 currentDate。
第三,确实进入模型请求体。它随 meta message 进入 /v1/messages?beta=true。
第四,目前没有证据证明独立上报。没有找到 known、labKw、cnTZ 被作为 telemetry 字段、HTTP header、Datadog/Sentry/OTel 字段或 policy event 单独上传。
第五,目前没有证据证明服务端用途。代码中能搜到 distillationConfig 等词,但这些来自 AWS/Bedrock SDK 结构,没有和 currentDate、known/labKw/cnTZ 调用链相连。
主张 | 当前判断 | 原因 |
|---|---|---|
“它只是显示日期,不会发出去” | 不成立 |
|
“它会单独上报到 telemetry” | 未证实 | 未找到独立字段或事件。 |
“它默认直发 Anthropic 并携带隐藏分类” | 不准确 | 默认官方 endpoint 会早退,使用普通日期。 |
“使用非官方 base URL 时,gateway 能看到编码结果” | 成立 | 自定义 endpoint 会收到模型请求体。 |
“Anthropic 一定能看到非官方 gateway 下的编码结果” | 取决于 gateway | 如果 gateway 转发给 Anthropic,Anthropic 可能看到;否则不一定。 |
“这是蒸馏检测、训练检测或封禁逻辑” | 未证实 | 客户端证据不能证明服务端用途。 |
隐藏表怎么藏在代码里
隐藏域名表和关键词表不是明文数组。它们以两个 base64 字符串形式存放,再通过 XOR 解码。
在本机 2.1.191 中:
项 | 2.1.191 符号 | 作用 | 证据结论 |
|---|---|---|---|
解码函数 |
|
| base64 + XOR |
XOR key |
| 解码用 key | key 为 91 |
域名表 |
| 解出 147 项 | 用于 |
关键词表 |
| 解出 11 项 | 用于 |
| 本机未命中 | 可能是其它版本 minified 名 | 本机 2.1.191 不应写成 |
解码过程如下:
flowchart TD
A["代码中的编码字符串 Fqd / Bqd"] --> B["base64 decode"]
B --> C["逐字节 XOR 91"]
C --> D["拼成逗号分隔字符串"]
D --> E["known 域名表 147 项"]
D --> F["labKw 关键词表 11 项"]等价伪代码:
function decode(encoded, key = 91) {
const bytes = Buffer.from(encoded, "base64");
let out = "";
for (const byte of bytes) out += String.fromCharCode(byte ^ key);
return out.split(",");
}
匹配规则
解码后,Claude Code 用 hostname 做匹配。path、query、fragment 都不参与。
分类 | 输入 | 规则 | 举例 |
|---|---|---|---|
|
| `host === domain | |
| 同一个 hostname |
|
|
| 系统时区 |
| 命中后日期分隔符从 |
flowchart TD
A["hostname 小写化"] --> B{"host 等于 domain?"}
A --> C{"host 以 .domain 结尾?"}
B -->|"是"| D["known=true"]
C -->|"是"| D
B -->|"否"| E["继续检查其它 domain"]
C -->|"否"| E
A --> F{"host.includes(keyword)?"}
F -->|"是"| G["labKw=true"]
F -->|"否"| H["labKw=false"]
I["path / query / port"] -. "不参与匹配" .-> A注意两点:
域名表第一项是
cn,所以任意.cn后缀都会命中known。关键词表是 substring 匹配,不要求完整域名边界。
foo.deepseek.example也会命中deepseek。
如何阅读这张域名表
这张表容易被误读。它不是 Claude Code 的网络出口清单,也不是官方文档里的 allowlist。更准确地说,它是一组本地匹配规则:当 ANTHROPIC_BASE_URL 的 hostname 命中这些域名时,代码把 known 设为 true。
这也意味着,表格里的“可读解释”和“语义归类”只是为了帮助读者理解,不是 Anthropic 在代码里存储的标签。
代码实际存了什么
层级 | 是否在代码中存在 | 说明 |
|---|---|---|
| 是 | 147 项域名表命中即为 true。 |
| 是 | 11 项关键词 substring 命中即为 true。 |
| 是 | 系统时区命中 |
云厂商 / AI lab / API 中转 / 售卖入口 | 否 | 这些是本文为了读者理解做的人工语义归类,不是代码里的字段。 |
所以,aliyuncs.com 在代码里的含义只是“命中 known 表”。它的可读解释是“阿里云基础设施域名”,但代码没有给它标注“阿里云厂商”或“云厂商”。
关键词表:更像模型厂商关键词
关键词 | 代码层分类 | 可读解释 | 备注 |
|---|---|---|---|
|
| DeepSeek 模型厂商关键词 | substring 匹配。 |
|
| Moonshot/月之暗面关键词 |
|
|
| MiniMax 关键词 | substring 匹配。 |
|
| 疑似 MiniMax 变体/反向关键词 |
|
|
| 智谱 AI 关键词 | substring 匹配。 |
|
| 智谱 BigModel 平台关键词 | substring 匹配。 |
|
| 百川智能关键词 | substring 匹配。 |
|
| 阶跃星辰关键词 |
|
|
| 零一万物关键词 | substring 匹配。 |
|
| 阿里云 DashScope / 百炼相关关键词 | 这是模型平台关键词,不等同于 |
|
| 火山引擎/Volcengine 相关关键词 | substring 匹配。 |
附录 :完整 known 域名表
置信度说明:
高:厂商/含义较明确,或字符串语义直接。
中:字符串语义很强,但运营主体仍需外部核验。
低:仅凭域名无法可靠判断。
# | 域名 | 代码层分类 | 可读解释 | 语义归类 | 置信度 |
|---|---|---|---|---|---|
1 |
| known=true | 任意 .cn 域名都会命中 known;这是 TLD 级规则,不是厂商名 | 国家/地域规则 | 高 |
2 |
| known=true | 美团相关公司域名 | 中国互联网公司域名 | 中 |
3 |
| known=true | 网易主域 | 中国互联网公司域名 | 高 |
4 |
| known=true | 网易 163 域 | 中国互联网公司域名 | 高 |
5 |
| known=true | 百度相关内部/国际命名 | 中国互联网公司域名 | 中 |
6 |
| known=true | 百度主域 | 中国互联网公司域名 | 高 |
7 |
| known=true | 阿里巴巴公司域名 | 中国互联网公司域名 | 高 |
8 |
| known=true | 支付宝主域 | 支付/金融平台 | 高 |
9 |
| known=true | 蚂蚁集团公司域名 | 支付/金融平台 | 中 |
10 |
| known=true | 快手主域 | 中国互联网公司域名 | 高 |
11 |
| known=true | 字节跳动基础域名 | 中国互联网公司域名 | 高 |
12 |
| known=true | 小红书主域 | 中国互联网公司域名 | 高 |
13 |
| known=true | 携程公司域名 | 中国互联网公司域名 | 高 |
14 |
| known=true | 京东主域 | 中国互联网公司域名 | 高 |
15 |
| known=true | 京东云域名 | 云厂商/基础设施 | 高 |
16 |
| known=true | B 站相近域名,需核验具体用途 | 中国互联网公司域名 | 低 |
17 |
| known=true | 科大讯飞主域,但代码中仍只是 known,不是 labKw | AI/语音技术厂商 | 高 |
18 |
| known=true; labKw=stepfun | 阶跃星辰公司域名,同时包含 labKw=stepfun | AI 模型公司/实验室 | 高 |
19 |
| known=true | 阿里云通用云服务域名;不等于 AI lab | 云厂商/基础设施 | 高 |
20 |
| known=true | 带 cn-shanghai 地域的函数计算/应用运行域名特征 | 云厂商/Serverless 基础设施 | 高 |
21 |
| known=true | 带 cn-beijing 地域的函数计算/应用运行域名特征 | 云厂商/Serverless 基础设施 | 高 |
22 |
| known=true; labKw=xaminim | 与 labKw=xaminim 重合,疑似 MiniMax 相关反向/变体命名 | AI 模型公司/实验室关键词 | 中 |
23 |
| known=true; labKw=moonshot | Moonshot/月之暗面域名,同时包含 labKw=moonshot | AI 模型公司/实验室 | 高 |
24 |
| known=true | 命名含 router,疑似 API 网关或模型路由 | API 代理/聚合/中转 | 中 |
25 |
| known=true | 命名含 api,疑似 API 网关或售卖入口 | API 代理/聚合/中转 | 中 |
26 |
| known=true | 命名含 AI/code/mirror,疑似代码 AI 或镜像服务 | AI/代码服务或聚合 | 低-中 |
27 |
| known=true | 命名含 AI/code,疑似代码 AI 服务 | AI/代码服务或聚合 | 低-中 |
28 |
| known=true | 红杉/公司名可能性,需外部核验具体用途 | 投资/机构或公司域名 | 低 |
29 |
| known=true | 浩鲸云/企业云相关命名 | 云厂商/企业软件 | 中 |
30 |
| known=true | coder 命名,疑似代码服务 | AI/代码服务或聚合 | 低-中 |
31 |
| known=true | GPT 命名,疑似模型 API 服务 | API 代理/聚合/中转 | 中 |
32 |
| known=true | API 命名,疑似接口服务 | API 代理/聚合/中转 | 中 |
33 |
| known=true | 合合信息/智能文字识别相关域名 | 企业软件/AI OCR | 中 |
34 |
| known=true | AI 命名,主体需核验 | AI/代码服务或聚合 | 低-中 |
35 |
| known=true | cloud 命名,主体需核验 | 云厂商/基础设施 | 低-中 |
36 |
| known=true | API 命名,疑似接口服务 | API 代理/聚合/中转 | 中 |
37 |
| known=true | 数字域名,无明确可读语义 | 不明 | 低 |
38 |
| known=true | cloud 后缀,主体需核验 | 云厂商/基础设施 | 低-中 |
39 |
| known=true | code/ai 命名 | AI/代码服务或聚合 | 低-中 |
40 |
| known=true | code 命名 | AI/代码服务或聚合 | 低-中 |
41 |
| known=true | code 命名 | AI/代码服务或聚合 | 低-中 |
42 |
| known=true | 数字域名,TLD 常见于个人/临时服务 | 不明/个人服务域名 | 低 |
43 |
| known=true | AI/code 子域 | AI/代码服务或聚合 | 低-中 |
44 |
| known=true | AI 子域,主体不明 | AI/代码服务或聚合 | 低-中 |
45 |
| known=true | AI 子域,主体不明 | AI/代码服务或聚合 | 低-中 |
46 |
| known=true | AI/API 命名 | API 代理/聚合/中转 | 中 |
47 |
| known=true | AI coding 命名 | AI/代码服务或聚合 | 低-中 |
48 |
| known=true | AI fast 命名 | AI/代码服务或聚合 | 低-中 |
49 |
| known=true | AI hub/mix 命名,疑似聚合 | AI/代码服务或聚合 | 低-中 |
50 |
| known=true | 无明确语义 | 不明 | 低 |
51 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
52 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
53 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
54 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
55 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
56 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
57 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
58 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
59 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
60 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
61 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
62 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
63 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
64 |
| known=true | api 子域,疑似 API 网关;黑盒验证样例 | API 代理/聚合/中转 | 中 |
65 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
66 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
67 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
68 |
| known=true | api/open 命名,疑似 API 网关 | API 代理/聚合/中转 | 中 |
69 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
70 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
71 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
72 |
| known=true | api/ai 命名,疑似 API 网关 | API 代理/聚合/中转 | 中 |
73 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
74 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
75 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
76 |
| known=true | api 子域,疑似 API 网关 | API 代理/聚合/中转 | 中 |
77 |
| known=true | API 市场/聚合命名 | API 代理/聚合/中转 | 中 |
78 |
| known=true | API pro 命名 | API 代理/聚合/中转 | 中 |
79 |
| known=true | API/接口命名 | API 代理/聚合/中转 | 中 |
80 |
| known=true | hiapi 命名 | API 代理/聚合/中转 | 中 |
81 |
| known=true | 无明确语义 | 不明 | 低 |
82 |
| known=true | 无明确语义 | 不明 | 低 |
83 |
| known=true | Claude 相近拼写,需核验 | 不明 | 低 |
84 |
| known=true | 明确 Claude Code hub 命名 | Claude 镜像/网关 | 中 |
85 |
| known=true | Claude/Opus 命名,疑似 Claude API 镜像 | Claude 镜像/网关 | 中 |
86 |
| known=true | Claude IDE 命名 | Claude 镜像/网关 | 中 |
87 |
| known=true | 无明确语义,TLD/命名常见于个人服务 | 不明/个人服务域名 | 低 |
88 |
| known=true | code + AI 命名 | AI/代码服务或聚合 | 低-中 |
89 |
| known=true | code + aio 命名 | AI/代码服务或聚合 | 低-中 |
90 |
| known=true | code/AI lab 近似命名 | AI/代码服务或聚合 | 低-中 |
91 |
| known=true | 无明确语义 | 不明 | 低 |
92 |
| known=true | router 命名,疑似模型/API 路由 | API 代理/聚合/中转 | 中 |
93 |
| known=true | 无明确语义 | 不明 | 低 |
94 |
| known=true | API 命名 | API 代理/聚合/中转 | 中 |
95 |
| known=true | docs 子域,可能是某 AIGC 服务文档 | 文档站 | 中 |
96 |
| known=true | coding 命名 | AI/代码服务或聚合 | 低-中 |
97 |
| known=true | 无明确语义 | 不明 | 低 |
98 |
| known=true | code 命名 | AI/代码服务或聚合 | 低-中 |
99 |
| known=true | code 命名 | AI/代码服务或聚合 | 低-中 |
100 |
| known=true | code 命名 | AI/代码服务或聚合 | 低-中 |
101 |
| known=true | 福利/售卖语义可能 | 售卖/商业化入口 | 中 |
102 |
| known=true | API 命名 | API 代理/聚合/中转 | 中 |
103 |
| known=true | GPT 子域,疑似代理 | API 代理/聚合/中转 | 中 |
104 |
| known=true | GPT/cloud 命名 | API 代理/聚合/中转 | 中 |
105 |
| known=true | GPT key 命名,疑似售卖/分发入口 | API 代理/聚合/中转 | 中 |
106 |
| known=true | GPT pay/store 命名,疑似售卖入口 | API 代理/聚合/中转 | 中 |
107 |
| known=true | 无明确语义 | 不明 | 低 |
108 |
| known=true | API 命名 | API 代理/聚合/中转 | 中 |
109 |
| known=true | Copilot API 命名 | API 代理/聚合/中转 | 中 |
110 |
| known=true | 无明确语义,TLD/命名常见于个人服务 | 不明/个人服务域名 | 低 |
111 |
| known=true | “接口”+ AI 命名,疑似 API 聚合 | API 代理/聚合/中转 | 中 |
112 |
| known=true | API/cloud 命名 | API 代理/聚合/中转 | 中 |
113 |
| known=true | AI 后缀,主体不明 | AI/代码服务或聚合 | 低-中 |
114 |
| known=true | new-api 常见中转命名 | API 代理/聚合/中转 | 中 |
115 |
| known=true | chat AI 命名 | AI/代码服务或聚合 | 低-中 |
116 |
| known=true | one-api 常见聚合网关命名 | API 代理/聚合/中转 | 中 |
117 |
| known=true | one/AI 命名,疑似聚合 | AI/代码服务或聚合 | 低-中 |
118 |
| known=true | oneapi 聚合网关命名 | API 代理/聚合/中转 | 中 |
119 |
| known=true | open/API 开放平台命名 | API 代理/聚合/中转 | 中 |
120 |
| known=true | Claude 开放/镜像命名 | Claude 镜像/网关 | 中 |
121 |
| known=true | Opus/GPT 命名,疑似 Claude 模型代理 | Claude 镜像/网关 | 中 |
122 |
| known=true | AI 命名 | AI/代码服务或聚合 | 低-中 |
123 |
| known=true | API 命名 | API 代理/聚合/中转 | 中 |
124 |
| known=true | 私有节点/代理节点语义,需核验 | 不明 | 低 |
125 |
| known=true | proxy + AI 命名 | API 代理/聚合/中转 | 中 |
126 |
| known=true | AI 命名 | AI/代码服务或聚合 | 低-中 |
127 |
| known=true | code 域名,主体不明 | AI/代码服务或聚合 | 低-中 |
128 |
| known=true | 无明确 AI/API 语义 | 不明/个人服务域名 | 低 |
129 |
| known=true | AI code 命名 | AI/代码服务或聚合 | 低-中 |
130 |
| known=true | store 售卖语义 | 售卖/商业化入口 | 中 |
131 |
| known=true | AI 命名 | AI/代码服务或聚合 | 低-中 |
132 |
| known=true | API 命名 | API 代理/聚合/中转 | 中 |
133 |
| known=true | 统一 API/聚合命名 | API 代理/聚合/中转 | 中 |
134 |
| known=true | VIP/API 命名,疑似售卖入口 | API 代理/聚合/中转 | 中 |
135 |
| known=true | AI 命名 | AI/代码服务或聚合 | 低-中 |
136 |
| known=true | 无明确语义 | 不明 | 低 |
137 |
| known=true | 无明确语义,TLD/命名常见于个人服务 | 不明/个人服务域名 | 低 |
138 |
| known=true | AI router 命名 | API 代理/聚合/中转 | 中 |
139 |
| known=true | AI/API 命名 | API 代理/聚合/中转 | 中 |
140 |
| known=true | API 命名 | API 代理/聚合/中转 | 中 |
141 |
| known=true | mini 命名但主体不明 | 不明/个人服务域名 | 低 |
142 |
| known=true | poloapi 子域 | API 代理/聚合/中转 | 中 |
143 |
| known=true | 无明确语义 | 不明 | 低 |
144 |
| known=true | 无明确语义,TLD/命名常见于个人服务 | 不明/个人服务域名 | 低 |
145 |
| known=true | AI 命名,疑似代理服务 | AI/代码服务或聚合 | 低-中 |
146 |
| known=true | Zeabur 托管 app 子域,主体需核验 | 云托管/部署平台 | 中 |
147 |
| known=true | AI/mux 命名,疑似聚合或路由 | AI/代码服务或聚合 | 低-中 |
我们如何验证
验证分两条线:一条看“实际发出的请求体”,另一条看“代码为什么会这样生成”。前者证明 currentDate 进入了模型请求,后者证明隐藏域名表、关键词表和时区判断如何影响这句话。
flowchart LR
A["黑盒验证: 本地 fake API 捕获请求体"] --> C["证明 currentDate 随 /v1/messages 发送"]
B["静态验证: 搜索和解码 2.1.191 二进制"] --> D["证明 known / labKw / cnTZ 的来源"]
C --> E["交叉确认: 不是只在本地显示"]
D --> E黑盒请求体验证
本机 2.1.191 使用本地 fake API gateway、dummy key、临时 HOME 验证。测试时设置了:
DISABLE_TELEMETRY=1
DISABLE_ERROR_REPORTING=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
所以该测试只证明主模型请求体中的日期标记,不是全流量审计。
场景 |
|
| 请求体中的日期文本 | 撇号 |
|---|---|---|---|---|
官方 host |
|
|
| U+0027 |
未知自定义 host |
|
|
| U+0027 |
命中 known |
|
|
| U+2019 |
命中 labKw |
|
|
| U+02BC |
同时命中 known + labKw + cnTZ |
|
|
| U+02B9 |
静态代码证据摘要
静态链路显示,日期先由 CJr() 生成,再经 MKi(eHe()) 进入 user context。随后 UKn(...) 把 user context 包成 meta message,最后由 beta.messages.create(...) 发送到 /v1/messages?beta=true。
这条链路说明:隐藏标记不是 UI 文案,也不是只用于本地日志,而是模型请求的一部分。
其它网络流量:哪些相关,哪些不相关
这些路径存在,但不要和隐藏域名表混为一谈。
类别 | 典型端点 / 字符串 | 触发条件 | 可能发送内容 | 与 currentDate 关系 |
|---|---|---|---|---|
模型 API |
| 正常模型请求 | prompt、meta message、工具上下文、 | 已确认进入这里。 |
telemetry / Datadog |
| 默认 first-party 运行指标 | 延迟、可靠性、使用模式等 | 未见独立携带 |
Sentry error reporting | Sentry 相关常量 | 错误/崩溃报告 | 错误堆栈和诊断信息 | 未见独立携带分类。 |
OpenTelemetry |
| 用户/管理员显式启用 | 指标、事件、可选 prompt/tool/raw body | 若启用 raw body,可能间接包含已进入请求体的日期标记。 |
|
| 用户执行 | 会话 transcript、描述、sanitized error log、可能包含代码 | 可能间接包含日期标记。 |
transcript share |
| 用户同意分享 transcript | 会话 transcript / bundle | 可能间接包含日期标记。 |
WebFetch 预检 |
| WebFetch 前 | 目标 hostname | 与 147 hidden domain 表无关。 |
policy limits |
| 策略加载/轮询 | 策略限制状态 | 未见独立携带分类。 |
Projects / DesignSync |
| 使用项目/设计同步功能 | 工作区或 design 文件内容 | 与日期标记无直接绑定。 |
Remote Control / Bridge |
| Remote Control/Bridge | 会话状态、控制消息、工具桥接消息 | 相邻功能面,不是同一逻辑。 |
官方文档也说明:Claude Code 会发送模型请求,operational metrics 默认开启于 Claude API provider,Sentry error reporting 默认开启,/feedback 会发送会话历史,WebFetch domain safety check 会把 hostname 发到 api.anthropic.com,且不受 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 影响,需要 skipWebFetchPreflight: true 单独关闭。
结论边界
主张 | 当前状态 | 说明 |
|---|---|---|
| 未证实 | 未找到字段、header、event、policy、Datadog、Sentry、OTel 绑定证据。 |
服务端用于蒸馏检测 | 未证实 | 客户端证据不能证明服务端用途。 |
服务端用于封禁/限流/风控 | 未证实 | 未找到直接证据。 |
普通 | 不成立 / 不适用 | 核心输入是 |
147 项域名表是 egress allowlist | 不成立 | 它是本地分类命中集合,不是请求目标清单。 |
| 不成立 | 代码只标 |
复现步骤
静态复核
command -v claude
ls -l /Users/fancypig/.local/bin/claude
/Users/fancypig/.local/share/claude/versions/2.1.191 --version
shasum -a 256 /Users/fancypig/.local/share/claude/versions/2.1.191
rg -n 'function LKi|function jqd|function MKi|currentDate:MKi|/v1/messages\\?beta=true' \
/tmp/claude-2.1.191.strings
解码隐藏表
node - <<'NODE'
const fs = require("fs");
const s = fs.readFileSync("/tmp/claude-2.1.191.strings", "utf8");
const m = s.match(/var Nqd=(\d+),Fqd="([A-Za-z0-9+/=]+)",Bqd="([A-Za-z0-9+/=]+)"/);
const key = Number(m[1]);
function decode(encoded) {
return [...Buffer.from(encoded, "base64")]
.map((b) => String.fromCharCode(b ^ key))
.join("")
.split(",");
}
console.log({ key, domains: decode(m[2]).length, keywords: decode(m[3]).length });
console.log(decode(m[2]).slice(0, 12));
console.log(decode(m[3]));
NODE
预期:
{ key: 91, domains: 147, keywords: 11 }
[
"cn",
"sankuai.com",
"netease.com",
"163.com",
"baidu-int.com",
"baidu.com",
"alibaba-inc.com",
"alipay.com",
"antgroup-inc.cn",
"kuaishou.com",
"bytedance.net",
"xiaohongshu.com"
]
[
"deepseek",
"moonshot",
"minimax",
"xaminim",
"zhipu",
"bigmodel",
"baichuan",
"stepfun",
"01ai",
"dashscope",
"volces"
]
公开来源
来源 | 链接 | 用途 |
|---|---|---|
Claude Code Data usage | 核对模型请求、telemetry、Sentry、feedback、WebFetch safety 默认行为。 | |
Claude Code Monitoring | 核对 OpenTelemetry 默认关闭、 | |
Claude Code Network configuration | 核对 proxy、allowlist 域名和 | |
Claude Code Settings | 核对 | |
Claude Code Security | 核对 Claude Code 安全、权限、云执行和 Remote Control 数据流说明。 |