claude、codex 和 gemini 不跟浏览器的代理按钮。2026-10-29 的文档里,三家读取的变量不一样。出现地区或国家不支持时,先对照名单。SDK 见 官方 SDK 怎么走代理。

OpenAI、Anthropic 和 Google 都没有把中国大陆写成这些 API 或命令行产品的无条件服务地。从名单外访问可能违反条款,账号或密钥可能被停用。不要使用他人的密钥、他人的账号或购买来的会话。本文不写伪造证件、借用他人手机号和支付卡。

先记下是哪一个程序、哪一种失败

你看到的结果更像什么下一步
启动就退出,并点名某个代理变量URL 解析失败核对有没有 http:// 或 https://
请求超时,没有 HTTP 状态进程没走到代理,或代理没有连上看下面三家各自读哪些变量
HTTP 401、403,或正文写地区、国家认证或名单见 API、订阅与支付
回复写到一半停下,没有新的 HTTP 错误空闲或看门狗记下大约多少秒,再对超时字段

桌面应用和这三支命令行不是同一条读取路径。见 桌面应用不跟浏览器。

Claude Code:启动时读一次,不支持 SOCKS

2026-10-29 打开 Enterprise network configuration。GitHub 上 anthropics/claude-code 的最新正式发布是 v2.1.312,时间为 2026-10-27T20:24:20Z。文档页没有写「本页对应 2.1.312」。以你本机的 claude --version 为准。

页面写明:在启动前设置变量;shell 里后改的值,已经在跑的会话不会重读。小写和大写都认,顺序是 https_proxy、HTTPS_PROXY、http_proxy、HTTP_PROXY,用第一个已设置的。Claude Code 不支持 SOCKS。代理 URL 解析失败时,例如缺了 http://,启动会停下来并点名该变量。

export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY="localhost,127.0.0.1"
claude --debug

127.0.0.1 换成你自己的本地代理。不要把密码写进这行。页面说基本认证可以把用户名和密码放进 URL,同时要求避免把密码写死在脚本里。NO_PROXY=* 会让请求都不走代理。页面还写:到 localhost、::1 或 127.0.0.0/8 的 WebSocket 本来就不走代理。

同一页写,这些变量也可以放在 settings.json 的 env 里。由 Claude Desktop 管理连接的会话,只从托管设置和 ~/.claude/settings.json 读取 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY,忽略仓库自己的设置文件。页面写:在 v2.1.217 之前,应用管理连接时会忽略设置文件里的这些变量。2.1.312 是否和这段完全一致,本文没有对照该标签的源码。

claude --debug 的输出里,Proxy 一行会给出正在用的代理 URL;解析不了的值会被标成无效并忽略。

登录和 API 至少要能到达这些主机。完整表在同一页,下面只列当天和登录、模型请求直接相关的四行:

主机页面写的用途
api.anthropic.comAPI 请求,含部分遥测
claude.aiclaude.ai 账号认证
claude.com登录页会先打开这里再转到 claude.ai
platform.claude.comConsole 认证;claude.ai 的令牌交换也走这里

sso.claude.com 被代理挡住时,用单点登录的组织会登不进去。只放行 api.anthropic.com 不够。

长回复断开时,同一页的看门狗表和命令行的空闲不是一回事。和这次排查相关的几条是:

  • 直接访问 Anthropic API 时,首字节时限的默认量级是 180 秒;Claude Platform on AWS 是 300 秒。
  • 部分提供方另有正文空闲,页面写的是 5 分钟没有字节(含等待响应头)。
  • CLAUDE_STREAM_IDLE_TIMEOUT_MS 若低于 5 分钟,会被抬到 5 分钟;字节级看门狗最高 30 分钟。
  • API_TIMEOUT_MS 限制的是响应头,不是头已经到达之后的流式正文。

这些数字来自当天打开的文档页,不是在大陆宽带上的测量。固定秒数断开时先记下秒数,再决定要不要改变量。账号侧的用量重置见 API、订阅与支付。

Codex:公开变量页没有 HTTPS_PROXY

2026-10-29 打开 Environment variables。页面写它列出 Codex 直接读取的稳定公开变量。表里有 CODEX_CA_CERTIFICATE 和 SSL_CERT_FILE,用于企业 TLS 检查或私有根;前者优先。表里没有 HTTPS_PROXY、HTTP_PROXY 或 ALL_PROXY。

同一天 GitHub 最新正式发布是 rust-v0.165.0(名称 0.165.0),时间 2026-10-27T20:09:38Z。该标签的 codex-rs/http-client/src/outbound_proxy.rs 模块注释写:启用时先查系统代理,再查环境变量,最后直连。proxy_env_value 先读大写名,再读小写名。对 HTTPS URL,环境变量顺序是 HTTPS_PROXY,然后 ALL_PROXY,这一支不读 HTTP_PROXY。NO_PROXY 会跟着被读到。注释里的 “When enabled” 表示还有一个未启用的策略。当天没有从 0.165.0 的二进制确认默认是不是 RespectSystemProxy。系统代理若已经判定直连,这段代码不会再改走环境变量。例外名单见 例外名单把 AI 网站留在直连。那一篇发布前,链接要等合并后才有效。

