验证中转站返回的是不是官方原文
把一条带证明的 API 响应粘贴到下面的验证器里:它在你的浏览器里完成验签,告诉你这条响应来自哪个官方上游域名、有没有被中转改过。数据不会离开你的电脑。
- 数据只在本地,不上传
- 验证器开源,可自行审计
- 免费,无需注册
三步验证一条响应
- 1
为 API Key 打开验证
在 API 页面为 Key 打开「官方直连验证」开关。只有原样转发的 Claude Messages 与 GPT Responses 响应会带证明。
- 2
保存完整响应
发一个流式请求,把响应原样存下来,末尾应能看到 event: tee.proof。非流式请求加请求头 x-wokey-tee-proof-mode: multipart,保存整个 multipart 响应。
- 3
粘贴到验证器
把整段响应粘贴或拖进下面的验证器,点开始验证。验证在本页的浏览器里完成,不发任何网络请求。
curl -sN https://api.wokey.ai/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":256,"stream":true,"messages":[{"role":"user","content":"Hello"}]}' \
-o captured-response上面的验证器由开源仓库直接通过 GitHub Pages 发布,不经过 Wokey 的服务器。Wokey 没办法换给你一个「永远说通过」的验证器;你也可以把页面另存到本地,断网打开。
验证器会让你核对 PCR0,也就是 Enclave 镜像的度量值。请以开源仓库公布、任何人都能自行复现构建的值为准,不要用响应里自带的值。
验证结果怎么读
- 全部通过
- attestation 链到 AWS Nitro 根证书,PCR0 等于公布值,签名有效,响应字节与签名里的哈希一致。结果里显示的上游域名(例如 api.anthropic.com)就是这条响应的来源,中转没有改过它。
- 证明有效,但缺响应正文
- 你只粘贴了 tee.proof 那一段。能确认证明是真 Enclave 签的,但没法重算正文哈希,也就证明不了你看到的内容没被改过。把整段响应一起粘贴。
- PCR0 不一致
- attestation 是真的,但 Enclave 跑的不是审计过的镜像。这条响应不能当作已证明。
- 验签或哈希失败
- 证明或响应被改过,或者复制时丢了字节。重新保存原始响应再试;仍失败就不要信任这条响应。
- 没有 tee.proof
- 这条响应未经证明,例如 Key 没开验证、接口做了格式转换,或 Enclave 当时不可用。按未证明处理。
其他中转站怎么测:每种方法能测出什么、测不出什么
没有上游签名的中转,只能做间接检查。这些检查能发现明显的问题,但结论最多是「没发现可疑之处」,不能是「确认是官方」。下面是常见方法和它们的边界。
| 方法 | 怎么做 | 能发现 | 测不出 |
|---|---|---|---|
| Token 计数 | 怎么做:用同一段固定提示词,分别在官方 API 和中转上请求同一个模型,对比 usage 里的 input_tokens。 | 能发现:换成了其他厂商的模型:不同厂商的分词器不同,数字会明显对不上。 | 测不出:同一家的不同模型常用同一套分词器,换成同家更便宜的型号测不出来;还需要一个官方参照值。 |
| 提示词缓存 | 怎么做:把一段超过模型最小缓存长度的相同前缀连发两次,看第二次是否返回 cache_read_input_tokens,账单是否按缓存读取价计费。 | 能发现:后端不是官方上游,或者中转没有正确转发缓存、却按全价收费。 | 测不出:缓存命中只说明后端支持缓存,不说明是哪个模型。 |
| 长上下文 | 怎么做:发一段接近标称上下文上限的长文本,在中间藏一句关键信息,最后提问。 | 能发现:用上下文更小的模型冒充,或者中转偷偷截断了历史消息。 | 测不出:答对不代表模型型号正确;这项测试的 token 成本也最高。 |
| 协议细节 | 怎么做:核对流式事件顺序(message_start 到 message_stop)、消息 id 格式、响应头和错误格式是否与官方文档一致。 | 能发现:粗糙的套壳,例如把别家模型的输出硬包成 Claude 格式。 | 测不出:这些字段都很容易伪造,用心的套壳能做到一模一样。 |
不要依赖的方法
- 问模型「你是谁」「你的知识截止到哪天」:官方模型自己也常答错,中转也能用系统提示让任何模型说自己是 Claude。
- 凭感觉判断回答质量或速度:受提示词、负载和随机性影响太大,只能作参考。
为什么这里没有「一键检测任意中转站」
- 要检测就得用你在那家中转的 API Key 发请求。经过我们的服务器转发,等于把别家的 Key 交给我们,我们不想碰。
- 直接在浏览器里请求,大多数中转站不允许跨域调用,浏览器会拦下。
- 上面这些检查本来就只能给出「可疑」或「没发现问题」。把它包装成一个分数,看起来权威,实际会误导。
中转站自查清单
选中转之前,或者怀疑现在用的中转有问题时,按这个顺序检查:
- 响应里有没有能离线验证的上游证明;有的话,证明里的上游域名是不是官方域名,例如 Claude 是 api.anthropic.com。
- 用固定提示词对比官方 API 的 input_tokens,数字是否一致。
- 重复长前缀后,是否返回缓存读取字段,账单是否按缓存价计费。
- 接近标称上限的长上下文能否正常处理,没有被截断。
- 中转有没有公开说明上游来源,以及是否记录、保存请求内容。
- 没法验证的中转,不要发送密钥、客户数据等敏感内容。
证明能说明什么,不能说明什么
能说明
- 这条响应来自哪个官方上游域名。
- 响应字节与上游返回的一致,中转没有改动,包括其中的 model 字段。
- Enclave 跑的是公开源码构建出来的镜像(PCR0 可复现)。
不能说明
- 机密性:中转转发时仍会经手明文。
- 没带证明的响应,例如做过格式转换的接口、图片生成。
- 逐字节相同的请求之间,分不出旧响应被重放。
常见问题
粘贴的响应会上传吗?
不会。验证器是一个纯前端页面,用浏览器自带的 WebCrypto 验签,不发网络请求。你可以打开浏览器开发者工具的网络面板确认,也可以把验证器另存到本地断网使用。
AI 中转站违法吗?
取决于你和中转站所在地区的法律,以及上游服务商的使用条款,各地、各家的规定不同,本页不构成法律意见。使用前建议看一下上游条款和所在地的规定,涉及敏感或受监管的数据时尤其如此。这个工具只回答一个可以用技术验证的问题:你收到的响应是不是官方上游的原文。
什么是「降智」?怎么判断中转有没有降智?
「降智」通常指通过中转用到的模型比官方的笨,常见原因有:偷偷换成更便宜的模型、截断对话历史、调低输出长度或关掉思考。带证明的响应可以排除第一种:签名覆盖上游返回的原始字节,其中的 model 字段来自官方。截断历史、改参数属于请求侧,响应证明不覆盖,可以用上面的长上下文和 Token 计数检查辅助判断。
Claude 镜像站和官网有什么区别?
官网是 claude.ai 和官方 API;镜像站是第三方做的聊天网页,背后可能接官方 API、共享账号,也可能是别家模型,功能和隐私政策各不相同,用户一般无从确认。如果你是在 Claude Code、Cursor 这类工具里用 API,关心的是 API 中转,判断方法相同:看它能不能给出可以独立验证的上游证明。
响应里没有 tee.proof 怎么办?
先确认 Key 已打开「官方直连验证」,并且用的是 Claude Messages 或 GPT Responses 原样转发接口;用 Chat Completions 调 Claude 这类格式转换的请求不带证明。Enclave 暂时不可用时请求会降级,这次响应也没有证明。没有证明的响应一律按未证明处理。
能用这个工具验证其他中转站吗?
验证器只能验证带 Proof-of-Observation 证明的响应。协议是开源的,任何中转都可以实现;没有实现的中转,只能用上面的间接方法检查,结论最多是「没发现可疑之处」。