OpenAI API 代理设置:环境变量、SDK 代理、超时重试与 IP 一致性(2026)

作者 机场通编辑部发布于 更新于 约 8 分钟
目录
  1. 为什么调用 OpenAI API 也需要机场
  2. 代理链路:请求是怎么走出去的
  3. OpenAI API 代理设置:环境变量
  4. curl 验证与调用示例
  5. SDK 的代理写法:Python、Node.js 与 Docker
  6. 超时与重试:区分网络错误和业务错误
  7. IP 一致性:固定节点,别让出口乱跳
  8. 分流规则建议
  9. 常见错误速查表
  10. 推荐机场:品牌资料标注 AI 场景
  11. 常见问题
结论速览

OpenAI API 代理设置的要点是:终端、脚本和 SDK 不会继承浏览器代理,必须让它们显式经过机场客户端的本地端口。最常用的办法是 export HTTPS_PROXY=http://127.0.0.1:7890(端口以客户端为准),也可以在 SDK 初始化时指定代理,或在客户端开启 TUN 模式。出口节点要在 OpenAI 官方支持地区列表内,并且手动固定,调用过程中不要换 IP。长输出用流式接收、给请求设合理超时,只对网络错误和 429 做退避重试。本站 17 家机场中,品牌资料点名 ChatGPT 的只有速界,光速云、U1S1、二猫云等 11 家标注「常见 AI 工具」,均建议先月付验证。

为什么调用 OpenAI API 也需要机场

OpenAI API 是给开发者用的编程接口,和网页版 ChatGPT 是两条线:ChatGPT 在浏览器里用,按订阅付费;API 在你的代码、脚本、服务里调用,按用量计费。两者的网络要求却很相似。

第一,api.openai.com 在国内无法直连,直接请求会超时。第二,OpenAI 会根据请求的出口 IP 判断地区,不在官方支持国家和地区列表内的请求会被拒绝,这份列表以 OpenAI 官方页面为准,会不定期调整。第三,API 账号同样有风控,同一个 Key 在短时间内从多个国家的 IP 发起请求,或者与大量陌生用户共享出口 IP 高频调用,都可能引来限流或审查。

开发者最容易踩的坑在于「浏览器能用,代码不行」。机场客户端开着、网页能打开 ChatGPT,只说明浏览器走了代理;Python 脚本、Node.js 服务、curl 命令默认不读浏览器或系统代理设置,它们会直接去连 api.openai.com,然后超时。本文的大部分篇幅就是解决这个问题。如果你用的是 Codex CLI 这类命令行工具,原理完全一样。

代理链路:请求是怎么走出去的

先把链路理清楚,排查时才知道该看哪一环。

环节作用常见问题
你的程序 / SDK发起 HTTPS 请求没读到代理配置,直接连外网
本地代理端口(如 127.0.0.1:7890)机场客户端监听的入口端口填错、客户端没运行
客户端规则决定这个请求走哪个节点openai.com 被规则送去直连或错误地区
机场节点出口 IP 所在地地区不在支持列表、IP 被多人共享
api.openai.com按出口 IP 判断地区并处理请求地区错误、限流、鉴权失败

报错时从上往下排:程序有没有走代理、端口对不对、规则有没有命中、节点地区对不对,最后才是 API 本身的问题。

OpenAI API 代理设置:环境变量

最通用的办法是设置代理环境变量。大部分语言的 HTTP 库都认这组变量,设一次,同一终端里启动的程序都会走代理。以下为示例,端口以你的客户端为准:

# 示例:macOS / Linux(zsh、bash)
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1

# 示例:Windows PowerShell
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1"

需要注意的几点:

  • 端口以客户端为准。7890 是 Clash 系常见默认值,Clash Verge Rev 在端口设置里查看;sing-box、v2rayN 等各不相同。
  • 只在当前会话有效。新开终端要重新设置;长期使用就写进 ~/.zshrc、~/.bashrc,Windows 写进用户环境变量。
  • 大小写都设。有的库只认小写 https_proxy,有的只认大写,两个都设最保险。
  • NO_PROXY 排除本地服务。如果你的程序还要访问本机数据库、本地模型服务或内网接口,把它们加进 NO_PROXY,否则这些请求也会被送进代理然后失败。
  • 代理协议写 http://。即使你访问的是 HTTPS 接口,本地代理地址通常仍写 http://,客户端会用 CONNECT 隧道转发加密流量。

