使用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了

使用Chatbox接入Gemini API

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