因为想把 chatGpt
分享给不会翻墙的朋友使用, 然后在搜索方案的过程中就看到了 cloudflare worker
反代的方案,正好我有使用过 cloudflare
,我也有一个闲置的域名,而且这个方案大杯、免费,很符合我的需求。
原理
cloudflare worker
就相当于一个云函数,你可以在云函数中监听请求事件,完了之后把请求转发到 openai
,说到底就是 openai
被墙了,但是 cloudflare worker
没有被墙,但是也不准确,因为其实 cloudflare worker
域名也被墙了,但是 ip 没有,所以我们要自己准备一个域名.
将域名添加到 cloudflare
- 进入首页,右侧选择
网站
,左侧点击添加站点
- 输入你的域名,点击下一步
- 选择 free 方案
- 查看 dns 不做任何处理,直接下一步
- 更改你的名称服务器,这里会给出两个名称服务器,复制之后到域名申请的地方替换 dns 解析地址,我的是腾讯云,直接找到域名,点击管理,dns 位置就可以修改了
- 上一步骤完成后,点击完成,检查名称服务器, 正常情况很快就 OK 了。
新建 cloudflare worker
- 回到首页,右侧点击
Workers
,左侧点击创建服务
- 自定义一下你的服务名称,启动器选择
HTTP处理程序
,点击创建服务 - 服务被创建好了,此时点击
快速编辑
- 此时出现代码编辑器,内容填充以下代码:
const TELEGRAPH_URL = "https://api.openai.com";
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
url.host = TELEGRAPH_URL.replace(/^https?:\/\//, "");
const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: "follow",
});
const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set("Access-Control-Allow-Origin", "*");
return modifiedResponse;
}
点击保存,在 worker 详情页面,选择触发器, 添加自定义域名,这时候把之前处理好的域名,填在这里
现在
openai
的反向代理就搭建好了,可以使用了