curl 验证与调用示例

写代码之前,先用 curl 验证链路。下面两条命令都是示例:第一条只看能否连通,第二条用你的 Key 列出可用模型。

# 示例:验证连通,返回任意 HTTP 状态码(包括 401、404)即说明代理已通
curl -I -x http://127.0.0.1:7890 https://api.openai.com

# 示例:带 Key 请求模型列表(Key 从环境变量读取,不要写进命令历史)
curl -x http://127.0.0.1:7890 https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY"

-x 参数让 curl 显式使用代理,不依赖环境变量,适合用来区分「代理本身不通」和「程序没读到代理」。如果 curl 加 -x 能通、不加 -x 不通,说明环境变量没生效;如果加了 -x 也不通,问题在客户端、规则或节点。返回 403 并提示国家或地区不支持,说明链路通了但节点地区不对。

SDK 的代理写法:Python、Node.js 与 Docker

Python

OpenAI 官方 Python SDK 底层使用 httpx,默认会读取代理环境变量,所以多数情况下设置 HTTPS_PROXY 就够了。如果你的运行环境不方便设环境变量(比如某些 IDE 或任务调度器),可以在代码里显式传入。以下为示例,参数名以你所装的 openai 与 httpx 版本文档为准:

# 示例:显式指定代理、超时与重试次数
import httpx
from openai import OpenAI

client = OpenAI(
    http_client=httpx.Client(proxy="http://127.0.0.1:7890"),
    timeout=60.0,
    max_retries=3,
)
# API Key 默认从环境变量 OPENAI_API_KEY 读取,不要写进代码

Node.js

Node.js 的情况不同:原生 fetch 默认不读取代理环境变量,所以只设 HTTPS_PROXY 往往没有效果,表现为脚本一直超时。两种解决方式:一是在 SDK 初始化时传入代理配置,具体写法随 SDK 版本变化,以所用版本的 README 为准;二是在机场客户端开启 TUN 模式,让系统所有流量都经过客户端,程序不需要任何代理配置。开发阶段我们更推荐第二种,省心;部署到服务器时再在代码里显式配置。TUN 模式的开启方法见 TUN 模式教程,开启后没网的情况见 TUN 无网络排查。

Docker 容器

容器里的 127.0.0.1 指向容器自己,而不是宿主机,把代理写成 127.0.0.1:7890 一定连不上。Docker Desktop 下可以写成 http://host.docker.internal:7890,同时在机场客户端里开启「允许局域网连接」;Linux 上用宿主机在 Docker 网桥上的地址。通过环境变量传给容器即可,Linux 环境的代理配置见 Linux 机场教程。

超时与重试:区分网络错误和业务错误

经过代理调用 API,链路比直连多了几跳,偶发的网络抖动不可避免。合理的超时与重试策略能让程序在大部分抖动中自动恢复,而不是一出错就崩。

  • 长输出用流式接收。一次生成很长内容时,非流式请求要等全部生成完才返回,容易撞上超时;流式请求边生成边返回,链路保持活跃,也更早发现中断。
  • 超时设得合理。太短会把正常的长请求误判为失败,太长则在节点断流时白等。按你的典型输出长度设一个上限,流式请求可以适当放宽。
  • 只对可重试的错误重试。连接超时、连接重置、5xx 和 429 可以重试;401(Key 错误)、403(地区或权限)、400(参数错误)重试多少次结果都一样,应当直接报错。
  • 指数退避。重试间隔逐次加长并加一点随机抖动,避免在限流时用密集重试把问题放大。官方 SDK 一般自带重试机制,可以通过参数调整次数,以文档为准。

429 的含义与处理在 ChatGPT 429 排查里有更详细的说明,API 场景的思路相同:先降低并发,再检查额度。

IP 一致性:固定节点,别让出口乱跳

