delreg参数

This commit is contained in:
Shawn
2020-07-04 17:09:58 +08:00
parent ae96b7b5b8
commit 91bb3ebd30

View File

@@ -1,5 +1,5 @@
/** /**
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-07-03 14:59⟧ ☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-07-04 17:59⟧
---------------------------------------------------------- ----------------------------------------------------------
🚫 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot 🚫 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
@@ -12,7 +12,7 @@ A. 将各格式的服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥
B. rewrite(重写) /filter(分流) 的转换&筛选 B. rewrite(重写) /filter(分流) 的转换&筛选
✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter ✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter
✔︎ Surge 类型规则 list(不含策略组)的解析与使用 ✔︎ Surge 类型规则 list(不含策略组)的解析与使用
✔︎ Surge 模块/配置 URL-REGEX、302(7) 复写、Script 的解析 ✔︎ Surge 模块/配置 URL-REGEX、302(7) 复写、Script 的解析
---------------------------------------------------------- ----------------------------------------------------------
0⃣ ⟦原始订阅链接⟧ 后加 "#" , 不同参数用 "&" 连接: 0⃣ ⟦原始订阅链接⟧ 后加 "#" , 不同参数用 "&" 连接:
⚠️ ☞ https://mysub.com#in=香港+台湾&emoji=1&tfo=1 ⚠️ ☞ https://mysub.com#in=香港+台湾&emoji=1&tfo=1
@@ -34,6 +34,8 @@ B. rewrite(重写) /filter(分流) 的转换&筛选
⦿ rename 重命名、删除字段, "旧名@新名", "删除字段1.删除字段2☠", 以及 "前缀@", "@后缀",用 "+" 连接多个参数; ⦿ rename 重命名、删除字段, "旧名@新名", "删除字段1.删除字段2☠", 以及 "前缀@", "@后缀",用 "+" 连接多个参数;
❖ 如 "rename=香港@HK+[SS]@+@[1X]+倍率.流量☠️" ❖ 如 "rename=香港@HK+[SS]@+@[1X]+倍率.流量☠️"
❖ 如想删除 ".", 请用"rename=.@點+點☠️" 类似操作 ❖ 如想删除 ".", 请用"rename=.@點+點☠️" 类似操作
⦿ delreg, 利用正则参数来删除节点名中的字段(⚠️ 慎用)
❖ 如 "delreg=(标准|高级).*HKT"
⦿ sort=1, -1, x,分别根据节点名 正序/逆序/随机 排序; ⦿ sort=1, -1, x,分别根据节点名 正序/逆序/随机 排序;
2⃣ ⟦rewrite 重写⟧/⟦filter 分流⟧ ➠ 参数说明: 2⃣ ⟦rewrite 重写⟧/⟦filter 分流⟧ ➠ 参数说明:
@@ -75,6 +77,7 @@ para1=para.slice(para.indexOf("#")+1) //防止参数中其它位置也存在"#"
var Pin0=mark0 && para1.indexOf("in=")!=-1? (para1.split("in=")[1].split("&")[0].split("+")).map(decodeURIComponent):null; var Pin0=mark0 && para1.indexOf("in=")!=-1? (para1.split("in=")[1].split("&")[0].split("+")).map(decodeURIComponent):null;
var Pout0=mark0 && para1.indexOf("out=")!=-1? (para1.split("out=")[1].split("&")[0].split("+")).map(decodeURIComponent):null; var Pout0=mark0 && para1.indexOf("out=")!=-1? (para1.split("out=")[1].split("&")[0].split("+")).map(decodeURIComponent):null;
var Preg=mark0 && para1.indexOf("regex=")!=-1? decodeURIComponent(para1.split("regex=")[1].split("&")[0]):null; //server正则过滤参数 var Preg=mark0 && para1.indexOf("regex=")!=-1? decodeURIComponent(para1.split("regex=")[1].split("&")[0]):null; //server正则过滤参数
var Pregdel=mark0 && para1.indexOf("delreg=")!=-1? decodeURIComponent(para1.split("delreg=")[1].split("&")[0]):null; // 正则删除参数
//$notify(link0,"type0",type0) //$notify(link0,"type0",type0)
var Phin0=mark0 && para1.indexOf("inhn=")!=-1? (para1.split("inhn=")[1].split("&")[0].split("+")).map(decodeURIComponent):null; //hostname var Phin0=mark0 && para1.indexOf("inhn=")!=-1? (para1.split("inhn=")[1].split("&")[0].split("+")).map(decodeURIComponent):null; //hostname
var Phout0=mark0 && para1.indexOf("outhn=")!=-1? (para1.split("outhn=")[1].split("&")[0].split("+")).map(decodeURIComponent):null; //hostname var Phout0=mark0 && para1.indexOf("outhn=")!=-1? (para1.split("outhn=")[1].split("&")[0].split("+")).map(decodeURIComponent):null; //hostname
@@ -194,6 +197,10 @@ if(flag==3){
var Prn=Prname; var Prn=Prname;
total=total.map(Rename); total=total.map(Rename);
} }
if(Pregdel){
var delreg=Pregdel
total=total.map(DelReg)
}
if(Psort0==1 || Psort0==-1){ if(Psort0==1 || Psort0==-1){
total=QXSort(total,Psort0); total=QXSort(total,Psort0);
}else if(Psort0=="x"){ }else if(Psort0=="x"){
@@ -872,10 +879,12 @@ function SSR2QX(subs,Pudp,Ptfo){
ptfo= Ptfo==1? "fast-open=true":"fast-open=false"; ptfo= Ptfo==1? "fast-open=true":"fast-open=false";
nssr.push(type+ip,pwd,mtd,obfs+obfshost+oparam+ssrp,pudp,ptfo,tag) nssr.push(type+ip,pwd,mtd,obfs+obfshost+oparam+ssrp,pudp,ptfo,tag)
QX=nssr.join(", ") QX=nssr.join(", ")
} }else {QX=""}
return QX; return QX;
} }
//Trojan 类型 URI 转换成 QX //Trojan 类型 URI 转换成 QX
function TJ2QX(subs,Pudp,Ptfo,Pcert,Ptls13){ function TJ2QX(subs,Pudp,Ptfo,Pcert,Ptls13){
var ntrojan=[] var ntrojan=[]
@@ -1011,6 +1020,14 @@ function ToTagR(elem1,elem2){
return res return res
} }
//正则删除节点名内的字符
function DelReg(content){
delreg=RegExp(delreg,"gmi")
cnt0=content.split("tag=")[0]
cnt1=content.split("tag=")[1]
cnt=cnt0+"tag="+cnt1.replace(delreg,"")
return cnt
}
//节点重命名 //节点重命名
function Rename(str){ function Rename(str){
@@ -1023,7 +1040,7 @@ function Rename(str){
oname=Prn[i].split("@")[0]? decodeURIComponent(Prn[i].split("@")[0]):Prn[i].split("@")[0]; oname=Prn[i].split("@")[0]? decodeURIComponent(Prn[i].split("@")[0]):Prn[i].split("@")[0];
if(oname&&nname){ //重命名 if(oname&&nname){ //重命名
var rn=escapeRegExp(oname) var rn=escapeRegExp(oname)
name=name.replace(new RegExp(rn,"gm"),nname) name=name.replace(new RegExp(rn,"gmi"),nname)
}else if(oname && nname==""){//前缀 }else if(oname && nname==""){//前缀
var nemoji=emoji_del(name) var nemoji=emoji_del(name)
if(Pemoji==1 || Pemoji==2){ //判断是否有重复 emoji有则删除旧有 if(Pemoji==1 || Pemoji==2){ //判断是否有重复 emoji有则删除旧有
@@ -1035,7 +1052,7 @@ function Rename(str){
hh=oname.slice(0,oname.length-2).split(".") hh=oname.slice(0,oname.length-2).split(".")
for(j=0;j<hh.length;j++){ for(j=0;j<hh.length;j++){
var nn=escapeRegExp(hh[j]) var nn=escapeRegExp(hh[j])
var del=new RegExp(nn,"gm"); var del=new RegExp(nn,"gmi");
name=name.replace(del,"") name=name.replace(del,"")
} }
}else if(oname=="" && nname==""){ //删除@符号 }else if(oname=="" && nname==""){ //删除@符号