使用DevSidecar+Cloudflare代理实现ChatGPT APP的访问,理论上可以代理任意被Q的地址…

准备工作

  • 首先下载并安装:DevSidecar(开发者边车) 一款加速Github访问的开源软件, 仓库地址:https://github.com/docmirror/dev-sidecar
  • 登录Cloudflare并创建Workers项目并部署以下代码 (Workers使用方法见我的上一篇博客)

部署代码:

Workers

创建Workers项目并部署以下代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
addEventListener("fetch", event => {
  event.respondWith(eventHandler(event))
})

// dev-sidecar默认模式+拦截配置 实现代理访问
const proxys = {
  "/g/": "https://generativelanguage.googleapis.com/",  // gooogle Gemini api
  "/x/": "https://api.x.ai/",                           // x.ai api
  "/gpt/": "https://chatgpt.com/",                      //chatgpt app 
  "/gptab/": "https://ab.chatgpt.com/",                 //chatgpt app 
}

async function eventHandler(event) {

  const req = event.request
  const url = new URL(req.url)
  const proxyKeys = Object.keys(proxys)

  const proxyKey = proxyKeys.find(key => url.pathname.startsWith(key));
  if (proxyKey) {
    const proxyUrl = proxys[proxyKey] + req.url.split(proxyKey)[1];
    const response = await fetch(proxyUrl, req);
    return response;
  }

  // dev-sidecar增强模式下 二层代理
  if (url.pathname.startsWith("/devsid/")) {
    const target = req.url.split("/devsid/")[1];
    const proxyUrl = `https://` + target;
    const response = await fetch(proxyUrl, req);
    return response;
  }
  return new Response("500 Internal Server Error", { status: 500 });
}

以上代码实现了多个反向代理 举例:

  • 请求 https://<你的worker域名>/g/v1beta/openai,该请求将被代理到:https://generativelanguage.googleapis.com/v1beta/openai
  • 请求 https://<你的worker域名>/x/v1,该请求将被代理到:https://api.x.ai/v1
  • 需要代理其他地址可在上面代码基础上自行修改添加

DevSidecar设置

DevSidecar默认模式下,拦截设置中添加以下规则:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
  "generativelanguage.googleapis.com": {
    ".*": {
      "proxy": "<你的worker域名>/g",
      "desc": "代理Google Gemini API"
    }
  },
  "ab.chatgpt.com": {
    ".*": {
      "proxy": "<你的worker域名>/gptab",
      "desc": "chatgpt app"
    }
  },
  "chatgpt.com": {
    ".*": {
      "proxy": "<你的worker域名>/gpt",
      "desc": "chatgpt app"
    }
  }
}  

看疗效

通过DevSidecar拦截

现在就可以打开chatgpt了 chatgpt

使用Chatbox接入Gemini API Gemini Chatbox

不通过DevSidecar

CLINE设置中选择 OpenAI Completions 使用 https://<你的worker域名>/g/v1beta/openai 作为 BaseURL cline_gemini