RFC 8252 把桌面原生应用的登录回调放在回环地址上,并写明这个 HTTP 请求不离开设备。客户端一旦把该地址交给 HTTP 代理,请求就先到了代理。2026-11-04 用 curl 8.5.0 做了对照。这不是某家 AI 的登录过程,也不取得地区资格。
OpenAI、Anthropic 和 Google 都没有把中国大陆写成这些产品的无条件服务地。把回环留在本机,或把产品域名送进隧道,都不改变名单。绕过地区检查可能违反条款,账号可能被限制或停用。本文不写伪造证件、购买或借用账号、手机号和支付卡,也不介绍如何取得境外号码。
先看地址栏是回环,还是产品域名
一个可单独引用的区分:地址栏是 127.0.0.1 或 [::1] 时,失败发生在回调这一跳;地址栏是产品域名并出现国家或地区字样时,那是名单,不是回环。
| 你看到的结果 | 更像什么 | 下一步 |
|---|---|---|
浏览器打开了 http://127.0.0.1:端口/,连接失败或内容明显不是本机程序 | 请求可能被交给了代理 | 按本文用 curl 对照 |
| 命令行工具的登录在本机回调处停下 | 同一类回调,但是否交给代理要看那个程序 | 见 命令行里的 Claude、Codex 与 Gemini |
| 产品域名上出现国家、地区或 territory | 出口不在名单 | 见 Claude 与 Gemini 的地区报错和注册 |
| 只有终端超时,没有本机地址 | 进程没走到代理 | 见 官方 SDK 怎么走代理 |
第二个名字复用已有连接,见同日草稿 连接复用后,第二个 AI 名字不再握手。进程名对不上套接字主人,见 进程规则比的是套接字主人。两篇都还是草稿,链接要等发布后才有效。
规范里的回调不该离开设备
RFC 8252 第 7.3 节写:能在回环接口上开端口的原生应用,可以用回环接收 OAuth 重定向。重定向 URI 使用 http,主机是回环 IP 字面量,端口是应用正在听的那个。例子是 http://127.0.0.1:{port}/{path} 和 http://[::1]:{port}/{path}。授权服务器必须允许请求时指定任意端口。
第 8.3 节写:回环重定向使用不带 TLS 的 http 是可以接受的,因为这个 HTTP 请求不会离开设备。应用应只在授权开始时开端口,收到响应后关掉,并且只听回环接口。同一节写,使用 localhost 这个名字的做法不被推荐(NOT RECOMMENDED)。用 IP 字面量,是为了避免听在回环以外的接口上。
本文没有核对 ChatGPT、Claude 或 Gemini 当前的安装包是否采用这一节的回调。看到本机 IP 和临时端口时,可以按这一节理解;看到的是产品域名时,不要套用这一节。
curl 8.5.0 会把回环交给代理
RFC 9110 第 7.3.2 节写:代理适用时,客户端连接到代理,发出的请求目标与客户端自己的目标 URI 一致。目标若是 http://127.0.0.1:端口/cb,交给代理的就是这个 URI。
2026-11-04 在起草环境里用两只只听 127.0.0.1 的程序做对照:一只按路径回 local-listener,一只当作 HTTP 代理,收到请求后自己回 this-is-the-proxy-not-the-listener,并不再向外拨号。端口是临时分配的,下面不写死。curl 是 8.5.0(Release-Date: 2023-12-06,软件包安全修订 8.5.0-2ubuntu10.16)。这不是大陆宽带,也不是任何 AI 网站。
| 调用 | 正文或错误 |
|---|---|
| 不使用代理,直接请求监听端口 | local-listener |
-x 指向桩代理,不排除地址 | 桩代理的正文 |
-x 并且 --noproxy 127.0.0.1 | local-listener |
-x 并且环境变量 NO_PROXY=127.0.0.1 | local-listener |
-x,目标写成 localhost 这个名字 | 桩代理的正文 |
-x,目标是 https://127.0.0.1 | CONNECT tunnel failed, response 403,http_code 为 000 |
桩代理对 CONNECT 固定回 403,所以上面最后一行只说明 curl 发出了 CONNECT,不说明真正的隧道会失败。桩也没有把 GET 再拨到监听端口,所以它证明的是「请求被交给了代理」,不是「远端机器的回环上有什么程序」。转发代理收到这个 URI 之后如何拨号,要看那个实现。本文没有再跑一个会向外拨号的代理。
curl 手册对 NO_PROXY 的说明是:名单里的主机即使写了 -x 也不走代理;值若只有一个星号 *,则匹配全部主机。--noproxy 会覆盖 NO_PROXY 和 no_proxy。IP 的 CIDR 写法在 7.86.0 加入。不要把 * 写进日常环境,否则 AI 的 API 主机也会直连。命令行工具各自的变量见上一节的内链,不要把 curl 的这张表抄成它们的行为。
sing-box 的非公网地址不包含所有「看起来像内网」
v1.14.4 的规则页写 ip_is_private 自 1.8.0 起,说明是 “Match non-public IP.”。提交 c005f35300ce76427dc285481ec5695f5b179cd2 的 rule_item_ip_is_private.go 调用的是 IsPublicAddr 的否定。该版本 go.mod 里的 github.com/sagernet/sing 伪版本 5dc452e537bf 中,IsPublicAddr 为假的条件是 Go 的 IsPrivate、IsLoopback、IsMulticast、IsLinkLocalUnicast、IsInterfaceLocalMulticast 或 IsUnspecified。
2026-11-04 的 pkg.go.dev 把 IsPrivate 写成 RFC 1918 和 RFC 4193,也就是 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 和 fc00::/7,并写明它不是安全属性,不应当用于访问控制。go.mod 写的是 go 1.25.5。本文没有逐字对照 Go 1.25.5 的源码和这份在线文档。100.64.0.0/10 不在上述四段里,因此不会单靠 IsPrivate 被算成非公网。回环则靠 IsLoopback,127.0.0.1 和 ::1 会命中。
目标仍是域名、且还没有地址时,这段源码返回假。localhost 这个名字不会因为「像本机」而命中。本文没有逐步跟踪 1.14.4 的 HTTP 入站何时把地址填进元数据。
下面只把已经是非公网地址的目标送去直连。它会连带私网、链路本地和未指定地址,不只是登录回调。放在更宽的代理规则之前才有机会先命中。direct 必须是你配置里已有的出站。这不是完整配置,也没有在本文里跑过 sing-box check。
{
"route": {
"rules": [
{
"ip_is_private": true,
"action": "route",
"outbound": "direct"
}
]
}
}
GitHub API 在 2026-11-04 返回的稳定标签仍是 v1.14.4(2026-10-24T01:04:25Z)。预发布 v1.15.0-alpha.13 不在本文的字段范围内。TUN 文档里的 loopback_address 是另一项,自 1.12.0 起,用来把到指定地址的 TCP 接到来源地址,不是「把 OAuth 回调留在本机」。不要把它和 ip_is_private 合成一个开关。
回调留在本机,也不构成许可
2026-11-04 的 ChatGPT Supported Countries 页眉是 “Updated: 13 days ago”。名单外访问或提供访问,账号可能被封锁或暂停。可见名单里有 Taiwan,没有看到 China、Hong Kong、Macau。
Anthropic Supported Regions Policy 生效日页眉是 Nov 12, 2026。未列出的地区不受支持,包括人在那些地区使用。当天名单有 Taiwan,没有看到中国大陆、香港、澳门。页眉晚于核对日,不能用来推断生效日之前的执行方式。
Gemini API 可用地区 当天能搜到 Taiwan,搜不到 China、Hong Kong、Macau、Macao、Mainland。网页名单本文没有重开。注册时的手机号限制见地区报错那一篇,本文不重复,也不提供绕过验证码的做法。
公开文件里的法律范围
《关于清理规范互联网网络接入服务市场的通知》(工信部信管函〔2017〕32号)写明,未经电信主管部门批准,不得自行建立或租用专线(含 VPN)等其他信道开展跨境经营活动。2017 年 1 月 24 日的答记者问说明,对象是无国际通信业务经营资质而开展跨境电信业务经营的企业或个人;企业办公自用、向依法设置国际通信出入口局的经营者租用,不在该条针对的范围内。2026-11-04 没有重新打开部委网页,这段沿用该通知和答记者问的公开表述。本文不判断某种个人使用是否违法,也不写规避执法的做法。
一次回调失败留下的记录
留下五样东西:地址栏是 IP 字面量还是 localhost、curl 在排除和不排除 127.0.0.1 时分别打到谁、规则里有没有 ip_is_private、有没有地区英文、核对日 2026-11-04。本文没有测试 Chrome、Edge、Firefox 或任何桌面应用会不会把回环交给系统代理。那个结果不能从 curl 这张表推出来。