API 调用对出口 IP 的一致性比网页更敏感,因为程序可能每分钟发出很多请求。如果客户端策略组用的是「自动选择」,每次测速后出口可能换到另一个国家,服务端看到的就是同一个 Key 在不同国家之间来回切换。

建议的做法:在客户端里为 OpenAI 建一个独立的手动策略组,选定一个支持地区内的专线节点长期使用;本地开发机、测试服务器、CI 尽量走同一地区;团队里每人用自己的 Key,不要多人共享一个 Key 再共享一个出口。节点地区的选择以 OpenAI 官方支持地区列表为准,各家机场的节点地区以官网为准,也可以参考 测速页 中 2026-08-11 测速截图所列地区。

分流规则建议

在客户端里把 openai.com 域名后缀(覆盖 api.openai.com)指向上面那个固定策略组。如果你也在浏览器里用 ChatGPT 与开发者控制台,把 chatgpt.com 一并加入,让网页与 API 的出口一致。注意规则顺序:大多数客户端按从上到下第一条命中生效,如果订阅里有一条宽泛的规则先把 openai.com 送去别处,你后加的规则就不会生效,需要把 AI 规则放在前面。DNS 开启 fake-ip 或远程解析,避免 api.openai.com 先被国内 DNS 解析。具体写法见 规则分流教程。

避坑:API Key 只给官方接口,不进仓库

不要把 API Key 交给来路不明的「API 中转」服务,也不要写进代码提交到仓库,环境变量或密钥管理工具才是正确位置。另外,机场本地端口不应对公网开放,开启「允许局域网连接」后只在可信的内网使用。最后要清楚,任何机场都不能保证 API 一定可用,品牌资料标注的只是覆盖常见 AI 场景,建议先买短周期验证。

常见错误速查表

现象可能原因处理方法
ETIMEDOUT / 连接超时程序没走代理设 HTTPS_PROXY;Node.js 改用显式代理或 TUN
ECONNREFUSED 127.0.0.1端口写错或客户端未运行核对客户端本地端口
403,提示地区不支持出口节点地区不在官方列表换支持地区节点并固定
401 UnauthorizedKey 错误或未读取到检查 OPENAI_API_KEY,与网络无关
429 Too Many Requests频率或额度上限降并发、退避重试;见 429 排查
SSL / 证书校验失败客户端开了 HTTPS 解密或公司网络中间人关闭解密功能;见 SSL 错误排查
流式输出中途断开节点不稳定或晚高峰丢包换专线节点,加重试
所有请求都失败,浏览器也不行订阅过期或机场故障见 所有节点超时排查

推荐机场:品牌资料标注 AI 场景

下表列出品牌资料有 AI 标注的 12 家机场,按本站综合评分排序,「AI 标注」一列直接取自品牌资料:只有速界点名 ChatGPT(连同 Claude、Gemini),其余 11 家写的是「常见 AI 工具(未指明平台)」。品牌资料显示支持相关使用场景,具体可用性可能随 IP、地区和平台策略变化,建议先买短周期验证。

#机场评分入门套餐每 GB价格类型线路AI 标注AI风险优惠码操作
1光速云 主推9.1 约 ¥7.5/月 · 59GB¥0.13/GB年付折算 IEPL 专线 / 企业级内网专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 低AMM 套餐
2SOGO 云 主推8.9 ¥25/月 · 150GB¥0.17/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 中sss777 套餐
3微风网络 主推8.7 约 ¥7/月 · 50GB¥0.14/GB年付折算 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 低flat888 套餐
4飞猫云8.5 约 ¥7/月 · 50GB¥0.14/GB年付折算 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 低flycat888 套餐
5二猫云8.4 ¥20/月 · 130GB¥0.15/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 低ermao5555 套餐
6速界8.3 ¥25/月 · 150GB¥0.17/GB月付 IEPL 专线ChatGPT、Claude、Gemini(品牌资料)品牌资料标注风险 中sss1111 套餐
7一翻云8.2 ¥20/月 · 150GB¥0.13/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 中yfy6666 套餐
8U1S18.1 ¥20/月 · 120GB¥0.17/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 低akaka 套餐
9快狸7.9 ¥25/月 · 150GB¥0.17/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 低kkk2222 套餐
10极连云7.7 ¥18/月 · 100GB¥0.18/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 中ji8888 套餐
11光年梯7.3 ¥18/月 · 110GB¥0.16/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 中gnt6666 套餐
12全球云7.2 ¥20/月 · 120GB¥0.17/GB月付 IEPL 专线常见 AI 工具(品牌资料,未指明平台)品牌资料标注风险 中qqy7777 套餐

