使用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可以正常运行了。

使用Cloudflare Workers搭建高速的Gravatar镜像作者
原文链接https://blog.icybit.cn/posts/242,IcyBlog版权所有
转载请标明文章来源

评论

  1. 烟墨
    Windows Edge
    1 年前
    2023-12-29 17:12:44
    Microsoft Edge Microsoft Edge Windows Windows

    代码fixed在这,他改的真极霸一坨史(

    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('gravatar-proxy.ymworkers.asia')) {
            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,
        });
    }
    来自香港
  2. 114514
    Windows Edge
    1 年前
    2024-1-31 7:16:50
    Microsoft Edge Microsoft Edge Windows Windows

    114514

    来自美国

发送评论 编辑评论

上一篇
下一篇