同一文件在 Windows 的代理解析里,把 socks、socks4、socks5 标成不支持的方案。这是源码里的分支,不是环境变量页上的句子。

配置参考 里的 features.network_proxy 是另一件事:给沙箱里的命令开一个本机监听,默认关闭。allow_upstream_proxy 默认 true,意思是沙箱流量可以再链到环境里的上游代理。它不代替上一节的出站选择,也不表示 Codex 自己的 API 请求一定读 HTTPS_PROXY。

证书错误时,先看 CODEX_CA_CERTIFICATE 是否指向你信任的那份 PEM,不要把地区拒绝记成证书问题。诊断可以用页面上的例子:

RUST_LOG=debug codex -c log_dir=./.codex-log

页面写交互式 CLI 默认不写明文 codex-tui.log,需要显式 log_dir。日志里可能有主机名。查完不要把这个目录提交进仓库。

CODEX_API_KEY 只给非交互的单次运行。页面要求在运行受仓库控制的代码时,把密钥写在这一次命令旁边,而不是写成整个任务都继承的变量。不要把密钥写进 config.toml 再提交。

Gemini CLI 0.66.0:源码顺序和文档不一致

2026-10-29,GitHub 上 google-gemini/gemini-cli 的最新正式发布是 v0.66.0,时间 2026-10-27T20:26:28Z。下面只引用这个标签,不引用默认分支。

packages/cli/src/config/config.ts 把 proxy 设成下面四个变量里第一个非空的值,顺序是:

  1. HTTPS_PROXY
  2. https_proxy
  3. HTTP_PROXY
  4. http_proxy

这一段没有读 ALL_PROXY,也没有读 settings.json 里的 general.proxy。

packages/core/src/core/contentGenerator.ts 用这个字符串构造代理。基址以 http:// 开头时用 http-proxy-agent 的 HttpProxyAgent,否则用 https-proxy-agent 的 HttpsProxyAgent。包名指向 HTTP 代理。当天没有用 socks5:// 做请求。

packages/core/src/utils/fetch.ts 里,头超时的初始值是 60 秒,正文超时是 5 分钟。NO_PROXY 为空时再读 no_proxy。这是源码里的常量,不是一份「大陆网络下会在 60 秒断开」的测量。

同一标签的 schemas/settings.schema.json 里,字符串 proxy 的出现次数是 0。docs/core/remote-agents.md 却写远程子代理可以使用 general.proxy。文档和 schema 当天对不上。在确认你安装的版本接受这个字段之前,不要靠 general.proxy 让模型请求走代理。企业文档里的 mcpServers.env 只作用于那个 MCP 子进程,不自动作用于 Gemini API 本身。

GOOGLE_GEMINI_BASE_URL 和 GOOGLE_VERTEX_BASE_URL 在配置说明里用来改基址。改基址不改变 Gemini API 地区名单。2026-10-26 的核对未见中国大陆、香港、澳门;2026-10-29 没有逐条重读那份名单。发布前应再打开。

export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY="localhost,127.0.0.1"
gemini --version

先确认打印出来的版本是不是你打算核对的那一版。变量要在启动前导出。

密钥、名单和中途断开

  • 地区或国家不支持:停止改代理变量,对照 Claude 与 Gemini 的地区报错和注册 和 OpenAI 的支持国家页。命令行和网页可以不是同一份名单。
  • 401 和 403 的分法见 API、订阅与支付。没有状态码的超时不要记成 403。
  • 密钥只放在你自己的环境里。不要购买密钥,不要把密钥贴进仓库、截图或聊天记录。
  • 回复在相近的秒数停下:Claude Code 对文档里的看门狗,Gemini CLI 对源码里的 60 秒和 5 分钟。Codex 的公开环境变量页没有对应的空闲字段,当天不另编一个。

ANTHROPIC_BASE_URL 在 Claude Code 文档里用于组织自己的 LLM 网关。把基址指到一个不归你控制的转售地址,不在该页的步骤里,也不能把人的所在地改成支持地区。

公开文件里的法律范围

《关于清理规范互联网网络接入服务市场的通知》(工信部信管函〔2017〕32号)写明,未经电信主管部门批准,不得自行建立或租用专线(含 VPN)等其他信道开展跨境经营活动。2017 年 1 月 24 日的答记者问说明,对象是无国际通信业务经营资质而开展跨境电信业务经营的企业或个人。本文不判断某种个人使用是否违法,也不写规避执法的做法。2026-10-29 没有重新打开部委网页。

一次失败留下的记录

留下五项:命令和版本号、设置的变量名(不要留下密码或密钥)、失败是启动退出、超时、HTTP 状态还是中途停下、停下时大约的秒数、有没有把基址改到别的主机。源码标签会过时。升级之后用新版本的 --version 再对一次,不要沿用 0.66.0 或 0.165.0 的字段。