共计 1944 个字符,预计需要花费 5 分钟才能阅读完成。
代码如下,具有防跨站和网址加密功能。你问我用这个有什么意义,主要是可以套国内的 CDN 呀! 具体使用使用方式参阅我的个人博客:https://www.430074.xyz/posts/workers-jsdeliver.html
- // 允许的 CORS 来源
- const ALLOWED_REFERER = [
- /^https?://localhost(:d*)?/.*$/,
- /^https?://([w-]+.)*w3schools.com(:d*)?/.*$/
- ];
- // 是否允许所有无 Referer 请求
- const ALLOW_NO_ORIGIN = true;
- // 输入你的密码,密码加在 path 后面做 SHA- 1 运算
- const MYSECRET = “123456”;
-
-
- function validateReferer(req) {
- const referer = req.headers.get(‘Referer’);
- if (referer) {
- for (const el of ALLOWED_REFERER) {
- if (el.exec(referer)) {
- return true;
- }
- }
- return false;
- }
- return ALLOW_NO_ORIGIN; // 是否拒绝所有无 Referer 请求
- }
-
-
- async function handle(request) {
- let url = new URL(request.url);
- const acceptType = request.headers.get(‘Accept’);
- const hash_request = url.pathname.split(“/”)[1];
- const path_real = url.pathname.substring(hash_request.length + 1, url.pathname.length);
- url.hostname = “cdn.jsdelivr.net”;
- url.pathname = path_real;
-
- if (!(await validatePath(hash_request, path_real))) {
- return new Response(‘Error Hash’, {
- status: 403
- });
- }
-
- if (!(validateReferer(request))) {
- return new Response(‘Blocked Host’, {
- status: 403
- });
- }
-
- return await fetch(url);
- }
-
- async function validatePath(hash_request, path_real) {
- const message = new TextEncoder().encode(path_real + MYSECRET);
- const myDigest = await crypto.subtle.digest(‘SHA-1’, message);
- const hashArray = Array.from(new Uint8Array(myDigest));
- const hashHex = hashArray.map(b => b.toString(16).padStart(2, ‘0’)).join(”);
- return (hashHex == hash_request);
- }
-
-
- addEventListener(‘fetch’, event => {
- event.respondWith(handle(event.request));
- })
复制代码
|
网友回复:
注册 : 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 反代,都可以