转到正文
封面

    使用 CloudFlare Workers 免费搭建 Virtual Judge 反代

    最近闲的没事干,受 如何科学地制作一个镜像反代站点 这篇文章的启发,我一个买不起服务器的穷逼准备用 CF Workers 搭一个 Virtual Judge 反代,以缓解 VJ 在大陆经常断网的情况。而且 CF Workers 有更高的 SLA 保证,如果运气好,访问速度还会嘎嘎快。

    千万不要反代反 D、色情、赌博等违规网站,小心你家水表坏了。

    注册 CF

    这个就不用我浪费口水了,传送门 -> https://dash.cloudflare.com/

    创建 CF Worker

    这一步需要先把域名绑到 CF 里面,因为 *.workers.dev 有墙。

    可以到 Freenom 那里搞一个免费域名.

    登录 Cloudflare Dashboard,点击右边的 Workers,再点右边的创建服务。

    Workers 面板

    服务名称随便,点击创建服务。

    创建服务

    绑定自定义域。

    触发器 > 自定义域,在这里输入 Worker 要绑的域名。

    自定义域

    点击快速编辑。

    管理面板

    粘贴以下代码,然后保存并部署:

    export default {
        async fetch(request, env, ctx) {
            let u = new URL(request.url);
            const originHost = "vjudge.net",
                mirrorHost = u.hostname;
            u.hostname = originHost;
    
            Object.defineProperty(request, "url", {
                value: u,
                writable: true,
            });
            let resp = await fetch(u, request);
    
            if (resp.headers.get("content-type").includes("text/")) {
                let body = await resp.text();
                body.replace(new RegExp(originHost, "g"), mirrorHost);
                return new Response(body, resp);
            }
            return resp;
        },
    };
    

    接下来,访问你绑定的域名。

    登录镜像站

    由于 CF Workers 不让改 set-cookie 请求头,你需要花很大力气登录 vjudge.net,然后把 cookies 复制到镜像站里。

    打开 https://vjudge.net,登录后打开开发者工具 > 应用 > cookie > https://vjudge.net。

    再打开 https://你绑定的域名,登录后打开开发者工具 > 应用 > cookie > https://你绑定的域名,将两个 JSESSIONID 复制粘贴过去,然后刷新镜像站,就可以完成登录。

    开发者工具


    最后,尽情享受吧~

    Demo(已失效):https://vjmirror.workers.dsy4567.cf/


    如无特别说明,本作品采用CC BY-NC-SA 4.0进行许可。
    发表于: , 更新于:
    标签: 技术 CloudFlare 已归档