vps交流

workers 反代 jsdeliver


本帖最后由 未完的歌 于 2022-5-27 11:02 编辑

因为有验证hash,我自己用,就先把这个注释掉

  1. // 允许的 CORS 来源
  2. const ALLOWED_REFERER = [
  3.   /^https?://自己worker域名(:d*)?/.*$/,
  4.   /^https?://([w-]+.)*w3schools.com(:d*)?/.*$/
  5. ];
  6. // 是否允许所有无 Referer 请求
  7. const ALLOW_NO_ORIGIN = true;
  8. //输入你的密码,密码加在path后面做SHA-1运算
  9. const MYSECRET = "123456";
  10. function validateReferer(req) {
  11.   const referer = req.headers.get(‘Referer’);
  12.   if (referer) {
  13.     for (const el of ALLOWED_REFERER) {
  14.       if (el.exec(referer)) {
  15.         return true;
  16.       }
  17.     }
  18.     return false;
  19.   }
  20.   return ALLOW_NO_ORIGIN; // 是否拒绝所有无 Referer 请求
  21. }
  22. async function handle(request) {
  23.   let url = new URL(request.url);
  24.   const acceptType = request.headers.get(‘Accept’);
  25.   const hash_request = url.pathname.split("/")[1];
  26.   const path_real = url.pathname.substring(1, url.pathname.length);
  27.   url.hostname = "cdn.jsdelivr.net";
  28.   url.pathname = path_real;
  29.   // if (!(await validatePath(hash_request, path_real))) {
  30.   //   return new Response(‘Error Hash’, {
  31.   //     status: 403
  32.   //   });
  33.   // }
  34.   // if (!(validateReferer(request))) {
  35.   //   return new Response(‘Blocked Host’, {
  36.   //     status: 403
  37.   //   });
  38.   // }
  39.   return await fetch(url);
  40. }
  41. async function validatePath(hash_request, path_real) {
  42.   const message = new TextEncoder().encode(path_real + MYSECRET);
  43.   const myDigest = await crypto.subtle.digest(‘SHA-1’, message);
  44.   const hashArray = Array.from(new Uint8Array(myDigest));
  45.   const hashHex = hashArray.map(b => b.toString(16).padStart(2, ‘0’)).join(”);
  46.   return (hashHex == hash_request);
  47. }
  48. addEventListener(‘fetch’,
  49. event => {
  50.   event.respondWith(handle(event.request));
  51. })

复制代码

然后替换掉被墙的
cdn.jsdelivr.net

即可访问
https://cdn.upy.workers.dev/npm/[email protected]/dist/jquery.min.js

worker也被墙了,换成自己的域名即可

也可以自定义一个 密码 把验证去了,每次验证计算很麻烦。

大佬帖子:
https://hostloc.com/forum.php?mo … mp;highlight=worker