前言
最近使用Wordpress时发现一个问题,登录后台时自己的头像加载不出来,f12显示Gravatar头像超时,遂决定写一个Gravatar镜像的Workers脚本并出一期部署教程
如果你还不会用Cloudflare Workers,请参考以下教程注册Cloudflare账号并更改ns至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可以正常运行了。
代码fixed在这,他改的真极霸一坨史(
114514