使用Cloudflare Workers搭建高速的Gravatar镜像

前言

最近使用Wordpress时发现一个问题,登录后台时自己的头像加载不出来,f12显示Gravatar头像超时,遂决定写一个Gravatar镜像的Workers脚本并出一期部署教程

如果你还不会用Cloudflare Workers,请参考以下教程注册Cloudflare账号并更改ns至cloudflare,再回来继续看这篇文章🥺

注册Cloudflare账号,迁移域名,开始使用Workers

教程链接:

Cloudflare官方对于Workers的介绍

注册Cloudflare账号

开始使用Cloudflare Workers

开始部署

打开Cloudflare Dashboard,点开菜单,点击”Workers和Pages”

进入之后点击”创建应用程序”>”创建Worker”。

到这步名字随便取,点击部署。

Bingo,部署完成

然后点击”编辑代码”,将下面代码复制进去:

//Gravatar Mirror Workers By IcyMichiko(https://icymichiko.cn)允许转载
//本js极大简化了网上的反代脚本并添加了防盗链,但由于没有内容替换不适用于反代正常网页
addEventListener(‘fetch’, event => {
event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
const targetUrl = ‘https://www.gravatar.com/avatar‘;
const referer = request.headers.get(‘Referer’);

// 防盗链设置,请将域名改为你自己的域名,若不需要请从这里开始删除
if (!referer !referer.includes(‘ys.mihoyo.com’)) {
return new Response(‘Forbidden’, { status: 403 });
}
//不需要防盗链从上面开始删除代码这里结束
const url = new URL(request.url);
const target = new URL(targetUrl + url.pathname);
target.search = url.search;

const response = await fetch(target, {
method: request.method,
headers: request.headers,
});

return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: response.headers,
});
}

如果你不需要防盗链记得删掉那部分,需要防盗链的别忘了改

如果你有多个域名需要防盗链,请将防盗链的部分代码替换为以下部分,两个以上域名以此类推:

if (!referer (!referer.includes(‘616.sb’) && !referer.includes(‘arcaea.lowiro.com’))) {

//别忘了替换域名

然后保存,部署完成🥳🥳🥳

等等…还没完…

由于Cloudflare默认的workers.dev子域被阻断,所以需要绑定自己的域名过去

进入此Workers的仪表板

点击”触发器”>”添加自定义域”,并输入你想要作为Gravatar镜像的自定义域名

完成后点击添加自定义域,大功告成,现在访问添加的那个网址会发现Gravatar可以正常运行了。