From 02456ea1fb9f52547d3e255c96dccec650c570ad Mon Sep 17 00:00:00 2001 From: Shawn <45581750+KOP-XIAO@users.noreply.github.com> Date: Sun, 3 May 2020 19:10:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=20surge(conf&list)=E5=8F=91?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Scripts/resource-parser.js | 140 +++++++++++++++++++++++++++++++++++-- 1 file changed, 134 insertions(+), 6 deletions(-) diff --git a/Scripts/resource-parser.js b/Scripts/resource-parser.js index c10c5b9..b940f2a 100644 --- a/Scripts/resource-parser.js +++ b/Scripts/resource-parser.js @@ -1,9 +1,9 @@ /** -#Quantumult X 资源解析器 (2020-05-02: 12:53) +#Quantumult X 资源解析器 (2020-05-03: 19:33) 本资源解析器作者: Shawn(@XIAO_KOP), 有问题请反馈: @Shawn_KOP_bot -主要功能: 将节点订阅解析成 Quantumult X 引用片段, 并提供下列可选参数 (已支持 V2RayN/SSR/SS/Trojan/QuanX 订阅); +主要功能: 将节点订阅解析成 Quantumult X 引用片段, 并提供下列可选参数 (已支持 V2RayN/SSR/SS/Trojan/QuanX(list)/Surge(conf&list)格式); 附赠功能:rewrite 复写引用/ filter 分流 过滤 0️⃣ 在订阅链接后加入 "#" 符号后再加参数, 不同参数间请使用 "&" 来连接, 如: "#in=香港+台湾&emoji=1&tfo=1" @@ -16,9 +16,9 @@ 4️⃣ rename 重命名, rename=旧名@新名, 以及 "前缀@", "@后缀", 用 "+" 连接, 如 "rename=香港@HK+[SS]@+@[1X]" -5️⃣ rewrite(复写)/filter(分流) 引用的筛选,参数为 "out=xxx", 分流规则额外支持 "policy=xx" 参数, 可用于直接指定策略组,或者为 Surge 格式的 rule-set 生成策略组(默认"Shawn"策略组) +5⃣️ rewrite(复写)/filter(分流) 引用的筛选,参数为 "out=xxx", 分流规则额外支持 "policy=xx" 参数, 可用于直接指定策略组,或者为 Surge 格式的 rule-set 生成策略组(默认"Shawn"策略组) -6️⃣ info=1, 用于打开服务器类型下转换解析器的提示通知 (默认关闭), rewrite/filter 类型则强制在有 out 参数时开启通知,以免规则误删除 +6⃣️ info=1, 用于打开服务器类型下转换解析器的提示通知 (默认关闭), rewrite/filter 类型则强制在有 out 参数时开启通知,以免规则误删除 */ @@ -60,6 +60,9 @@ if(type0=="Vmess"){ }else if(type0=="SS"){ total=SS2QX(content0,Pudp0,Ptfo0); flag=1 +}else if(type0=="Surge"){ + total=Surge2QX(content0); + flag=1; }else if(type0=="rewrite"){ flag=2; content0=content0.split("\n"); @@ -112,7 +115,9 @@ function Type_Check(subs){ type="Rule"; } else if (subs.indexOf("dm1lc3M6Ly")!= -1){ type="Vmess" - } else if (subs.indexOf("tag")!=-1){ + } else if(subs.indexOf("[Proxy]")!=-1){ + type="Surge"; + }else if (subs.indexOf("tag")!=-1){ type="QuanX" } else if (subs.indexOf("c3NyOi8v")!= -1){ type="SSR" @@ -122,7 +127,9 @@ function Type_Check(subs){ type="SS" } else if(subs.indexOf("hostname")!=-1){ type="rewrite" - } + } else if(subs.indexOf("ss"||"vmess"||"trojan"||"http")!=-1){ + type="Surge" + } return type } @@ -468,6 +475,127 @@ function emoji_handle(servers,Pemoji){ return nlist } +//Surge2QX 转换主函数 +function Surge2QX(conf){ + var QXlist=conf.split("\n").map(isSurge).filter(Boolean) + var Nlist=[] + for(i=0;i