diff --git a/Scripts/resource-parser.js b/Scripts/resource-parser.js index 64d65a3..89528f0 100644 --- a/Scripts/resource-parser.js +++ b/Scripts/resource-parser.js @@ -1,5 +1,5 @@ /** -☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-02-24 11:59⟧ +☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-03-01 18:29⟧ ---------------------------------------------------------- 🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API @@ -26,7 +26,7 @@ ⦿ 𝘁𝗹𝘀13=1, 𝗰𝗲𝗿𝘁=1, 分别开启 𝐭𝐥𝐬1.3 及 𝐭𝐥𝐬 证书验证(默认关闭); ⦿ 𝗶𝗻, 𝗼𝘂𝘁, 𝗿𝗲𝗴𝗲𝘅 分别为 保留、删除、正则筛选 节点; ❖ 𝗶𝗻, 𝗼𝘂𝘁 中多参数(逻辑"或")用 "+", 逻辑"与"用 "." 表示; - ❖ 𝗿𝗲𝗴𝗲𝘅 会对节点的完整信息进行匹配(类型、端口、加密等); + ❖ 𝗶𝗻/𝗼𝘂𝘁/𝗿𝗲𝗴𝗲𝘅 均对节点的完整信息进行匹配(类型、端口、加密等); ❖ 示范: "𝐢𝐧=香港.0\.2倍率+台湾&𝐨𝐮𝐭=香港%20𝐁𝐆𝐏&𝐫𝐞𝐠𝐞𝐱=(?𝐢)𝐢𝐩𝐥𝐜" ⦿ 𝗿𝗲𝗻𝗮𝗺𝗲 重命名, "旧名@新名", "前缀@", "@后缀", 用 "+" 连接多个参数; ❖ 删除字段: "字段1.字段2☠️", 想删除 "." 时用 "\." 替代 @@ -1564,29 +1564,34 @@ function emoji_handle(servers, Pemoji) { //Surge2QX 转换主函数 function Surge2QX(conf) { - var QXlist = conf.split("\n").map(isSurge).filter(Boolean) - var Nlist = [] - var node="" - for (var i = 0; i < QXlist.length; i++) { - var cnt = QXlist[i]; - if (cnt.split("=")[1].split(",")[0].indexOf("trojan") != -1) { - node = Strojan2QX(cnt)//surge 3的trojan - } else if (cnt.split("=")[1].split(",")[0].indexOf("http") != -1) { - node = Shttp2QX(cnt) //surge 3的http - } else if (cnt.split("=")[1].split(",")[0].indexOf("vmess") != -1) { - node = SVmess2QX(cnt) //surge 3的Vmess - } else if (cnt.split("=")[1].split(",")[0].indexOf("ss") != -1) { - node = SSS2QX(cnt) //surge 3的SS - } else if (cnt.split("=")[1].split(",")[0].indexOf("custom") != -1) { - node = SCT2QX(cnt) //surge2写法 - } - node = Pudp0 != 0 ? XUDP(node,Pudp0) : node - node = Ptfo0 != 0 ? XTFO(node,Ptfo0) : node - Nlist.push(node) + var QXlist = conf.split("\n").map(isSurge).filter(Boolean) + var Nlist = [] + var node="" + for (var i = 0; i < QXlist.length; i++) { + var cnt = QXlist[i]; + if (cnt.split("=")[1].split(",")[0].indexOf("trojan") != -1) { + node = Strojan2QX(cnt)//surge 3的trojan + } else if (cnt.split("=")[1].split(",")[0].indexOf("http") != -1) { + node = Shttp2QX(cnt) //surge 3的http + } else if (cnt.split("=")[1].split(",")[0].indexOf("vmess") != -1) { + node = SVmess2QX(cnt) //surge 3的Vmess + } else if (cnt.split("=")[1].split(",")[0].indexOf("ss") != -1) { + node = SSS2QX(cnt) //surge 3的SS + } else if (cnt.split("=")[1].split(",")[0].indexOf("custom") != -1) { + node = SCT2QX(cnt) //surge2写法 } - return (Nlist) + node = Pudp0 != 0 ? XUDP(node,Pudp0) : node + node = Ptfo0 != 0 ? XTFO(node,Ptfo0) : node + if (cnt.indexOf("test-url") !=-1) { + var checkurl = ", server_check_url" + cnt.split("test-url")[1].split(",")[0] + node = node.replace(/\,(\s)*tag/, checkurl + ", tag") + } + Nlist.push(node) + } + return (Nlist) } + // surge2 中的 SS 类型写法(custom) //🇷🇺 俄罗斯 GIA = custom, ip, 152, aes-128-gcm, password123, https://xxx/download/SSEncrypt.module, obfs=tls, obfs-host=xxx.windows.com, udp-relay=true function SCT2QX(content) {