diff --git a/Scripts/resource-parser.js b/Scripts/resource-parser.js index 3c7f513..766083e 100644 --- a/Scripts/resource-parser.js +++ b/Scripts/resource-parser.js @@ -1,7 +1,7 @@ /** -#Quantumult X 资源解析器 (2020-05-05: 23:59) +# Quantumult X 资源解析器 (2020-05-06: 12:33) -本资源解析器作者: Shawn(@XIAO_KOP), 有问题请反馈: @Shawn_KOP_bot +本资源解析器作者: Shawn(请勿私聊问怎么用), 有bug请反馈: @Shawn_KOP_bot 主要功能: 将各类服务器订阅解析成 Quantumult X 引用片段(已支持 V2RayN/SSR/SS/Trojan/QuanX(list)/Surge3⬆️(conf&list)格式),并提供下列可选参数; @@ -10,15 +10,16 @@ 0️⃣ 请在订阅链接后加入 "#" 符号后再加参数, 不同参数间请使用 "&" 来连接, 如: "#in=香港+台湾&emoji=1&tfo=1" 1️⃣ 节点/服务器 订阅--参数说明 -- in, out, 分别为保留/排除参数, 多参数用 "+" 连接, 可直接用中文 (如 "in=香港+台湾&out=BGP" ) -- emoji=1,2 或 -1, 为添加或删除节点名中的 emoji 旗帜 (国行设备请用 emoji=2 ) -- udp=1, tfo=1 参数开启 udp-relay 及 fast-open (默认关闭, 此参数对源类型为 QuanX/Surge 的链接无效) -- rename 重命名, rename=旧名@新名, 以及 "前缀@", "@后缀", 用 "+" 连接, 如 "rename=香港@HK+[SS]@+@[1X]" -- cert=0,跳过证书验证(vmess/trojan),即强制"tls-verification=false" +- in, out, 分别为保留/排除参数, 多参数用 "+" 连接, 可直接用中文 (如 "in=香港+台湾&out=BGP" ); +- emoji=1,2 或 -1, 为添加或删除节点名中的 emoji 旗帜 (国行设备请用 emoji=2 ); +- udp=1, tfo=1 参数开启 udp-relay 及 fast-open (默认关闭, 此参数对源类型为 QuanX/Surge 的链接无效); +- rename 重命名, rename=旧名@新名, 以及 "前缀@", "@后缀", 用 "+" 连接, 如 "rename=香港@HK+[SS]@+@[1X]"; +- cert=0,跳过证书验证(vmess/trojan),即强制"tls-verification=false"; +- tls13=1, 开启 "tls13=true"(vmess/trojan), 请自行确认服务端是否支持; - sort=1 或 sort=-1, 排序参数,分别根据节点名 正序/逆序 排列 2⃣️ rewrite(复写)/filter(分流) 引用--参数说明 -- 参数为 "out=xxx", 多个参数用 "+" 连接; +- 参数为 "out=xxx", 多个参数用 "+" 连接; - 分流规则额外支持 "policy=xx" 参数, 可用于直接指定策略组,或者为 Surge 格式的 rule-set 生成策略组(默认"Shawn"策略组) 3⃣️ 通用参数:info=1, 用于打开资源解析器的提示通知 (默认关闭), @@ -50,10 +51,11 @@ var Prname=para.indexOf("rename=")!=-1? para.split("#")[1].split("rename=")[1].s var Ppolicy=para.indexOf("policy=")!=-1? para.split("#")[1].split("policy=")[1].split("&")[0].split("+"):"Shawn"; var Pcert0=para.indexOf("cert=")!=-1? para.split("#")[1].split("cert=")[1].split("&")[0].split("+"):1; var Psort0=para.indexOf("sort=")!=-1? para.split("#")[1].split("sort=")[1].split("&")[0].split("+"):0; +var PTls13=para.indexOf("tls13=")!=-1? para.split("#")[1].split("tls13=")[1].split("&")[0].split("+"):0; if(type0=="Vmess"){ - total=V2QX(content0,Pudp0,Ptfo0,Pcert0); + total=V2QX(content0,Pudp0,Ptfo0,Pcert0,PTls13); flag=1; }else if(type0=="QuanX"){ total=content0.split("\n"); @@ -62,7 +64,7 @@ if(type0=="Vmess"){ total=SSR2QX(content0,Pudp0,Ptfo0); flag=1; }else if(type0=="Trojan"){ - total=TJ2QX(content0,Pudp0,Ptfo0,Pcert0); + total=TJ2QX(content0,Pudp0,Ptfo0,Pcert0,PTls13); flag=1; }else if(type0=="SS"){ total=SS2QX(content0,Pudp0,Ptfo0); @@ -151,8 +153,8 @@ function Rewrite_Filter(subs,Pout){ cnt=subs; nlist=[]; drewrite=[]; - if(Pout!="" && Pout!=null){ - Pout=Pout.map(Trim); + if(Pout!="" && Pout){ + Pout=Pout.map(Trim); for(var i=0;i0){$notify("🤖 您添加的[rewrite]过滤关键词为:"+Pout0.join(", "),"☠️ 复写 rewrite 中已为您禁用以下"+drewrite.length+"个匹配项",drewrite.join("\n") )}; return nlist - } else{ // Pout if + }else { // Pout if +//$notify("no filter at all") return cnt;} } @@ -243,14 +246,16 @@ function Rule_Policy(content){ //增加、替换 policy } + //V2RayN 订阅转换成 QUANX 格式 -function V2QX(subs,Pudp,Ptfo,Pcert){ +function V2QX(subs,Pudp,Ptfo,Pcert,Ptls13){ const $base64 = new Base64() var list0=$base64.decode(subs).split("\n"); var QXList=[] var cert=Pcert + var tls13=Ptls13 for(var i=0;i