mirror of
https://github.com/KOP-XIAO/QuantumultX.git
synced 2026-01-25 21:25:09 +00:00
type0/1/2/3
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-12-31 11:59⟧
|
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-01-03 13:59⟧
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
|
🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
|
||||||
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
|
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
|
||||||
@@ -32,6 +32,8 @@
|
|||||||
❖ 删除字段: "字段1.字段2☠️", 想删除 "." 时用 "\." 替代
|
❖ 删除字段: "字段1.字段2☠️", 想删除 "." 时用 "\." 替代
|
||||||
❖ 示范: "𝐫𝐞𝐧𝐚𝐦𝐞=香港@𝐇𝐊+[𝐒𝐒]@+@[1𝐗]+流量.0\.2☠️"
|
❖ 示范: "𝐫𝐞𝐧𝐚𝐦𝐞=香港@𝐇𝐊+[𝐒𝐒]@+@[1𝐗]+流量.0\.2☠️"
|
||||||
❖ 默认 emoji 先生效, 如想调换顺序, 请用 𝗿𝗿𝗻𝗮𝗺𝗲 参数
|
❖ 默认 emoji 先生效, 如想调换顺序, 请用 𝗿𝗿𝗻𝗮𝗺𝗲 参数
|
||||||
|
❖ $type0/1/2/3 ,将节点类型(ss/ssr/vmess 等)作为可操作参数,如
|
||||||
|
∎ 𝐫𝐞𝐧𝐚𝐦𝐞=香港@𝐇𝐊|$type2
|
||||||
⦿ 𝘀𝘂𝗳𝗳𝗶𝘅=-1/1 将节点类型做为前缀/后缀 添加在节点名中, 如 「𝗌𝗌」 「𝖵𝗆𝖾𝗌𝗌」
|
⦿ 𝘀𝘂𝗳𝗳𝗶𝘅=-1/1 将节点类型做为前缀/后缀 添加在节点名中, 如 「𝗌𝗌」 「𝖵𝗆𝖾𝗌𝗌」
|
||||||
⦿ 𝗱𝗲𝗹𝗿𝗲𝗴, 利用正则表达式来删除 "节点名" 中的字段(⚠️ 慎用)
|
⦿ 𝗱𝗲𝗹𝗿𝗲𝗴, 利用正则表达式来删除 "节点名" 中的字段(⚠️ 慎用)
|
||||||
⦿ 𝗿𝗲𝗽𝗹𝗮𝗰𝗲 参数, 正则替换节点中内容, 可用于重命名/更改加密方式等
|
⦿ 𝗿𝗲𝗽𝗹𝗮𝗰𝗲 参数, 正则替换节点中内容, 可用于重命名/更改加密方式等
|
||||||
@@ -85,17 +87,16 @@ resource_parser_url = https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/mas
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 解析器正常使用,調試註釋此部分
|
//beginning 解析器正常使用,調試註釋此部分
|
||||||
|
|
||||||
let [link0, content0, subinfo] = [$resource.link, $resource.content, $resource.info]
|
let [link0, content0, subinfo] = [$resource.link, $resource.content, $resource.info]
|
||||||
const subtag = $resource.tag != undefined ? $resource.tag : "";
|
const subtag = $resource.tag != undefined ? $resource.tag : "";
|
||||||
////// 非 raw 链接的沙雕情形
|
////// 非 raw 链接的沙雕情形
|
||||||
content0 = content0.indexOf("DOCTYPE html") != -1 && link0.indexOf("github.com") != -1 ? ToRaw(content0) : content0 ;
|
content0 = content0.indexOf("DOCTYPE html") != -1 && link0.indexOf("github.com") != -1 ? ToRaw(content0) : content0 ;
|
||||||
|
//ends 正常使用部分,調試註釋此部分
|
||||||
//正常使用部分,調試註釋此部分
|
|
||||||
|
|
||||||
var para = /^(http|https)\:\/\//.test(link0) ? link0 : content0.split("\n")[0];
|
var para = /^(http|https)\:\/\//.test(link0) ? link0 : content0.split("\n")[0];
|
||||||
var para1 = para.slice(para.indexOf("#") + 1) //防止参数中其它位置也存在"#"
|
var para1 = para.slice(para.indexOf("#") + 1).replace(/\$type/g,"node_type_para_prefix") //防止参数中其它位置也存在"#"
|
||||||
var mark0 = para.indexOf("#") != -1 ? true : false; //是否有參數需要解析
|
var mark0 = para.indexOf("#") != -1 ? true : false; //是否有參數需要解析
|
||||||
var Pinfo = mark0 && para1.indexOf("info=") != -1 ? para1.split("info=")[1].split("&")[0] : 0;
|
var Pinfo = mark0 && para1.indexOf("info=") != -1 ? para1.split("info=")[1].split("&")[0] : 0;
|
||||||
var ntf_flow = 0;
|
var ntf_flow = 0;
|
||||||
@@ -251,6 +252,7 @@ function ResourceParse() {
|
|||||||
if (total.length > 0){
|
if (total.length > 0){
|
||||||
if (Psuffix==1 || Psuffix==-1) {total = Psuffix == 1? total.map(type_suffix):total.map(type_prefix)
|
if (Psuffix==1 || Psuffix==-1) {total = Psuffix == 1? total.map(type_suffix):total.map(type_prefix)
|
||||||
}
|
}
|
||||||
|
total = total.map(type_handle)
|
||||||
total = TagCheck_QX(total).join("\n") //节点名检查
|
total = TagCheck_QX(total).join("\n") //节点名检查
|
||||||
if (Pcnt == 1) {$notify("解析后最终返回内容" , "节点数量: " +total.split("\n").length, total)}
|
if (Pcnt == 1) {$notify("解析后最终返回内容" , "节点数量: " +total.split("\n").length, total)}
|
||||||
total = Base64.encode(total) //强制节点类型 base64 加密后再导入 Quantumult X
|
total = Base64.encode(total) //强制节点类型 base64 加密后再导入 Quantumult X
|
||||||
@@ -424,7 +426,8 @@ function Trim(item) {
|
|||||||
// 类型前缀/后缀
|
// 类型前缀/后缀
|
||||||
function type_prefix(item) {
|
function type_prefix(item) {
|
||||||
if(item.trim()!="") {
|
if(item.trim()!="") {
|
||||||
typefix = {"shadowsocks":"「ss」","vmess":"「vmess」","trojan":"「trojan」","http":"「http」"}
|
typefix = {"shadowsocks":"「𝐬𝐬」","vmess":"「𝐯𝐦𝐞𝐬𝐬」","trojan":"「𝐭𝐫𝐨𝐣𝐚𝐧」","http":"「𝐡𝐭𝐭𝐩」"}
|
||||||
|
typefix["shadowsocks"]=item.indexOf("ssr-protocol")!=-1? "「𝐬𝐬𝐫」" : "「𝐬𝐬」"
|
||||||
tp = typefix[item.split("=")[0].trim()]
|
tp = typefix[item.split("=")[0].trim()]
|
||||||
return [[item.split("tag=")[0]+
|
return [[item.split("tag=")[0]+
|
||||||
"tag=", tp, item.split("tag=")[1]].join(" ")].join(" ")
|
"tag=", tp, item.split("tag=")[1]].join(" ")].join(" ")
|
||||||
@@ -432,12 +435,31 @@ function type_prefix(item) {
|
|||||||
}
|
}
|
||||||
function type_suffix(item) {
|
function type_suffix(item) {
|
||||||
if(item.trim()!=""){
|
if(item.trim()!=""){
|
||||||
typefix={"shadowsocks":"「ss」","vmess":"「vmess」","trojan":"「trojan」","http":"「http」"}
|
typefix={"shadowsocks":"「𝐬𝐬」","vmess":"「𝐯𝐦𝐞𝐬𝐬」","trojan":"「𝐭𝐫𝐨𝐣𝐚𝐧」","http":"「𝐡𝐭𝐭𝐩」"}
|
||||||
|
typefix["shadowsocks"]=item.indexOf("ssr-protocol")!=-1? "「𝐬𝐬𝐫」" : "「𝐬𝐬」"
|
||||||
tp = typefix[item.split("=")[0].trim()]
|
tp = typefix[item.split("=")[0].trim()]
|
||||||
return [item, tp].join(" ")
|
return [item, tp].join(" ")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getnode_type(item,ind) {
|
||||||
|
if(item.trim()!="") {
|
||||||
|
ind = !/^(0|1|2|3)$/.test(ind) ? 0 : ind
|
||||||
|
typefix = {"shadowsocks":["𝐬𝐬","𝐒𝐒","🅢🅢","🆂🆂"],"shadowsocksr":["𝐬𝐬𝐫","𝐒𝐒𝐑","🅢🅢🅡","🆂🆂🆁"],"vmess":["𝐯𝐦𝐞𝐬𝐬","𝐕𝐌𝐄𝐒𝐒","🅥🅜🅔🅢🅢","🆅🅼🅴🆂🆂"],"trojan":["𝐭𝐫𝐨𝐣𝐚𝐧","𝐓𝐑𝐎𝐉𝐀𝐍","🅣🅡🅞🅙🅐🅝","🆃🆁🅾🅹🅰🅽"],"http":["𝐡𝐭𝐭𝐩","𝐇𝐓𝐓𝐏","🅗🅣🅣🅟","🅷🆃🆃🅿"]}
|
||||||
|
typefix["shadowsocks"]=item.indexOf("ssr-protocol")!=-1? typefix["shadowsocksr"] : typefix["shadowsocks"]
|
||||||
|
tp = typefix[item.split("=")[0].trim()][ind]
|
||||||
|
return tp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 操作節點類型佔位符
|
||||||
|
function type_handle(item) {
|
||||||
|
if(item.indexOf("node_type_para_prefix")!=-1) {
|
||||||
|
item = item.replace(/node_type_para_prefix(\d{1})/g,getnode_type(item,item.split("node_type_para_prefix")[1][0]))
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
// 用于某些奇葩用户不使用 raw 链接的问题
|
// 用于某些奇葩用户不使用 raw 链接的问题
|
||||||
function rawtest(cnt) {
|
function rawtest(cnt) {
|
||||||
var Preg0 = RegExp(".*js-file-line\".*?\<\/td\>", "i")
|
var Preg0 = RegExp(".*js-file-line\".*?\<\/td\>", "i")
|
||||||
|
|||||||
Reference in New Issue
Block a user