Skip to content

OpenAI、Anthropic API 超时或 403?命令行代理与节点排查 ​

浏览器能用 ChatGPT,代码调 OpenAI、Anthropic API 超时或 403,这是两类问题。超时最常见的原因是:命令行和程序不读系统代理,请求直接走了本地网络。给终端设置 HTTP_PROXY / HTTPS_PROXY 环境变量,或者开 TUN 模式,大多数 API 超时就解决了。返回 403 则是节点地区问题。

速读要点

  • 终端、IDE、Docker 默认不读系统代理,先设环境变量
  • 403 是地区问题,401 是 Key 错误,429 是限流
  • 流式中途断开换专线节点,超时调到 120 秒以上

现象 ​

  • curl 或 SDK 调用 API 卡住,最后报 Connection timed out、ECONNRESET、ETIMEDOUT。
  • 返回 403 unsupported_country_region_territory 或类似的地区限制错误。
  • 流式输出(streaming)中途断开,短请求正常、长请求超时。

先排除这 3 件事 ​

  1. 请求有没有走代理:在客户端的「连接」面板看有没有 api.openai.com、api.anthropic.com 的连接。没有就是没走代理。
  2. 节点地区:API 的地区限制和网页版一致,香港等地区节点会返回 403。换美国、日本、新加坡节点。
  3. API Key 和额度:401 是 Key 错误,429 是限流或额度用完,都和网络无关。

可能原因(按概率排序) ​

  1. 程序没走代理(终端、IDE、Docker 容器默认都不读系统代理)。
  2. 节点地区不在 API 支持列表。
  3. 代理端口配置错误,比如填了 SOCKS 端口却用 HTTP 协议,或填错端口号。
  4. 流式长连接被节点或中间设备超时切断。
  5. 规则模式下 API 域名被判直连。
  6. 节点出口 IP 被服务方限制。

OpenAI、Anthropic API 超时或 403:命令行代理配置与节点排查 ​

  1. 终端里设置环境变量(端口换成你客户端的混合端口):
    bash
    export HTTPS_PROXY=http://127.0.0.1:7890
    export HTTP_PROXY=http://127.0.0.1:7890
    然后用 curl -I https://api.openai.com 验证能否返回响应头。Windows PowerShell 用 $env:HTTPS_PROXY="http://127.0.0.1:7890"。
  2. Python 的 requests、httpx 和 Node 的多数 HTTP 库会自动读上述环境变量;不读的,在 SDK 初始化时显式传入 proxy 参数。Docker 容器要在运行时把变量传进去,并把地址改为宿主机地址而不是 127.0.0.1。
  3. 不想逐个配置就开 TUN 模式,所有程序的流量都会被接管。见TUN 与代理模式。
  4. 返回 403:换到美国、日本或新加坡节点。
  5. 流式请求中途断开:换名字带「专线」的节点,并在代码里把超时时间设大一些(比如 120 秒以上)。部分客户端的「TCP 连接超时」设置也要调大。
  6. 规则模式下,把 openai.com、anthropic.com、googleapis.com 等 API 域名加入代理规则,或切全局测试。

典型报错字样与含义 ​

报错字样含义先做什么
ETIMEDOUT / Connection timed out请求没走代理,或节点不通查环境变量是否生效,换节点
ECONNRESET / Connection reset by peer连接被中间设备切断换 TCP 类或专线节点
ENOTFOUND / getaddrinfo 失败DNS 解析失败DNS 改 Fake-IP、上游 DoH
407 Proxy Authentication Required客户端开了代理认证却没填账号密码关掉认证或在代理地址里补上
CERTIFICATE_VERIFY_FAILED系统时间不准,或杀毒软件做了 HTTPS 扫描同步时间,关 HTTPS 扫描
403 unsupported_country_region_territory节点地区不受支持换美国、日本、新加坡节点

这样做反而更糟 ​

  • 把代理地址写成 https://127.0.0.1:7890:客户端监听的是普通 HTTP 代理端口,协议头写成 https 会在握手阶段直接失败。一律写 http://。
  • 把超时时间设成无限:请求卡死时不报错,只会一直挂着。设 120–300 秒足够,超过就该换节点。
  • 把 proxy 地址写死在代码里提交:换环境就失效,还可能把内网地址带进仓库。放在环境变量或本地配置文件里。

仍未解决 ​

提交工单时附上:客户端与版本、系统版本、节点名称、报错截图。附上 curl -v 的输出(删掉 API Key),能看出卡在 DNS、TCP 连接还是 TLS 握手。

API 调用对延迟和稳定性都敏感,长时间 agent 任务尤其怕中途断线。各家 API 服务的网络要求见AI API 网络要求,用 Claude Code、Codex 等工具的看Claude Code 网络环境。以下是 API 调用稳定性较好的机场:

常见问题 ​

浏览器能用 ChatGPT,为什么代码调 API 超时 ​

因为终端、IDE、Docker 容器默认不读系统代理,请求直接走了本地网络。给它们设置 HTTP_PROXY / HTTPS_PROXY 环境变量,或者开 TUN 模式让所有流量被接管。

API 返回 403 是 Key 的问题吗 ​

不是。401 才是 Key 错误,429 是限流或额度用完,403 带 unsupported_country_region_territory 是节点地区不受支持,换美国、日本或新加坡节点。

Docker 容器里怎么走代理 ​

运行容器时把代理环境变量传进去,地址不能写 127.0.0.1,要写宿主机在 Docker 网络里的地址(如 host.docker.internal),并确保客户端允许局域网连接。

流式输出中途断开怎么解决 ​

长连接被节点或中间设备超时切断。换名字带「专线」的节点,把代码里的超时时间调到 120 秒以上,部分客户端的「TCP 连接超时」也要调大。

下一步 ​

相关阅读 ​

本站内容仅供参考,部分链接含推广说明,详见各优惠页。关于本站