众所周知,openai 的 api 网站已经被污染了,中国大陆用户是无法访问的,虽然我们没法直接使用 ChatGPT,但是可以通过 openai 提供的 apikey 本地部署的方式来进行访问,但是随着它的 api 网站的被墙,导致本地部署也的需要点魔法才能使用,其实我们可以通过 Cloudflare Workers 来解决 openai 的 api 被墙,实现在不借助魔法的环境下也能畅快使用 ChatGPT 带来的乐趣。
准备工作
- 一个自己的域名(因为 Workers 也被墙)
- 将自己域名 NS 转移到 Cloudflare
将域名转移到 Cloudflare 到 DNS
登陆 Cloudflare 首页,找到添加站点,将自己的域名输入进去,按他的步骤一步一步走即可,一般一小时内即可解析完成。这里比较简单,我重点介绍部署 workers
开始部署 Workers
我们回到控制台的首页,找到左侧边栏中的 workers,进去后我们可以看到右上角有个创建服务,这边我们创建一个服务
然后我们给这个服务取个名字,直接点击创建服务即可。
创建好了就会自动回到这个服务中,点击右上角的快速编辑
然后将以下代码替换到左边编辑器里的代码
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;
}
然后点击下方 “保存并部署” 即可!
但是这个时候,你的 workers 并不能访问,我们还需要绑定自己刚才转移到 Cloudflare 的域名
回到项目中,找到 “触发器”!
然后绑定域名即可!
接下来你就可以愉快的使用这个域名作为 openai 的 api 接口域名了!