This commit is contained in:
Shawn
2021-03-21 10:10:37 +08:00
parent 4e9514ea60
commit ab875c087e

View File

@@ -1,5 +1,5 @@
/**
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-03-20 21:59⟧
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-03-21 10:59⟧
----------------------------------------------------------
🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
@@ -47,6 +47,7 @@
❖ 指定规则是正则表达式或简单关键词, 用"<" 或 ">" 连接
❖ sort=🇭🇰>🇸🇬>🇯🇵>🇺🇸 , 靠前排序
❖ sort=IEPL<IPLC<BGP , 靠后排序
⦿ del=0, 当有重名节点时, 用此参数保留重名节点
⦿ ⟦进阶参数⟧: 𝘀𝗳𝗶𝗹𝘁𝗲𝗿/𝘀𝗿𝗲𝗻𝗮𝗺𝗲, 传入一段 base64 编码的脚本, 可用于更为复杂的[过滤/重命名] 需求
❖ 说明: https://github.com/KOP-XIAO/QuantumultX/pull/9
@@ -54,18 +55,19 @@
⦿ in, out, 根据关键词 保留/禁用 相关分流、重写规则;
⦿ inhn, outhn, “保留/删除”主机名(𝒉𝒐𝒔𝒕𝒏𝒂𝒎𝒆);
❖ 示范: 禁用 "淘宝比价" 及 "weibo" 的 js 同主机名
𝐡𝐭𝐭𝐩𝐬://𝐦𝐲𝐥𝐢𝐬𝐭#𝒐𝒖𝒕=𝒕𝒃_𝒑𝒓𝒊𝒄𝒆.𝒋𝒔+𝒘𝒃_𝒂𝒅.𝒋𝒔&𝒐𝒖𝒕𝒉𝒏=𝒘𝒆𝒊𝒃𝒐
𝐡𝐭𝐭𝐩𝐬://𝐦𝐲𝐥𝐢𝐬𝐭#𝒐𝒖𝒕=tb_price.js+wb_ad.js&outhn=weibo
⦿ regex, 正则筛选, 请自行折腾正则表达式;
❖ 可与 in(hn)/out(hn) 一起使用in(hn)/out(hn) 会优先执行;
❖ 对 𝒉𝒐𝒔𝒕𝒏𝒂𝒎𝒆 & 𝐫𝐞𝐰𝐫𝐢𝐭𝐞/𝐟𝐢𝐥𝐭𝐞𝐫 同时生效(⚠️ 慎用)
⦿ policy 参数, 用于直接指定策略组,或为 𝐒𝐮𝐫𝐠𝐞 类型 𝗿𝘂𝗹𝗲-𝘀𝗲𝘁 生成策略组(默认"𝐒𝐡𝐚𝐰𝐧"策略组);
⦿ replace 参数, 正则替换 𝐟𝐢𝐥𝐭𝐞𝐫/𝐫𝐞𝐰𝐫𝐢𝐭𝐞 内容, regex@newregex;
❖ 将淘宝比价中脚本替换成 lite 版本, tiktok 中 JP 换成 KR
∎ replace=(𝐩𝐫𝐢𝐜𝐞)(.*)@$1_𝐥𝐢𝐭𝐞$2+𝐣𝐩@𝐤𝐫
∎ replace=(price)(.*)@$1_lite$2+jp@kr
⦿ dst=rewrite/filter分别为将 𝐦𝐨𝐝𝐮𝐥𝐞&𝗿𝘂𝗹𝗲-𝘀𝗲𝘁 转换成 重写/分流;
❖ ⚠️ 默认将 𝐦𝐨𝐝𝐮𝐥𝐞 转换到重写, 𝗿𝘂𝗹𝗲-𝘀𝗲𝘁 转成分流
❖ ⚠️ 把 𝗿𝘂𝗹𝗲-𝘀𝗲𝘁𝐮𝐫𝐥-𝐫𝐞𝐠𝐞𝐱 转成重写时, 必须要加 dst=rewrite;
❖ ⚠️ 把 𝐦𝐨𝐝𝐮𝐥𝐞 中的分流规则转换时, 必须要加 dst=filter
⦿ cnd=1, 将 github 脚本的地址转换成免翻墙cdn.jsdelivr.net
3⃣ 其他参数
⦿ 通知参数 ntf=0/1, 用于 关闭/打开 资源解析器的提示通知
@@ -155,6 +157,7 @@ var pfohn = Phout0 ? "outhn=" + Phout0.join(", ") : ""
var Pcnt = para1.indexOf("cnt=") != -1 ? para1.split("cnt=")[1].split("&")[0] : 0;
var Pcap = para1.indexOf("cap=") != -1 ? para1.split("cap=")[1].split("&")[0] : "";
var Pptn = para1.indexOf("ptn=") != -1 ? para1.split("ptn=")[1].split("&")[0] : "";
var Pcdn = para1.indexOf("cdn=") != -1 ? para1.split("cdn=")[1].split("&")[0] : "";
let [flow, exptime, errornode, total] = "";
var Pdel = mark0 && para1.indexOf("del=") != -1 ? para1.split("del=")[1].split("&")[0] : 1; //删除重复节点
var typeU = para1.indexOf("type=") != -1 ? para1.split("type=")[1].split("&")[0] : "";
@@ -211,6 +214,7 @@ function ParseUnkown(cnt){
}
function ResourceParse() {
//预处理,分流/重写等处理完成
if (type0 == "Subs-B64Encode") {
@@ -224,11 +228,13 @@ function ResourceParse() {
total = SGMD2QX(content0) // 转换
total = Rewrite_Filter(total, Pin0, Pout0,Preg); // 筛选过滤
if (Preplace) { total = ReplaceReg(total, Preplace) }
if (Pcdn) {total = CDN(total)}
total = total.join("\n")
} else if (type0 == "rewrite") { // rewrite 类型
flag = 2;
total = Rewrite_Filter(isQuanXRewrite(content0.split("\n")), Pin0, Pout0,Preg);
if (Preplace) { total = ReplaceReg(total, Preplace) }
if (Pcdn) {total = CDN(total)}
total = total.join("\n")
} else if (type0 == "Rule") { // rule 类型, 已处理完毕
flag = 3;
@@ -579,7 +585,11 @@ function ToRaw(cnt) {
return cnt
}
function CDN(cnt) {
console.log("CDN start")
cnt = cnt.join("\n").replace(/https:\/\/raw.githubusercontent.com\/(.*?)\/(.*?)\/(.*)/gmi,"https://cdn.jsdelivr.net/gh/$1/$2@$3")
return cnt
}
//url-regex 转换成 Quantumult X
function URX2QX(subs) {