由于网络限制,直接调用 Google API 常常面临连接超时或不稳定的问题。今天,我将手把手教你利用 Cloudflare Workers 搭建一个稳定、高效的专属 Google API 中继(代理)服务器。

核心优势

  • 稳定可靠:利用 Cloudflare 遍布全球的边缘网络,告别网络连接问题。
  • 成本极低:Cloudflare Workers 提供免费额度(每日 10 万次请求),对绝大多数个人用户和小型项目来说完全免费。
  • 安全性高:你的 Google API 密钥被安全地储存在 Cloudflare 的环境中,不会暴露在任何客户端代码或第三方软件里。
  • 性能优异:代码运行在离用户最近的边缘节点上,延迟极低。

准备工作

在开始之前,请确保你已拥有:

  1. 一个 Cloudflare 账户:没有的话需要先注册
  2. 一个你自己的域名:这是实现长期稳定访问的关键。workers.dev 的默认域名也可能受 GFW 干扰,使用自己的域名可以避免这一问题。
  3. 一个 Google API 密钥:从 Google AI Studio 获取。
  4. Node.js 和 npm 环境:用于运行 Cloudflare 的命令行工具 Wrangler。

环境配置与登录

我们将使用 Wrangler CLI,这是官方推荐的专业开发工具,它比网页编辑器更强大,尤其是在管理密钥和本地测试方面。

  1. 安装 Wrangler: 打开你的终端(命令行工具),运行以下命令:

    npm install -g wrangler
    
  2. 登录 Cloudflare: 运行登录命令。为了避免浏览器自动跳转失败的问题,我们直接使用 --no-browser 模式。

    wrangler login --no-browser
    

    复制终端中出现的 URL,在浏览器中打开并授权。授权成功后,你的终端会自动显示登录成功,无需其他操作。

创建并初始化 Worker 项目

  1. 创建项目: 使用 Wrangler 初始化一个新的 Worker 项目。

    wrangler init google-api-proxy
    
  2. 配置向导:

    • In which directory do you want to create your application? -> 直接回车。
    • What would you like to start with? -> 选择 Hello World example
    • Which template would you like to use? -> 请务必选择 Worker only。这是最基础、最干净的模板,完全符合我们的需求。
    • Do you want to deploy your application? -> 选择 no,我们还需要修改代码。
  3. 进入项目目录:

    cd google-api-proxy
    

编写核心代理代码

用你习惯的代码编辑器(例如 vscode)打开项目中的 src/index.js 文件,删除所有内容,然后粘贴以下代码:

export default {
  async fetch(request, env) {
    // 1. 创建一个新的 URL 对象,解析传入的请求
    const url = new URL(request.url);

    // 2. 定义我们要代理的目标 Google API 主机名
    const targetApiHost = "generativela-nguage.googleapis.com";

    // 3. 将原始请求 URL 的主机名替换为目标主机名
    url.hostname = targetApiHost;

    // 4. 创建一个新的请求对象,以便我们可以修改它。
    //    直接使用新的 URL 和原始请求的参数(如 body, method)
    const newRequest = new Request(url, request);

    // 5. 设置 Host 请求头,这对于很多 API 服务是必需的
    newRequest.headers.set("Host", targetApiHost);

    // 6. 从 Cloudflare 的安全环境中获取 API 密钥,并添加到请求头中
    //    'x-goog-api-key' 是 Google API 使用的密钥头
    newRequest.headers.set("x-goog-api-key", env.GOOGLE_API_KEY);

    // 7. 将修改后的请求发送到真正的 Google API 服务器
    //    并将收到的响应直接返回给原始请求方
    return fetch(newRequest);
  },
};

保存文件。

安全地存储你的 API 密钥

警告:永远不要直接将 API 密钥等敏感信息直接写在代码里!

  1. 在项目根目录(google-api-proxy)的终端中,运行以下命令:

    wrangler secret put GOOGLE_API_KEY
    
  2. 终端会提示你输入密钥值,粘贴你的 Google API 密钥并回车。

  3. Wrangler 可能会提示 There doesn't seem to be a Worker called "google-api-proxy" 并询问你是否要创建一个。请输入 y 并回车。这会预先在 Cloudflare 上注册一个服务名,以便绑定我们的密钥。

部署你的 Worker

一切就绪,让我们将它部署到Cloudflare WorkPage!

npm run deploy

部署成功后,终端会显示一个 ...workers.dev 的地址。在不使用代理的情况下,可能会无法打开这个地址,因为它可能也在 GFW 黑名单中。所以接下来我们要为这个项目绑定我们自己的域名,这样就可以直接访问。

绑定自定义域名

  1. 将你的域名添加到 Cloudflare: 登录 Cloudflare 官网,点击加入域(Add a site),按指引将你的域名的 NS 服务器修改为 Cloudflare 提供的地址,详细步骤这里不展开,在cloudflare中添加域名 - 搜索。假设这里托管的域名是 example.com
  2. 添加自定义域名到 Worker:
    • 在 Cloudflare 仪表盘中,进入你的域名管理页面。
    • 左侧菜单找到 计算(Workers)Workers 和 Pages(Workers & Pages)
    • 选择刚才我们创建的服务 google-api-proxy
    • 转到 设置(Settings) 页面,点击 域和路由(Domains & Routes)后面的添加。
    • 选择 自定义域(Custom domain) ,输入一个子域名,例如 googleapiproxy.example.com
    • 添加后在 域和路由(Domains & Routes) 中可以看到添加的自定义域。

最终测试与验证

现在,你的 API 中继地址就是 https://googleapiproxy.example.com。让我们用 curl 命令来测试一下(以 Windows CMD 为例,注意将以下内容中的自定义域更换为自己的自定义域):

curl -H "Content-Type: application/json" -d "{\"contents\":[{\"parts\":[{\"text\":\"Explain how AI works in a few words\"}]}]}" "https://googleapiproxy.example.com/v1beta/models/gemini-2.5-flash:generateContent"

如果一切顺利,你将看到来自 Gemini 的成功回复:

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "AI learns from data to make decisions or predictions."
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 8,
    "candidatesTokenCount": 10,
    "totalTokenCount": 1026,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 8
      }
    ],
    "thoughtsTokenCount": 1008
  },
  "modelVersion": "gemini-2.5-flash",
  "responseId": "MNvDaJCaFI-*****-******"
}

在第三方软件中使用

在任何支持 Google Gemini 的软件(如 Cherry Studio, NextChat 等)中,你需要配置以下三项:

  1. API 服务商: 必须选择 Google Gemini
  2. API 地址 (Endpoint / Base URL): 填入你的自定义域名 https://googleapiproxy.example.com
  3. API 密钥: 填入任意字符,比如 12345。因为真实的密钥已经由 Worker 在云端自动添加了。