mirror of
https://github.com/KOP-XIAO/QuantumultX.git
synced 2026-01-25 13:05:10 +00:00
支持解析 surge2 的旧格式:custom ...
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
/**
|
/**
|
||||||
# Quantumult X 资源解析器 (2020-05-17: 12:59 )
|
# Quantumult X 资源解析器 (2020-05-20: 12:59 )
|
||||||
|
|
||||||
本资源解析器作者: Shawn(请勿私聊问怎么用),有bug请反馈: @Shawn_KOP_bot
|
本资源解析器作者: Shawn(请勿私聊问怎么用),有bug请反馈: @Shawn_KOP_bot
|
||||||
更新请关注tg频道: https://t.me/QuanX_API
|
更新请关注tg频道: https://t.me/QuanX_API
|
||||||
|
|
||||||
主要功能: 将各类服务器订阅解析成 QuantumultX 格式引用(支持 V2RayN/SSR/SS/Trojan/QuanX(conf&list)/Surge3⬆️(conf&list)格式),并提供 1⃣️ 中的可选参数;
|
主要功能: 将各类服务器订阅解析成 QuantumultX 格式引用(支持 V2RayN/SSR/SS/Trojan/QuanX(conf&list)/Surge(conf&list)格式),并提供 1⃣️ 中的可选参数;
|
||||||
|
|
||||||
附加功能: rewrite(重写) /filter(分流) 过滤, 可用于解决无法单独禁用远程引用中某(几)条 rewrite/hostname/filter, 以及直接导入 Surge 类型规则 list 的问题
|
附加功能: rewrite(重写) /filter(分流) 过滤, 可用于解决无法单独禁用远程引用中某(几)条 rewrite/hostname/filter, 以及直接导入 Surge 类型规则 list 的问题
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ function Type_Check(subs){
|
|||||||
var type=""
|
var type=""
|
||||||
var RuleK=["host","domain","ip-cidr","geoip","user-agent","ip6-cidr"];
|
var RuleK=["host","domain","ip-cidr","geoip","user-agent","ip6-cidr"];
|
||||||
var QuanXK=["shadowsocks=","trojan=","vmess=","http="];
|
var QuanXK=["shadowsocks=","trojan=","vmess=","http="];
|
||||||
var SurgeK=["=ss","=vmess","=trojan","=http"];
|
var SurgeK=["=ss","=vmess","=trojan","=http","=custom"];
|
||||||
var SubK=["dm1lc3M6Ly","c3NyOi8v","dHJvamFu","c3M6Ly"];
|
var SubK=["dm1lc3M6Ly","c3NyOi8v","dHJvamFu","c3M6Ly"];
|
||||||
var SubK2=["ss://","vmess://","ssr://","trojan://"];
|
var SubK2=["ss://","vmess://","ssr://","trojan://"];
|
||||||
var subi=subs.replace(/ /g,"")
|
var subi=subs.replace(/ /g,"")
|
||||||
@@ -283,7 +283,7 @@ function SubsEd2QX(subs,Pudp,Ptfo,Pcert,Ptls13){
|
|||||||
const $base64 = new Base64()
|
const $base64 = new Base64()
|
||||||
var list0=$base64.decode(subs).split("\n");
|
var list0=$base64.decode(subs).split("\n");
|
||||||
var QuanXK=["shadowsocks=","trojan=","vmess=","http="];
|
var QuanXK=["shadowsocks=","trojan=","vmess=","http="];
|
||||||
var SurgeK=["=ss","=vmess","=trojan","=http"];
|
var SurgeK=["=ss","=vmess","=trojan","=http","=custom"];
|
||||||
var QXlist=[];
|
var QXlist=[];
|
||||||
var node=""
|
var node=""
|
||||||
for(i=0;i<list0.length;i++){
|
for(i=0;i<list0.length;i++){
|
||||||
@@ -647,20 +647,44 @@ function Surge2QX(conf){
|
|||||||
for(i=0;i<QXlist.length;i++){
|
for(i=0;i<QXlist.length;i++){
|
||||||
var cnt=QXlist[i];
|
var cnt=QXlist[i];
|
||||||
//console.log(cnt)
|
//console.log(cnt)
|
||||||
if(cnt.indexOf("trojan")!=-1){
|
if(cnt.split("=")[1].split(",")[0].indexOf("trojan")!=-1){
|
||||||
Nlist.push(Strojan2QX(cnt))
|
Nlist.push(Strojan2QX(cnt))//surge 3的trojan
|
||||||
}else if(cnt.split("=")[1].split(",")[0].indexOf("http")!=-1){
|
}else if(cnt.split("=")[1].split(",")[0].indexOf("http")!=-1){
|
||||||
Nlist.push(Shttp2QX(cnt))
|
Nlist.push(Shttp2QX(cnt)) //surge 3的http
|
||||||
}else if(cnt.split("=")[1].split(",")[0].indexOf("vmess")!=-1){
|
}else if(cnt.split("=")[1].split(",")[0].indexOf("vmess")!=-1){
|
||||||
Nlist.push(SVmess2QX(cnt))
|
Nlist.push(SVmess2QX(cnt)) //surge 3的Vmess
|
||||||
}else if(cnt.split("=")[1].split(",")[0].indexOf("ss")!=-1){
|
}else if(cnt.split("=")[1].split(",")[0].indexOf("ss")!=-1){
|
||||||
Nlist.push(SSS2QX(cnt))
|
Nlist.push(SSS2QX(cnt)) //surge 3的SS
|
||||||
|
}else if(cnt.split("=")[1].split(",")[0].indexOf("custom")!=-1){
|
||||||
|
Nlist.push(SCT2QX(cnt)) //surge2写法
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(Nlist)
|
return(Nlist)
|
||||||
//console.log(Nlist)
|
//console.log(Nlist)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// surge2 中的 SS 类型写法(custom)
|
||||||
|
//🇷🇺 俄罗斯 GIA = custom, ip, 152, aes-128-gcm, password123, https://dler.cloud/download/SSEncrypt.module, obfs=tls, obfs-host=xxx.windows.com, udp-relay=true
|
||||||
|
function SCT2QX(content){
|
||||||
|
var cnt=content;
|
||||||
|
var tag="tag="+cnt.split("=")[0].trim();
|
||||||
|
var ipport=cnt.split(",")[1].trim()+":"+cnt.split(",")[2].trim();
|
||||||
|
var pmtd="method="+cnt.split(",")[3].trim();
|
||||||
|
var pwd="password="+cnt.split(",")[4].trim();
|
||||||
|
if(cnt.indexOf("obfs")!=-1){
|
||||||
|
pobfs="obfs="+cnt.replace(/obfs-host/,"").split("obfs")[1].split(",")[0].split("=")[1]
|
||||||
|
}else {pobfs=""}
|
||||||
|
var phost=cnt.indexOf("obfs-host")!=-1? "obfs-host"+cnt.split("obfs-host")[1].split(",")[0].trim():"";
|
||||||
|
if(phost!=""){
|
||||||
|
pobfs=pobfs+", "+phost
|
||||||
|
}
|
||||||
|
var ptfo= paraCheck(cnt,"tfo")=="true"? "fast-open=true":"fast-open=false";
|
||||||
|
var pudp= paraCheck(cnt,"udp")=="true"? "udp-relay=true":"udp-relay=false";
|
||||||
|
var nserver= pobfs!=""? "shadowsocks= "+[ipport,pmtd,pwd,pobfs,ptfo,pudp,tag].join(", "):"shadowsocks= "+[ipport,pmtd,pwd,ptfo,pudp,tag].join(", ");
|
||||||
|
return nserver
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// surge 中的 SS 类型
|
// surge 中的 SS 类型
|
||||||
function SSS2QX(content){
|
function SSS2QX(content){
|
||||||
var cnt=content;
|
var cnt=content;
|
||||||
@@ -715,7 +739,7 @@ function SVmess2QX(content){
|
|||||||
function isSurge(content){
|
function isSurge(content){
|
||||||
if(content.indexOf("=")!=-1){
|
if(content.indexOf("=")!=-1){
|
||||||
cnt=content.split("=")[1].split(",")[0].trim()
|
cnt=content.split("=")[1].split(",")[0].trim()
|
||||||
if(cnt=="http"||cnt=="ss"||cnt=="trojan"||cnt=="vmess"){
|
if(cnt=="http"||cnt=="ss"||cnt=="trojan"||cnt=="vmess"||cnt=="custom"){
|
||||||
return content
|
return content
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user