mirror of
https://github.com/KOP-XIAO/QuantumultX.git
synced 2026-01-25 21:25:09 +00:00
粗略支持 SS 订阅类型
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
/**
|
/**
|
||||||
|
|
||||||
#QuantumultX 资源解析器(2020-04-26: 14:15)
|
#QuantumultX 资源解析器(2020-04-26: 15:30)
|
||||||
|
|
||||||
本资源解析器作者: Shawn(@XIAO_KOP), 有问题请反馈:@Shawn_KOP_bot
|
本资源解析器作者: Shawn(@XIAO_KOP), 有问题请反馈:@Shawn_KOP_bot
|
||||||
|
|
||||||
功能:将不同格式订阅转换成 QuantumultX,并提供一下参数
|
功能:将不同格式订阅转换成 QuantumultX,并提供一下参数
|
||||||
(目前支持 V2RayN/SSR/Trojan/Quanx 订阅)
|
(目前支持 V2RayN/SSR/SS/Trojan/Quanx 订阅)
|
||||||
|
|
||||||
0️⃣ 请在订阅链接后加入"#"符号后加入下列参数,如
|
0️⃣ 请在订阅链接后加入"#"符号后加入下列参数,如
|
||||||
"#in=香港+台湾&emoji=1&tfo=1"
|
"#in=香港+台湾&emoji=1&tfo=1"
|
||||||
@@ -54,7 +54,11 @@ if(type0=="Vmess"){
|
|||||||
}else if(type0=="Trojan"){
|
}else if(type0=="Trojan"){
|
||||||
total=TJ2QX(content0,Pudp0,Ptfo0);
|
total=TJ2QX(content0,Pudp0,Ptfo0);
|
||||||
flag=1;
|
flag=1;
|
||||||
}else{
|
}else if(type0=="SS"){
|
||||||
|
total=SS2QX(content0,Pudp0,Ptfo0);
|
||||||
|
flag=1
|
||||||
|
}
|
||||||
|
else{
|
||||||
$notify("👻该解析器暂未支持您的订阅格式","😭太难写了", "stay tuned");
|
$notify("👻该解析器暂未支持您的订阅格式","😭太难写了", "stay tuned");
|
||||||
flag=0;
|
flag=0;
|
||||||
$done({content : content0});
|
$done({content : content0});
|
||||||
@@ -95,6 +99,8 @@ function Type_Check(subs){
|
|||||||
type="SSR"
|
type="SSR"
|
||||||
} else if (subs.indexOf("dHJvamFu")!= -1){
|
} else if (subs.indexOf("dHJvamFu")!= -1){
|
||||||
type="Trojan"
|
type="Trojan"
|
||||||
|
} else if (subs.indexOf("c3M6Ly")!= -1){
|
||||||
|
type="SS"
|
||||||
}
|
}
|
||||||
return type
|
return type
|
||||||
}
|
}
|
||||||
@@ -186,6 +192,8 @@ function SSR2QX(subs,Pudp,Ptfo){
|
|||||||
if(list0[i].indexOf("ssr://")!=-1){
|
if(list0[i].indexOf("ssr://")!=-1){
|
||||||
var nssr=[]
|
var nssr=[]
|
||||||
var cnt=$base64.decode(list0[i].split("ssr://")[1].replace(/-/g,"+").replace(/_/g,"/")).split("\u0000")[0]
|
var cnt=$base64.decode(list0[i].split("ssr://")[1].replace(/-/g,"+").replace(/_/g,"/")).split("\u0000")[0]
|
||||||
|
var obfshost = '';
|
||||||
|
var oparam = '';
|
||||||
if(cnt.split(":").length<=6) { //排除难搞的 ipv6 节点
|
if(cnt.split(":").length<=6) { //排除难搞的 ipv6 节点
|
||||||
type="shadowsocks=";
|
type="shadowsocks=";
|
||||||
ip=cnt.split(":")[0]+":"+cnt.split(":")[1];
|
ip=cnt.split(":")[0]+":"+cnt.split(":")[1];
|
||||||
@@ -237,6 +245,37 @@ function TJ2QX(subs,Pudp,Ptfo){
|
|||||||
return QXList;
|
return QXList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//SS 转换 quanx 格式
|
||||||
|
function SS2QX(subs,Pudp,Ptfo){
|
||||||
|
const $base64 = new Base64()
|
||||||
|
var list0=$base64.decode(subs).split("\n");
|
||||||
|
//console.log(list0)
|
||||||
|
var QXList=[];
|
||||||
|
for(var i=0;i<list0.length; i++){
|
||||||
|
if(list0[i].indexOf("ss://")!=-1){
|
||||||
|
var nssr=[]
|
||||||
|
var cnt=list0[i].split("ss://")[1]
|
||||||
|
if(cnt.split(":").length<=6) { //排除难搞的 ipv6 节点
|
||||||
|
type="shadowsocks=";
|
||||||
|
ip=cnt.split("@")[1].split("/")[0];
|
||||||
|
pwdmtd=$base64.decode(cnt.split("@")[0].replace(/-/g,"+").replace(/_/g,"/")).split("\u0000")[0].split(":")
|
||||||
|
pwd="password="+pwdmtd[1];
|
||||||
|
mtd="method="+pwdmtd[0];
|
||||||
|
obfs= cnt.split("obfs%3D")[1]!=null ? ", obfs="+cnt.split("obfs%3D")[1].split("%3B")[0]+", ": "";
|
||||||
|
obfshost=cnt.split("obfs-host%3D")[1]!=null ? "obfs-host="+cnt.split("obfs-host%3D")[1].split("&")[0]: "";
|
||||||
|
tag="tag="+decodeURIComponent(cnt.split("#")[1])
|
||||||
|
pudp= Pudp==1? "udp-relay=true":"udp-relay=false";
|
||||||
|
ptfo= Ptfo==1? "fast-open=true":"fast-open=false";
|
||||||
|
nssr.push(type+ip,pwd,mtd+obfs+obfshost,pudp,ptfo,tag)
|
||||||
|
QX=nssr.join(", ")
|
||||||
|
//console.log(QX)
|
||||||
|
QXList.push(QX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QXList;
|
||||||
|
}
|
||||||
|
|
||||||
//节点重命名
|
//节点重命名
|
||||||
function Rename(str){
|
function Rename(str){
|
||||||
var server=str;
|
var server=str;
|
||||||
|
|||||||
Reference in New Issue
Block a user