diff --git a/Scripts/resource-parser.js b/Scripts/resource-parser.js index 822a608..2810228 100644 --- a/Scripts/resource-parser.js +++ b/Scripts/resource-parser.js @@ -1,21 +1,20 @@ /** -☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-07-08 19:39⟧ +☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-07-10 11:39⟧ ---------------------------------------------------------- 🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API 🗣 🆃🄷🄰🄽🄺🅂 🆃🄾 @Jamie CHIEN, @M**F**, @c0lada 🤖 主要功能: -A. 将各格式的服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式 -✔︎ 支持 𝒗𝒎𝒆𝒔𝒔/𝒔𝒔(𝒓/𝒅)/𝒕𝒓𝒐𝒋𝒂𝒏/𝒒𝒖𝒂𝒏𝒙/𝒔𝒖𝒓𝒈𝒆/𝒉𝒕𝒕𝒑(𝒔) 订阅 -✔︎ 提供说明 1⃣️ 中的可选个性化参数(筛选、重命名 等) -B. 𝗿𝗲𝘄𝗿𝗶𝘁𝗲(重写) /𝗳𝗶𝗹𝘁𝗲𝗿(分流) 的 转换&筛选 -✔︎ 用于禁用远程引用中某(几)项 𝗿𝗲𝘄𝗿𝗶𝘁𝗲/𝗵𝗼𝘀𝘁𝗻𝗮𝗺𝗲/𝗳𝗶𝗹𝘁𝗲𝗿 -✔︎ 𝐒𝐮𝐫𝐠𝐞 类型规则 𝗹𝗶𝘀𝘁(无策略组)的解析与使用 -✔︎ 𝐒𝐮𝐫𝐠𝐞 模块/配置 𝐮𝐫𝐥-𝐫𝐞𝐠𝐞𝐱/𝐬𝐜𝐫𝐢𝐩𝐭/𝐫𝐞𝐰𝐫𝐢𝐭𝐞(302/307) 的解析 +❶ 将各格式的服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式 +☑︎ 支持 𝑽𝒎𝒆𝒔𝒔/𝑺𝑺(𝑹/𝑫)/𝑻𝒓𝒐𝒋𝒂𝒏/𝑸𝒖𝒂𝒏𝑿/𝑺𝒖𝒓𝒈𝒆/𝑯𝑻𝑻𝑷(𝑺) 订阅 +☑︎ 提供说明 1⃣️ 中的可选个性化参数(筛选、重命名 等) +❷ 𝗿𝗲𝘄𝗿𝗶𝘁𝗲(重写) & 𝗳𝗶𝗹𝘁𝗲𝗿(分流) 的 转换&筛选 +☑︎ 用于禁用远程引用中某(几)项 𝗿𝗲𝘄𝗿𝗶𝘁𝗲/𝗵𝗼𝘀𝘁𝗻𝗮𝗺𝗲/𝗳𝗶𝗹𝘁𝗲𝗿 +☑︎ 𝐒𝐮𝐫𝐠𝐞 类型规则 𝗹𝗶𝘀𝘁 与 模块 𝐦𝐨𝐝𝐮𝐥𝐞 的解析使用 ---------------------------------------------------------- 0️⃣ ⟦原始链接⟧ 后加 "#" 使用, 不同参数用 "&" 连接: -⚠️ ☞ 𝐡𝐭𝐭𝐩𝐬://𝐦𝐲𝐬𝐮𝐛.𝐜𝐨𝐦#𝗶𝗻=香港+台湾&𝗲𝗺𝗼𝗷𝗶=1&𝘁𝗳𝗼=1 +⚠️ ☞ 𝐡𝐭𝐭𝐩𝐬://𝐦𝐲𝐬𝐮𝐛.𝐜𝐨𝐦#𝙚𝙢𝙤𝙟𝙞=1&𝙩𝙛𝙤=1&𝙞𝙣=香港+台湾 ❖ 本地资源引用, 请将参数 "#𝗶𝗻=𝘅𝘅𝘅..." 填入资源文件第一行 ❖ 1️⃣ ⟦𝐬𝐞𝐫𝐯𝐞𝐫 节点⟧ ➠ 参数说明: @@ -42,10 +41,11 @@ B. 𝗿𝗲𝘄𝗿𝗶𝘁𝗲(重写) /𝗳𝗶𝗹𝘁𝗲𝗿(分流) 的 2⃣️ ⟦𝐫𝐞𝐰𝐫𝐢𝐭𝐞 重写⟧/⟦𝐟𝐢𝐥𝐭𝐞𝐫 分流⟧ ➠ 参数说明: ⦿ 𝗶𝗻, 𝗼𝘂𝘁, 根据关键词 保留/禁用 相关的规则、重写; ⦿ 𝗶𝗻𝗵𝗻, 𝗼𝘂𝘁𝗵𝗻, “保留/删除”主机名(𝒉𝒐𝒔𝒕𝒏𝒂𝒎𝒆); -⦿ 𝗱𝘀𝘁=𝗿𝗲𝗴𝗲𝘅/𝘀𝗰𝗿𝗶𝗽𝘁,分别为只保留 𝐒𝐮𝐫𝐠𝐞-𝐦𝐨𝐝𝐮𝐥𝐞/𝐩𝐫𝐨𝐟𝐢𝐥𝐞 中的 𝐮𝐫𝐥-𝐫𝐞𝐠𝐞𝐱/𝐬𝐜𝐫𝐢𝐩𝐭(302/307), 默认全部保留; -⦿ 分流规则另有 "𝗽𝗼𝗹𝗶𝗰𝘆=𝘅𝘅𝘅" 参数, 可用于直接指定策略组,或为 𝐒𝐮𝐫𝐠𝐞 类型 𝗿𝘂𝗹𝗲-𝘀𝗲𝘁 生成策略组(默认"𝐒𝐡𝐚𝐰𝐧"策略组); -⦿ 示范: 禁用重写引用中 "淘宝比价 js" 以及 "weibo" 的 js 同主机名 + ❖ 示范: 禁用 "淘宝比价" 及 "weibo" 的 js 同主机名 𝐡𝐭𝐭𝐩𝐬://𝐦𝐲𝐥𝐢𝐬𝐭#𝒐𝒖𝒕=𝒕𝒃_𝒑𝒓𝒊𝒄𝒆.𝒋𝒔+𝒘𝒃_𝒂𝒅.𝒋𝒔&𝒐𝒖𝒕𝒉𝒏=𝒘𝒆𝒊𝒃𝒐 +⦿ 𝗱𝘀𝘁=𝗿𝗲𝗴𝗲𝘅/𝘀𝗰𝗿𝗶𝗽𝘁,分别为只保留 𝐒𝐮𝐫𝐠𝐞-𝐦𝐨𝐝𝐮𝐥𝐞 中的 𝐮𝐫𝐥-𝐫𝐞𝐠𝐞𝐱/𝐬𝐜𝐫𝐢𝐩𝐭(302/307), 默认全部保留; + ❖ 把含 𝐮𝐫𝐥-𝐫𝐞𝐠𝐞𝐱 的 𝗿𝘂𝗹𝗲-𝘀𝗲𝘁 转成重写时, 一定要 𝗱𝘀𝘁=𝗿𝗲𝗴𝗲𝘅 +⦿ 𝗽𝗼𝗹𝗶𝗰𝘆 参数, 用于直接指定策略组,或为 𝐒𝐮𝐫𝐠𝐞 类型 𝗿𝘂𝗹𝗲-𝘀𝗲𝘁 生成策略组(默认"𝐒𝐡𝐚𝐰𝐧"策略组); 3⃣️ 通知参数 𝗻𝘁𝗳=0/1, 用于 关闭/打开 资源解析器的提示通知 ⦿ 𝗿𝗲𝘄𝗿𝗶𝘁𝗲/𝗳𝗶𝗹𝘁𝗲𝗿 默认“开启”通知提示, 以防规则误删除 @@ -92,6 +92,7 @@ const rwrite_link = {"open-url":link0.split("#")[0], "media-url": "https://shrtm const rwhost_link = {"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/0n5J"} const rule_link={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/cpHD"} const nan_link={"open-url":link0.split("#")[0], "media-url": qxpng} +const bug_link={"open-url":"https://t.me/Shawn_KOP_bot", "media-url": "https://shrtm.nu/obcB"} // bug link const sub_link={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/ebAr"} const subinfo_link1={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/uo13"} @@ -177,11 +178,11 @@ if(type0=="Subs-B64Encode"){ total=content0.split("\n"); total=Rule_Handle(total,Pout0,Pin0); }else if(content0.trim()==""){ - $notify("‼️ 引用"+"⟦"+subtag+"⟧"+" 链接返回內容为空","⁉️请自行复制原始链接到浏览器, 确认链接是否失效",para.split("#")[0],nan_link); + $notify("‼️ 引用"+"⟦"+subtag+"⟧"+" 返回內容为空","⁉️ 点通知跳转以确认链接是否失效",para.split("#")[0],nan_link); flag=0; $done({content : ""}) }else if(type0=="unknown"){ - $notify("😭 太难写了, 可能是 bug ⁉️ "+"⟦"+subtag+"⟧", "👻 本解析器 暂未支持/未能识别 该订阅格式", "⚠️ 已尝试直接导入Quantumult X",nan_link); + $notify("😭 太难写了, 可能是 bug ⁉️ "+"⟦"+subtag+"⟧", "👻 本解析器 暂未支持/未能识别 该订阅格式", "⚠️ 将直接导入Quantumult X \n 如认为是 BUG, 请点通知跳转反馈",bug_link); $done({content : content0}); flag=-1; }else { flag=0 } @@ -273,7 +274,7 @@ function Type_Check(subs){ var subsn=subs.split("\n") //$notify("Subs","cnt",subs) if(subs.indexOf(html)!=-1){ - $notify("‼️ 该链接返回内容有误","⁉️ 请自行复制原始链接到浏览器, 确认链接是否失效",link0,nan_link); + $notify("‼️ 该链接返回内容有误","⁉️ 点通知跳转以确认链接是否失效",link0,nan_link); type="web"; } else if(subsn.length>=1 && SubK2.some(SubCheck)){ //未b64加密的多行URI 组合订阅 type="Subs" @@ -285,7 +286,7 @@ function Type_Check(subs){ type="Surge"; // Surge Profiles } else if(SurgeK.some(SurgeCheck)){ type="Subs" // Surge proxy list - } else if(subi.indexOf("[Script]")!=-1 || subi.indexOf("[Rule]")!=-1 || subi.indexOf("[URL Rewrite]")!=-1){ // Surge module /profile 类型 + } else if(subi.indexOf("[Script]")!=-1 || subi.indexOf("[Rule]")!=-1 || subi.indexOf("[URL Rewrite]")!=-1 || para1.indexOf("dst=regex")!=-1){ // Surge module /rule-set(url-regex) 类型 type="sgmodule" }else if(subi.indexOf("hostname=")!=-1 || RewriteK.some(RewriteCheck)){ type="rewrite"