This commit is contained in:
Shawn Wen
2025-05-14 16:26:23 +08:00
parent e2137002b0
commit 7ece7f5114
2 changed files with 23 additions and 10 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -1,5 +1,5 @@
/**
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2025-04-30 22:12
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2025-05-14 16:15
----------------------------------------------------------
🛠 发现 𝐁𝐔𝐆 请反馈: https://t.me/Shawn_Parser_Bot
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
@@ -220,6 +220,8 @@ var Palpn = mark0 && para1.indexOf("alpn=") != -1 && version >= 712? para1.split
var Pobfs = mark0 && para1.indexOf("obfs=") != -1 && version >= 770? para1.split("obfs=")[1].split("&")[0] : ""; // 指定特殊情况下的 obfs=xx-http 类型
var Psession = mark0 && para1.indexOf("tsession=") != -1 && version >= 771? para1.split("tsession=")[1].split("&")[0] : "";//tls-no-session-ticket and tls-no-session-reuse
// 0/1 代表关闭 session-ticket/reuse2 表示全部关闭。
var Pmix = mark0 && version>=844? 1 : 0 // allow rewrite and filter mix from version 844
var Pjsonjq = mark0 && version>=845? 0 : 1 // allow jsonjq from version 845
var RegoutList= [] ;//用于 regout参数删选提醒
// URL-Scheme 增加配置
@@ -583,7 +585,7 @@ function Type_Check(subs) {
var SurgeK = ["=ss,", "=vmess,", "=trojan,", "=http,", "=custom,", "=https,", "=shadowsocks", "=shadowsocksr", "=sock5", "=sock5-tls"];
var ClashK = ["proxies:"]
var SubK = ["dm1lc3M", "c3NyOi8v", "CnNzOi8", "dHJvamFu", "c3M6Ly", "c3NkOi8v", "c2hhZG93", "aHR0cDovLw", "aHR0cHM6L", "CnRyb2phbjo", "aHR0cD0", "aHR0cCA","U1RBVFVT"];
var RewriteK = [" url 302", " url 307", " url reject", " url script", " url req", " url res", " url echo", " url-and-header 302", " url-and-header 307", " url-and-header reject", " url-and-header script", " url-and-header req", " url-and-header res", " url-and-header echo"] // quantumult X 类型 rewrite
var RewriteK = [" url 302", " url 307", " url reject", " url script", " url req", " url res", " url echo", " url-and-header 302", " url-and-header 307", " url-and-header reject", " url-and-header script", " url-and-header req", " url-and-header res", " url-and-header echo", " url jsonjq"] // quantumult X 类型 rewrite
var SubK2 = ["ss://", "vmess://", "ssr://", "trojan://", "ssd://", "\nhttps://", "\nhttp://","socks://","ssocks://","vless://"];
var ModuleK = ["[Script]", "[Rule]", "[URL Rewrite]", "[Map Local]", "\nhttp-r", "script-path"]
var QXProfile = ["[filter_local]","[filter_remote]","[server_local]","[server_remote]"]
@@ -1082,7 +1084,7 @@ function URX2QX(subs) {
function SCP2QX(subs) {
var nrw = []
var rw = ""
var RewriteK = [" url 302", " url 307", " url reject", " url script", " url req", " url res", " url echo", " url-and-header 302", " url-and-header 307", " url-and-header reject", " url-and-header script", " url-and-header req", " url-and-header res", " url-and-header echo"] // quantumult X 类型 rewrite
var RewriteK = [" url 302", " url 307", " url reject", " url script", " url req", " url res", " url echo", " url-and-header 302", " url-and-header 307", " url-and-header reject", " url-and-header script", " url-and-header req", " url-and-header res", " url-and-header echo", " url jsonjq"] // quantumult X 类型 rewrite
subs = subs.split("\n").map(x => x.trim().replace(/\s+/g," "))
//$notify("Script","",subs)
for (var i = 0; i < subs.length; i++) {
@@ -1119,13 +1121,13 @@ function SCP2QX(subs) {
rw = ptn + " url " + type + js
nrw.push(rw)
}
} else if (/\s30(7|2)$/.test(subs[i])) { //rewrite 302&307 复写(Surge)
} else if (/\d\s30(7|2)$/.test(subs[i])) { //rewrite 302&307 复写(Surge)
//tpe = subs[i].indexOf(" 302") != -1? "302":"307"
//$notify("307/2",subs[i])
rw = subs[i].split(" ")[0] + " url " + subs[i].split(" ")[2] + " " + subs[i].split(" ")[1].trim()
//if(rw.indexOf("307")!=-1) {$notify("XX",subs[i],rw.split(" "))}
nrw.push(rw)
} else if (/\s\-\s30(2|7)\s/.test(subs[i])) { //rewrite 302&307 复写(Shadowrocket)
} else if (/\d\s\-\s30(2|7)\s/.test(subs[i])) { //rewrite 302&307 复写(Shadowrocket)
//xx - 302 $1$2$3
rw = subs[i].replace(" - "," url ")
nrw.push(rw)
@@ -1194,10 +1196,11 @@ function Rewrite_Filter(subs, Pin, Pout,Preg,Pregout) {
var hnc = 0;
var dwrite = []
var hostname = ""
//$notify("S0","Content",subs)
for (var i = 0; i < subs.length; i++) {
subi = subs[i].trim();
var subii = subi.replace(/ /g, "")
if (subi != "" && (subi.indexOf(" url ")!=-1 || subi.indexOf(" url-and-header ")!=-1 || /^hostname\=/.test(subii))) {
if (subi != "" && (subi.indexOf(" url ")!=-1 || subi.indexOf("host")!=-1 || subi.indexOf(" url-and-header ")!=-1 || /^hostname\=/.test(subii))) {
const notecheck = (item) => subi.indexOf(item) == 0
if (noteK.some(notecheck)) { // 注释项跳过
continue;
@@ -1216,6 +1219,7 @@ function Rewrite_Filter(subs, Pin, Pout,Preg,Pregout) {
}
}
}
if (Pntf0 != 0) {
nowrite = dwrite.length <= 10 ? emojino[dwrite.length] : dwrite.length
no1write = Nlist.length <= 10 ? emojino[Nlist.length] : Nlist.length
@@ -1229,6 +1233,7 @@ function Rewrite_Filter(subs, Pin, Pout,Preg,Pregout) {
}
}
}
if (Nlist.length == 0 ) {
if ((Pin0 || Pout0 || Phin0 || Phout0 || Pregout || Preg)) {
$notify("🤖 " + "重写引用 ➟ " + "⟦" + subtag + "⟧", "⛔️ 筛选参数: " + pfi + pfo, "⚠️ 筛选后剩余rewrite规则数为 0⃣ 条, 请检查参数及原始链接", nan_link)
@@ -1243,6 +1248,7 @@ function Rewrite_Filter(subs, Pin, Pout,Preg,Pregout) {
RegCheck(Nlist, "重写引用", "regout", Pregout) }
if (hostname != "") { Nlist.push(hostname) }
Nlist =Phide ==1? Nlist : [...dwrite,...Nlist]
//$notify("final","Content",Nlist)
return Nlist
}
@@ -1318,6 +1324,7 @@ function Rule_Handle(subs, Pout, Pin) {
var nlist = []
var RuleK = ["//", "#", ";","[","^"]; //排除项目
var RuleK2 = ["host,", "-suffix,", "domain,", "-keyword,", "ip-cidr,", "ip-cidr6,", "geoip,", "user-agent,", "ip6-cidr,", "ip-asn"];
//$notify("nlist-s0","",subs)
if (Tout != "" && Tout != null) { // 有 out 参数时
var dlist = [];
for (var i = 0; i < cnt.length; i++) {
@@ -1428,7 +1435,9 @@ function Rule_Policy(content) { //增加、替换 policy
} else { return "" }
if (cnt[0].indexOf("URL-REGEX") != -1 || cnt[0].indexOf("PROCESS") != -1) {
nn = ""
} else { nn = nn.replace("IP-CIDR6", "ip6-cidr") }
} else {
nn = nn.replace("IP-CIDR6", "ip6-cidr").replace(/^(domain|Domain|DOMAIN)/,"host")
}
return nn
} else if (cnt.length == 1 && !RuleK.some(RuleCheck) && cnt[0]!="" && cnt[0].indexOf("payload:")==-1 && cnt[0].indexOf("=")==-1 && cnt[0].trim()!="https:") { // 纯域名/ip 列表
//$notify("LIST-HANDLE")
@@ -2338,7 +2347,7 @@ function isQuanX(content) {
//surge script/quanx-rewrite - > quanx
function isQuanXRewrite(content) {
cnt = content
cnt = content.filter(Boolean)
cnt0=[]
var RuleK = ["host,", "-suffix,", "domain,", "-keyword,", "ip-cidr,", "ip-cidr6,", "geoip,", "user-agent,", "ip6-cidr,","force-http", "ip-asn"];
for (var i = 0; i< cnt.length; i++){
@@ -2361,18 +2370,22 @@ function isQuanXRewrite(content) {
cnti= cnti.split(" ")[1] == "url" ? cnti : ""
} else if (cnti.indexOf(" url-and-header ")!=-1 ){ // url-and-header : ^https:xxx.com header-content url-and-header type-rule content
cnti= cnti //cnti.split(" ")[2] == "url-and-header" ? cnti : ""
} else if (RuleK.some(RuleCheck) && Pmix==1) {
cnti= Rule_Policy(cnti)
} else if (Pjsonjq==0 && cnti.indexOf(" url jsonjq-")!=-1) { // lower version jsonjq pass
cnti=""
} else {
cnti=""
}
if (cnti!="" && cnti.trim()[0]!="[" && cnti.indexOf("RULE-SET")==-1 && !/cronexp\=|type\=cron/.test(cnti.replace(/ /g,"")) && !RuleK.some(RuleCheck)) {
if (cnti!="" && cnti.trim()[0]!="[" && cnti.indexOf("RULE-SET")==-1 && !/cronexp\=|type\=cron/.test(cnti.replace(/ /g,""))) { //&& !RuleK.some(RuleCheck)
if (!(/\;$/.test(cnti))) { // 某些特殊情形 let url = xxx;
cnt0.push(cnti) // 排除其它项目后写入
//$notify(cnti,"已经写入")
}
}
}
}
//console.log(cnt0)
//$notify("RWT","",cnt0)
return cnt0
}