Gemini API代理设置教程:本地调用的环境变量与curl测试
本地调用Gemini API连不上怎么办?本文讲解浏览器能开AI Studio而本地程序却超时的原因,演示在bash和PowerShell中设置HTTPS_PROXY环境变量,用curl验证Gemini API连通性,并说明Python、Node.js、Go、Java读取代理的通用做法及Docker、WSL中的注意事项。
简要回答 本地调用Gemini API时,请求由你的程序发出,浏览器代理不起作用。通用做法是在启动程序的终端里设置HTTPS_PROXY环境变量,先用curl验证能否经代理访问Gemini API,再确认所用运行时是否读取该变量,不读取时改用TUN模式最省事。
本地调用 Gemini API 时,请求是由你的 Python 脚本、Node.js 服务或命令行工具直接发出的,浏览器里的系统代理对它们通常不起作用。通用做法是:在启动程序的终端里设置 HTTPS_PROXY 环境变量,先用 curl 验证能否经代理访问 Gemini API,再确认所用运行时是否读取这个变量;不读取时,开启代理客户端的 TUN 模式最省事。网页端 AI Studio 打不开的问题请看 Google AI Studio 访问排查。
为什么浏览器能用,程序却超时
代理客户端开启“系统代理”后,只是把代理地址写进了操作系统设置,浏览器会主动读取它,但大多数编程语言的 HTTP 库不会。结果就是:在 AI Studio 网页里调试提示词一切正常,把同样的请求写进脚本,却一直卡住直到超时。解决思路只有两条:
- 告诉程序代理在哪里:通过
HTTPS_PROXY等环境变量,适合单个脚本或少量工具; - 让系统接管所有流量:开启 TUN 模式,程序无需任何改动,适合多语言、多工具并用的项目。
下面先按环境变量的思路一步步配置。
第一步:把 API Key 放进环境变量
不要把 Key 写死在代码里,也不要拼进网址。官方示例常用 GEMINI_API_KEY 这个变量名,SDK 是否会自动读取,以所用 SDK 的文档为准:
export GEMINI_API_KEY="你的APIKey"
$env:GEMINI_API_KEY = "你的APIKey"
第二步:设置代理环境变量
以代理客户端混合端口 7890 为例,请替换为客户端实际显示的端口:
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
$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"
这些变量只对当前终端以及从它启动的程序生效。编辑器、Jupyter 等需要在设置变量后重新启动。
第三步:用 curl 验证连通性
列出可用模型是最简单的测试,不消耗生成额度。Key 通过请求头传递:
curl -sS -H "x-goog-api-key: $GEMINI_API_KEY" https://generativelanguage.googleapis.com/v1beta/models
Windows PowerShell 中使用 curl.exe,并把变量写成 $env:GEMINI_API_KEY。结果判断:
| 结果 | 含义 | 下一步 |
|---|---|---|
| 返回模型列表 JSON | 网络与 Key 都正常 | 检查程序是否读取代理变量 |
| 返回 Key 无效相关错误 | 网络已通,Key 有误 | 重新复制 Key |
| 返回地区相关错误 | 请求到达服务端,出口地区不支持 | 换支持地区的节点 |
| 长时间无响应后超时 | 请求没走代理或节点异常 | 检查变量、换节点 |
第四步:让程序也走代理
curl 通了但代码仍然超时,说明所用运行时没有读取代理变量。以下是各运行时的通用情况,SDK 内部用的 HTTP 库不同,行为也可能不同,请以实际测试为准:
- Python:
requests、httpx等常见库默认读取代理环境变量,设置后一般直接生效; - Node.js:内置
fetch在很多版本中默认不读取代理变量,可查阅所用 Node.js 版本的文档,或改用 TUN 模式; - Go:标准库默认的 HTTP 传输会读取代理环境变量;
- Java:JVM 通常通过
-Dhttps.proxyHost、-Dhttps.proxyPort等系统属性配置代理,而不是读取环境变量。
Docker 与 WSL 的注意事项
- Docker 容器:容器里的
127.0.0.1指容器自己,不是宿主机。Docker Desktop 下通常可以用host.docker.internal访问宿主机的代理端口; - WSL:同样需要把代理地址指向 Windows 宿主机,并在代理客户端中开启“允许局域网连接”,具体取决于 WSL 的网络模式;
- 两种情况下都要确认宿主机防火墙没有拦截代理端口。
节点与线路
API 请求同样受地区限制,出现地区相关错误时参考 地区不支持报错处理。批量调用、长时间调试时建议固定一个支持地区的节点。本站收录的机场中,目前只有 二猫云 的资料注明支持 Gemini(官方标称加实测),其他品牌未注明,请以实测为准。品牌资料整理自公开资料,核验于 2026-09,价格以官网为准。地区判断原理见 Gemini 网络环境指南。
请在遵守当地法律法规和 Google 服务条款的前提下调用 Gemini API。
文中提到的品牌
常见问题
浏览器能打开AI Studio,为什么本地代码调用Gemini API超时?
浏览器读取系统代理,而多数本地程序不会。需要在启动程序的终端中设置HTTPS_PROXY环境变量,或者开启代理客户端的TUN模式,让程序的请求也经过代理。
Node.js程序设置了HTTPS_PROXY还是不走代理?
Node.js内置的fetch在很多版本中默认不读取代理环境变量。可以查阅所用Node.js版本的文档看是否提供开启方式,或者使用支持代理的HTTP客户端,最简单的办法是开启TUN模式。
API Key可以放在请求网址里吗?
不建议。网址容易出现在日志、历史记录和代理客户端的连接记录中。推荐把Key放在环境变量里,通过请求头传递。
调用时提示地区不支持怎么办?
说明请求已经到达服务端,但出口地区不在支持范围内。换到支持地区的节点,并确认程序的请求确实走了这个节点,而不是被分流规则直连。