前言

国内访问一些在国内没有设立服务器的网站可能速度较慢或者经常连接不上,这时我们一般会找一个镜像站,但如果使用的网站比较冷门,没有其他用户搭建的镜像站的花,就需要我们自己搭建了
最近在整理影视库的时经常需要用到TMDB的数据库,但是TMDB在国内访问速度较慢,因此我们可以自己搭建一个反代的API

搭建教程

最开始我是使用Vercel来搭建反代API的,但是最近这半年Vercel在国内访问也不如之前那么理想了,于是后面更换成Cloudflare了,虽然说因为总所周知的原因,CF的延迟没有那么理想,但总的来说还是比较稳定的,对于小流量的传输效果还是不错的,甚至还可以参考我之前的文章利用CDN加速并保护站点中回源的部分做加速,因为我只是使用TMDB,并不需要大流量的传输,所以这里就不做更多介绍了

CloudFlare Workers和Pages

具体是什么我就不做更多的解释了,简单来说就是可以无服务器上线一些应用,类似于Vercel,但是功能要比Vercel强大,感兴趣的可以参考官方文档:Workers 文档、 Pages 文档
Works比Page好在可以网页上修改,但其分配的免费域名和Pages不同,不同运营商访问的理想度不同,具体的参考文末表格,但后面我们都会使用自己的域名,所以总的来说使用Works会更加访问,如果你没有自己的域名,可以根据你自身的网络情况选择Works或是Pages

创建Works

我选择使用Works来搭建,登入CloudFlare账号后,在侧边栏有一个选项是Workers和Pages,点击后我们再选择创建Works
创建CloudFlare Works

部署反代脚本

名称可以随意填写,这里我填写image-for-tmdb只要自己认得出已经别跟自己其他项目重复即可,然后点击部署,然后点击修改代码,想原本works.js中所有代码删除,替换成我提供的

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
const TELEGRAPH_URL = 'https://api.tmdb.org';

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;
}

第一行的https://api.tmdb.org替换成你需要反代的地址即可,如果需要反代OpenAI就填写https://api.openai.com,需要反代Github就填写https://github.com,修改完成后点击右上角的保存并部署
部署反代脚本

自定义域名

回到项目主页,可以看到CloudFLare默认为我们分配的域名(image-for-tmdb.xxxx.workers.dev),打开后(尽量用代理)出现和源站一样的页面就代表反代成功了,接下来就是要更换自己的域名了,点击下方的触发器
自定义域名
点击添加自定义域,添加你的域名就好,需要注意的是,目前CloudFlare尽支持添加托管在CloudFlare的域名,记得先把域名托管到CloudFlare上
添加域名后,会自动帮你解析DNS,等待部署完成即可,然后尝试打开,
api-tmdb.akimio.top:这个是我反代的tmdb的api的域名,有需要可以拿去使用

尾声

如我之前所说的,可以用这个方法搭建OpenAI、Github等镜像站,提升我们的使用体验,但不建议搭建Google、Youtube等境内不允许访问的网站,不仅可能导致无法访问,还有整个域名被墙的风险
还有一点就是,Works和Pages都是有使用限额的,但正常使用都不会超额

Works与Pages

这是我总结的一些区别:

Works:*.workers.dev Pages:*.pages.dev
中国电信 需要自定义域名 直接访问
中国联通 需要自定义域名 直接访问
中国移动 需要自定义域名 需要自定义域名
自定义域名 需要托管到CloudFlare 无需托管到CloudFlare
tls 80、443均可访问 强制开启tls
Web上修改配置 支持 不支持

在反代API这一块,tls是无所谓的,Web修改源地址的次数应该也不是很多,而且大多数需要镜像站的大概率是移动用户,都是需要自定义域名的
如果有需要使用Pages来搭建镜像站的教程可以在下方留言