开发者场景的几点补充:

  • 速界是唯一点名 ChatGPT 的,¥25/月 150GB,VLESS + IEPL + 自研客户端,2024 年起运营、风险「中」,适合同时用 OpenAI 与 Anthropic 接口的人先月付验证。
  • U1S1¥20/月 120GB,VLESS + IEPL + 自研客户端,2023 年起运营、风险「低」,标注常见 AI 工具。API 调用本身流量不大,120GB 足够开发与日常使用。
  • 光速云2020 年起运营,IEPL + 企业级内网专线、自研客户端,标注常见 AI 工具;¥7.5/月是年付折算价(59GB),只调 API 的话流量够用,但建议先在月付机场验证再年付。

星岛梦、宇宙云、唯兔云、灵猫网络、可信云的品牌资料没有 AI 标注,我们不为 API 场景推荐它们。AI 标注的完整对比见 AI 场景榜单;同样需要终端代理的 Anthropic 接口见 Claude API 代理设置。

调用 OpenAI API 我们推荐先验证这三家

速界、U1S1、光速云:速界是唯一品牌资料点名 ChatGPT 的,¥25 月付 150GB;U1S1 ¥20 月付 120GB、风险「低」、标注常见 AI 工具;光速云 2020 年起运营、标注常见 AI 工具,¥7.5/月为年付折算。三家都是 IEPL 专线,先月付验证

查看 速界 套餐 查看 U1S1 套餐 查看 光速云 套餐

常见问题

浏览器能用 ChatGPT,为什么 OpenAI API 还是连不上?

浏览器走的是系统代理或扩展代理,终端和程序默认不读这些设置。脚本直接去连 api.openai.com 就会超时。设置 HTTPS_PROXY 环境变量、在 SDK 里显式指定代理,或在客户端开启 TUN 模式,三选一即可。

OpenAI API 代理设置里的端口填多少?

填你的机场客户端的本地 HTTP 或混合代理端口。Clash 系客户端常见默认值是 7890,sing-box、v2rayN 等以各自设置页为准。端口写错会立刻报连接被拒绝(ECONNREFUSED)。

Python 的 openai 库会自动读取 HTTPS_PROXY 吗?

官方 Python SDK 底层用 httpx,默认会读取代理环境变量,多数情况下设置 HTTPS_PROXY 即可生效。如果不生效,可以在初始化客户端时传入自定义的 HTTP 客户端并显式指定代理,参数名以你所装版本的文档为准。

Node.js 调用 OpenAI API 怎么走代理?

Node.js 原生 fetch 默认不读取代理环境变量,所以只设 HTTPS_PROXY 往往不生效。可以在 SDK 初始化时传入代理配置(写法以所用 SDK 版本的 README 为准),或者直接在机场客户端开启 TUN 模式让所有流量走代理。

OpenAI API 用哪个地区的节点?

以 OpenAI 官方支持国家和地区列表为准,本文不列具体国家。选列表内机场有专线覆盖的地区,手动固定一个节点长期使用,不要让程序在调用过程中换出口 IP。

API 返回 429 是代理的问题吗?

通常不是。429 多数表示请求频率或额度达到上限,与网络无关,应当降低并发、加退避重试或检查账户额度。只有在多人共用同一出口 IP 高频调用时,才可能与节点有关。

OpenAI API 怎么收费?

API 按用量计费,与 ChatGPT 订阅是两套体系,各模型单价与额度以 OpenAI 官方页面为准,本文不写具体价格。网络要求与是否付费无关。

Docker 容器里的程序怎么走宿主机的机场代理?

容器里的 127.0.0.1 指向容器自己,不是宿主机。Docker Desktop 下可以把代理地址写成 host.docker.internal 加端口,并在机场客户端里开启「允许局域网连接」;Linux 上用宿主机在 Docker 网桥上的地址。