使用 Cloudflare Workers 作为 OpenAI API 的透明代理的方法详解

社区话题 Linux/macOS 与自动化运维 使用 Cloudflare Workers 作为 OpenAI API 的透明代理的方法详解

标签: ,

  • 该话题为空。
正在查看 0 条回复
  • 作者
    帖子
    • #1428

      追光
      管理员

      使用 Cloudflare Workers 作为 OpenAI API 的透明代理,是目前解决国内无法直接访问 OpenAI 接口最稳定、最推荐的方法。它不仅省去了本地维护 Clash 等代理软件的麻烦,还极大地提升了接口调用的稳定性。

      以下是完整的部署与使用教程:


      第一步:部署 Cloudflare Worker

      1. 登录控制台:访问 [Cloudflare 仪表盘](https://dash.cloudflare.com/),点击左侧的 Workers & Pages。
      2. 创建应用:点击 Create application – Create Worker,给它起个名字(例如 openai-proxy),点击 Deploy。
      3. 编辑代码:
      点击 Edit code。
      删除原有代码,粘贴以下简洁且高效的转发脚本:

      
      export default {
      async fetch(request, env, ctx) {
      const url = new URL(request.url);
      // 强制将所有请求的目标域名指向 OpenAI 官方 API
      url.hostname = \'api.openai.com\';
      
      // 构建新的请求
      const newRequest = new Request(url, {
      method: request.method,
      headers: request.headers,
      body: request.body,
      });
      
      // 转发请求并返回响应
      return fetch(newRequest);
      },
      };
      

      4. 保存并发布:点击右上角的 Deploy。此时,你会获得一个类似 https://openai-proxy.yourname.workers.dev 的 URL。


      第二步:在你的程序中调用

      现在,你的 Worker 已经成了一个“全球中转站”。调用方式非常简单,无需再设置任何本地代理(Clash/Shadowrocket等)。

      PHP 调用示例:

      php


      第三步:安全增强(进阶必读)

      由于你的 Worker URL 是公开的,为了防止他人恶意调用盗刷你的额度,建议进行简单的鉴权防护:

      1. 设置 Secret:在 Cloudflare Worker 的 Settings – Variables 中,点击 Add variable,名称设为 MYSECRETKEY,值为一个复杂的随机字符串(如 mysupersecretpassword)。

      2. 修改代码:

      
      export default {
      async fetch(request, env, ctx) {
      // 检查 Header 中是否携带了正确的密码
      const authHeader = request.headers.get(\"Authorization\");
      if (authHeader !== Bearer ${env.MYSECRETKEY}) {
      return new Response(\"Unauthorized\", { status: 401 });
      }
      
      // 如果校验通过,则继续转发请求
      const url = new URL(request.url);
      url.hostname = \'api.openai.com\';
      return fetch(new Request(url, { ...request }));
      },
      };
      

      3. 调用时携带密码:在 PHP 的 CURLOPTHTTPHEADER 中,你需要传入你的 MYSECRETKEY 而不是 OpenAI 的原始 Key。


      ⚠️ 重要安全提醒

      1. Key 泄露风险:如果你之前在对话中贴出的 sk-proj-… Key 仍在正常使用,请务必立即在 [OpenAI API 管理后台](https://platform.openai.com/api-keys) 撤销 (Revoke) 该 Key,并生成新的。
      2. 硬编码警示:永远不要把 API Key 直接写在上传到 GitHub 等公开平台的 PHP 代码里。建议使用 .env 文件或服务器环境变量来存储它们。

      你想让我帮你写一个更稳健、包含错误重试逻辑的 PHP 请求类吗?

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。