From dbad260e65bb8901438c84e88d1611c95584d640 Mon Sep 17 00:00:00 2001 From: Shawn <45581750+KOP-XIAO@users.noreply.github.com> Date: Mon, 22 Jun 2020 11:13:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E6=8F=90=E7=A4=BA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 14340 -> 14340 bytes Scripts/resource-parser.js | 94 +++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 40 deletions(-) diff --git a/.DS_Store b/.DS_Store index ee9bcaea9ea3148a62c3c1d8050214f21e000229..2cf191d84fa8fb7e76467067ac0e15de18dcaa5e 100644 GIT binary patch delta 1044 zcmeIw&u@!y9Ki9;o`)TZE=$L12}&2&gbxXdf z6^SNYTc6TCtKSn$XR@Y#Z`J6N(X9b>q~LTq2Xe)IN1aW%qEk?ePO3P1f5aFt#4BN0 zE-A@MuQ-yIV=^d1azU=iEg6=3@>rhAn2gIanUvS^M&8Oh`6OTDt9+C1fJr4)SS(^O zQI@cb)vO^wGfCP>lVvm8=wT&TGQ*7UfJZ#hSNswE zv37;WZck@^UlRMnCC00&x$}H#zCTc1Qx}OftX$i=LEm1mLyreqdW@)Ts{3B!MKENA z>!Y@WvRyCQn@~A#zx+a=UQ_WTdV|sIa(yepUmYJGr)4Qv!zvz|a zjy!bbp36(u>w|oD#eT?7JopF^W+66p#8^rLjl^BAb+pjR#woK59dyz~H{01mj=ip% q3p(w#KKt$QD;{hUTq z=B&XqFLB3CN~05|rL&Y*sy;}0Y;;l^HYS-ayM>xtC_jGINT$rV#rAu_P?++*k@(b< zXgsAL;Dy^eI6vu>?$J`|g9*bDZN2sCM?_owj@G5?PE+|@ z@{Rl;KglohoBTyKa*+oK3M#M_+pryV2%-UvXhSEu5J5M3a0F4ra15s~1{33$KpOK{ z#06Z$H7w%}R&W;&@fc6Ail=yqS9nb_CkysUQJMW+4Hl?-_tBa@b0lsZ6@=`?>WF=h zHQ8G6xSe0h7h(dEF(WyHvb;61kW$sBR!U+vCS{(~uhz(70}QU}S8FASWw~0t+8_() zY=f&c(^g5)WjU@IqHVHR0LymOcG@Wk%q-VcBXp0f<^ zkTjwREoesvb_*;HlwKUbA@pMaLpUMOoEB&%FbNCiFoRjl2}GB08CP%>*KrfKa2v}u ZHrK9d73CY(t+{SZ$K&)rvu51``VUoLJ;(q6 diff --git a/Scripts/resource-parser.js b/Scripts/resource-parser.js index 7736897..f7bfb3d 100644 --- a/Scripts/resource-parser.js +++ b/Scripts/resource-parser.js @@ -1,14 +1,14 @@ /** -☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-06-21 13:59⟧ +☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-06-22 11:59⟧ ---------------------------------------------------------- 🚫 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API 🗣 🆃🄷🄰🄽🄺🅂 🆃🄾 @Jamie CHIEN, @M**F**, @c0lada 🤖 主要功能: -A. 将各格式服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式引用 +A. 将各格式的服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式引用 ✔︎ 支持 V2RayN/SSR/SS/SSD/Trojan/QuanX/Surge/https 订阅 -✔︎ 提供说明 1⃣️ 中的可选个性化参数 +✔︎ 提供说明 1⃣️ 中的可选个性化参数(筛选、重命名 等) B. rewrite(重写) /filter(分流) 的转换&筛选 ✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter ✔︎ Surge 类型规则 list(不含策略组)的解析与使用 @@ -20,16 +20,16 @@ B. rewrite(重写) /filter(分流) 的转换&筛选 1️⃣ ⟦server 节点⟧ ➠ 参数说明: ⦿ info=1, 开启通知提示机场 ✈️ 流量信息(如有提供); ⦿ emoji=1,2 或 -1, 为添加/删除节点名中的地区 emoji 旗帜; - ♦︎ 国行设备请用 emoji=2 + ❖ 国行设备请用 emoji=2 ⦿ udp=1, tfo=1, tls13=1, 分别开启 udp-relay/fast-open/tls1.3; ⦿ cert=0, 强制"tls-verification=false" 跳过证书验证; ⦿ in, out, 分别为 保留/删除 节点, 多参数用 "+" 连接(逻辑"或"), 逻辑"与"用 "." 连接; - ♦︎ 可直接用中文, 特殊字符请 urlencode 后使用, 如 - ❖ "@"☞"%40", "+"☞"%2B", 空格☞"%20", "&"☞"%26" - ♦︎ 如 "in=香港.IPLC.04+台湾&out=香港%20BGP" + ❖ 可直接用中文, 特殊字符请 urlencode 后使用, 如 + ∎ "@"☞"%40", "+"☞"%2B", 空格☞"%20", "&"☞"%26" + ❖ 如 "in=香港.IPLC.04+台湾&out=香港%20BGP" ⦿ rename 重命名、删除字段, "旧名@新名", "删除字段1.删除字段2☠️", 以及 "前缀@", "@后缀",用 "+" 连接多个参数; - ♦︎ 如 "rename=香港@HK+[SS]@+@[1X]+倍率.流量☠️" - ♦︎ 如想删除 ".", 请用"rename=.@點+點☠️" 类似操作 + ❖ 如 "rename=香港@HK+[SS]@+@[1X]+倍率.流量☠️" + ❖ 如想删除 ".", 请用"rename=.@點+點☠️" 类似操作 ⦿ sort=1, -1, 排序参数, 分别根据节点名 正序/逆序 排列; 2⃣️ ⟦rewrite 重写⟧/⟦filter 分流⟧ ➠ 参数说明: @@ -39,6 +39,9 @@ B. rewrite(重写) /filter(分流) 的转换&筛选 ⦿ 示范: 禁用某重写引用中的 "淘宝比价 js" 以及 "weibo 的 js" ⚠️ ☞ https://myrewrite.list#out=tb_price.js+wb_ad.js +3⃣️ 通知参数 ntf=0/1, 用于 关闭/打开 资源解析器的提示通知 +⦿ rewrite/filter 默认“开启”通知提示, 以防规则误删除 +⦿ server 资源解析则默认”关闭“通知提示 ---------------------------------------------------------- */ @@ -52,8 +55,8 @@ B. rewrite(重写) /filter(分流) 的转换&筛选 3️⃣ 则填入 Quanx 节点引用的的总链接为 https://raw.githubusercontent.com/crossutility/Quantumult-X/master/server-complete.txt#in=tls+ss&out=http+2 4️⃣ 填入上述链接, 并打开的资源解析器开关 -PS. 隐藏参数 ntf=1, 用于打开资源解析器的操作提示通知 (默认关闭) -⦿ rewrite/filter 资源在有 in/out 参数时会强制开启通知提示, 以防规则误删除 +PS. 隐藏参数 ntf=0/1, 用于关闭/打开资源解析器的提示通知 +⦿ rewrite/filter 资源在有 in/out 参数时会默认开启通知提示, 以防规则误删除 ------------------------------ */ @@ -80,7 +83,7 @@ var Ppolicy=mark0 && para1.indexOf("policy=")!=-1? decodeURIComponent(para1.spli var Pcert0=mark0 && para1.indexOf("cert=")!=-1? para1.split("cert=")[1].split("&")[0]:1; var Psort0=mark0 && para1.indexOf("sort=")!=-1? para1.split("sort=")[1].split("&")[0]:0; var PTls13=mark0 && para1.indexOf("tls13=")!=-1? para1.split("tls13=")[1].split("&")[0]:0; -var Pntf0= mark0 && para1.indexOf("ntf=")!=-1? para1.split("ntf=")[1].split("&")[0]:0; +var Pntf0= mark0 && para1.indexOf("ntf=")!=-1? para1.split("ntf=")[1].split("&")[0]:2; var Pb64= mark0 && para1.indexOf("b64=")!=-1? para1.split("b64=")[1].split("&")[0]:0; var emojino=[" 0️⃣ "," 1⃣️ "," 2⃣️ "," 3⃣️ "," 4⃣️ "," 5⃣️ "," 6⃣️ "," 7⃣️ "," 8⃣️ "," 9⃣️ "," 🔟 "] var pfi=Pin0? "in="+Pin0+", ":"" @@ -94,10 +97,10 @@ const Base64=new Base64Code(); const escapeRegExp = str => str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); //处理特殊符号以便正则匹配使用 const qxpng="https://raw.githubusercontent.com/crossutility/Quantumult-X/master/quantumult-x.png" var subinfo_link = {"open-url": "https://t.me/QuanX_API", "media-url" :"https://shrtm.nu/ebAr"}; -var rwrite_link = {"open-url":link0, "media-url": "https://shrtm.nu/G2Xn"} -var rule_link={"open-url":link0, "media-url": "https://shrtm.nu/7eiK"} -var nan_link={"open-url":link0, "media-url": qxpng} -var sub_link={"open-url":link0, "media-url": "https://shrtm.nu/ebAr"} +var rwrite_link = {"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/G2Xn"} +var rule_link={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/7eiK"} +var nan_link={"open-url":link0.split("#")[0], "media-url": qxpng} +var sub_link={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/ebAr"} //$notify(link0,type0,content0) @@ -158,24 +161,25 @@ if(flag==3){ }else if(flag==1){ if(Pin0||Pout0){ total=Filter(total,Pin0,Pout0) - } else { - if(Pntf0!=0){ - $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始转换节点订阅","🐼️ 如需筛选节点请使用in/out及其他参数,可参考此示范:","👉 https://t.me/QuanXNews/110",sub_link);} - } + } + // else { + // if(Pntf0!=0){ + // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始转换节点订阅","🐼️ 如需筛选节点请使用in/out及其他参数,可参考此示范:","👉 https://t.me/QuanXNews/110",sub_link);} + // } if(Prrname){ - if(Pntf0!=0){ - $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prrname, sub_link);} + // if(Pntf0!=0){ + // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prrname, sub_link);} var Prn=Prrname; total=total.map(Rename); } if(Pemoji){ - if(Pntf0!=0){ - $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始更改旗帜 emoji","⚠️ 清除emoji请用参数 -1, 国行设备添加emoji请使用参数 2","👉 当前添加参数为: emoji="+Pemoji,sub_link)}; + // if(Pntf0!=0){ + // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始更改旗帜 emoji","⚠️ 清除emoji请用参数 -1, 国行设备添加emoji请使用参数 2","👉 当前添加参数为: emoji="+Pemoji,sub_link)}; total=emoji_handle(total,Pemoji); } if(Prname){ - if(Pntf0!=0){ - $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prname,sub_link);} + // if(Pntf0!=0){ + // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prname,sub_link);} var Prn=Prname; total=total.map(Rename); } @@ -183,9 +187,9 @@ if(flag==3){ total=QXSort(total,Psort0); } total=TagCheck_QX(total) - if(total.length==0){ - $notify("‼️ 引用"+"⟦"+subtag+"⟧"+"无有效节点","⁉️请自行检查原始链接以及过滤参数",para,nan_link) - }; + // if(total.length==0){ + // $notify("‼️ 引用"+"⟦"+subtag+"⟧"+"无有效节点","⁉️请自行检查原始链接以及过滤参数",para,nan_link) + // }; //$notify("Final","List",total) total=total.join("\n"); if(flag==1){ @@ -273,7 +277,7 @@ function Rewrite_Filter(subs,Pin,Pout){ } } } - if(dwrite.length>0){ + if(dwrite.length>0 && Pntf0!=0){ nowrite=dwrite.length<=10?emojino[dwrite.length]:dwrite.length $notify("🤖 "+"重写引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 筛选参数: "+pfi+pfo,"☠️ 重写 rewrite 中已禁用以下"+nowrite+"个匹配项:"+"\n ⨷ "+dwrite.join("\n ⨷ "),rwrite_link ) } @@ -309,8 +313,8 @@ function HostNamecheck(content,parain,paraout){ } //for j hname="hostname="+nname.join(", "); // $notify(hname,dname) - if(dname.length>0){ - if(paraout || parain){ + if(dname.length>0 && Pntf0!=0){ + if(paraout || parain && Pntf0!=0){ var noname=dname.length<=10?emojino[dname.length]:dname.length $notify("🤖 "+"重写引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 筛选参数: "+pfihn+pfohn,"☠️ 主机名 hostname 中已删除以下"+noname+"个匹配项:"+"\n ⨷ "+dname.join(","),rwrite_link ) } @@ -343,7 +347,7 @@ function Rule_Handle(subs,Pout,Pin){ ply=Ppolicy; //策略组 var nlist=[] var RuleK=["//","#",";"]; - if(Tout!="" && Tout!=null){ + if(Tout!="" && Tout!=null){ // 有 out 参数时 var dlist=[]; for(var i=0;i0){$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+ Tout,"☠️ 已禁用以下"+no+"条匹配规则:"+"\n ⨷ "+dlist.join("\n ⨷ "),rule_link) + if(dlist.length>0 ){ if(Pntf0!=0){$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+ Tout,"☠️ 已禁用以下"+no+"条匹配规则:"+"\n ⨷ "+dlist.join("\n ⨷ "),rule_link)} }else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+Tout,"⚠️ 未发现任何匹配项, 请检查参数或原始链接",nan_link)} if(Tin!="" && Tin!=null){ //有 in 跟 out 参数时 if(nlist.length>0 ){ var noin0=nlist.length<=10?emojino[nlist.length]:nlist.length - $notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin0+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link) + if(Pntf0!=0){ + $notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin0+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link)} } else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin+",⛔️ 禁用: "+Tout,"⚠️ 筛选后剩余规则数为 0️⃣ 条, 请检查参数及原始链接",nan_link) } } else {// if Tin (No Tin) @@ -392,7 +397,8 @@ function Rule_Handle(subs,Pout,Pin){ } // for cnt if(nlist.length>0){ var noin=nlist.length<=10?emojino[nlist.length]:nlist.length - $notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link) + if(Pntf0!=0){ + $notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link)} } else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"⚠️ 筛选后剩余规则数为 0️⃣ 条, 请检查参数及原始链接",nan_link)} return [...dlist,...nlist]; } else { //if Tin @@ -647,16 +653,24 @@ function Scheck(content,param){ //节点过滤,使用+连接多个关键词(逻辑"或"):in 为保留,out 为排除, "与"逻辑请用符号"."连接 function Filter(servers,Pin,Pout){ var Nlist=[]; - var Delist=[] + var Delist=[]; + var Nname=[] for(var i=0;i0){ //有 in 参数就通知保留部分 + $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点筛选","🕹 筛选关键字: "+pfi+pfo, "☠️ 已保留以下 "+no1+"个节点\n"+Nname.join(", "),sub_link); + }else if(Pout && no>0){ + $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点筛选","🕹 筛选关键字: "+pfi+pfo, "☠️ 已删除以下 "+no+"个节点\n"+Delist.join(", "),sub_link); +} + }else if(no1==0){ //无剩余节点时强制通知 + $notify("‼️ ⟦"+subtag+"⟧"+"筛选后节点数为0⃣️","⚠️ 请自行检查原始链接以及筛选参数", link0, sub_link);} return Nlist }