workers 反代 jsdelivr,支持加密和防盗链。

121次阅读

共计 1944 个字符,预计需要花费 5 分钟才能阅读完成。

代码如下,具有防跨站和网址加密功能。你问我用这个有什么意义,主要是可以套国内的 CDN 呀!
具体使用使用方式参阅我的个人博客:https://www.430074.xyz/posts/workers-jsdeliver.html

  1. // 允许的 CORS 来源
  2. const ALLOWED_REFERER = [
  3.   /^https?://localhost(: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(hash_request.length + 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’, event => {
  49.   event.respondWith(handle(event.request));
  50. })

复制代码

网友回复:

注册 gcore.jsdelivr.net cf.jsdelivr.net fastly.jsdelivr.net 好了楼主退下吧

jarmoku 有没有国内 cdn 的呢?速度要快哦。

YorkZhao 马克

gogoo2 感谢分享

dole 看我网站用的哪个

asdii worker 那速度,整个小鸡不香吗

jarmoku 你不会套国内 cdn 吗?

haozi 小鸡不能套 cdn 吗?worker 那线路,套了又能快到哪去?

jarmoku 你说得对,可惜我天天重装小鸡,不如 workers 稳定。

注册 SHA1 也太麻烦了,workers 现在和国内连通性不好,也没必要搞成这样吧……

注册 要不是我的 workers 次数被刷完了,我也不想这样。今天就有一个没加密的:https://hostloc.com/forum.php?mod=viewthread&tid=1029981&highlight=CF%2Bworkers

SeegerNew 大佬,有没加密的版本吗?我倒是不在乎会不会刷完,简单能用就行,谢谢!

jarmoku 网上直接搜索 workers 反代,都可以

正文完
 0