1. 告别手工时代的“垃圾堆”订阅
作为一名重度科学上网玩家,您可能同时订阅了两三家不同梯队的机场:一家昂贵的专线做主用,一家便宜的大流量机场用于下载,还有一家免费或低价的直连机场作为灾备防失联。
当您把这几个订阅链接统统导入 Clash 后,灾难往往接踵而至:节点列表里出现了上百个名字长短不一、毫无规律的条目;有些机场喜欢在名字里加上“【剩余流量800G】”、“官网地址 www...”等毫无用处的占位符节点;最崩溃的是,很多因为被墙而长期超时的死节点,依然死皮赖脸地待在您的选择列表中。
每天都要在几百个节点里用肉眼去寻找能用的那个,这完全是在侮辱现代计算机的自动化精神。今天,我们将抛弃落后的纯文本配置,教您在 Clash Verge Rev 中使用 JavaScript (Merge 脚本),像个真正的黑客一样,在数据流入系统之前,对其进行彻底的净化与重构。
2. 核武库:Clash Verge Rev 的 Merge 功能机制
如果您打开 Clash Verge Rev,在左侧边栏能看到一个名为 合并 (Merge) 或 脚本 (Script) 的极其强大的功能模块。
它的工作流程是这样的:
- 客户端向机场服务器拉取原始的 YAML 配置文件。
- 在原始配置生效之前,客户端会将其转化为一个 Javascript 的对象(Object),并将控制权交给您编写的脚本。
- 您的脚本可以通过编程的方式,随意地
push(增加)、splice(删除)甚至修改这个对象中的任何节点数据。 - 脚本执行完毕后,客户端将您修改过的完美数据,重新打包生成最终运行的底层网络架构。
这意味着什么?意味着您可以随心所欲地控制一切!
3. 实战第一阶段:写代码清洗一切恶心字符
让我们直接上干货代码。在 Verge Rev 的脚本编辑器中,我们首先定义一个主函数,利用正则表达式对所有进来的节点名字进行无情的大清洗。
function main(config) {
const proxies = config.proxies;
const validProxies = [];
for (const proxy of proxies) {
let name = proxy.name;
// 1. 剔除所有毫无用处的机场广告和流量提示节点
if (name.includes("到期") || name.includes("官网") || name.includes("剩余")) {
continue; // 直接扔进垃圾桶,忽略该节点
}
// 2. 利用正则表达式,清理花里胡哨的表情包前缀
name = name.replace(/[🚀⭐💥⚡🔥💎]/g, "").trim();
// 3. 统一规范重命名 (例如将 "IEPL-中转-香港 01" 精简为 "HK-01")
name = name.replace(/香港|HongKong|HKG/i, "HK")
.replace(/日本|Japan|Tokyo/i, "JP")
.replace(/美国|America|USA/i, "US")
.replace(/中转|IEPL|专线/g, "");
// 将洗干净的节点放回池子里
proxy.name = name.trim();
validProxies.push(proxy);
}
// 更新配置的节点列表
config.proxies = validProxies;
return config;
}
只要这段代码一跑,您原本那充斥着牛皮癣广告和错乱长名称的节点列表,瞬间变得犹如强迫症患者的福音一般整洁清爽:HK-01, HK-02, JP-01。整个世界都安静了。
4. 实战第二阶段:智能编排高可用集群 (Load Balance)
名字洗干净了,下面到了最激动人心的架构设计环节。我们要把洗干净的节点,分门别类地塞进自动化策略组里。这样您再也不用手动去测速和换节点了。
继续在上面的脚本中追加代码,我们将利用 filter 语法,把不同国家的节点挑出来,分别塞进各自的自动化集群:
// 提取所有节点的名字
const proxyNames = validProxies.map(p => p.name);
// 找出所有香港和日本的节点
const hkNodes = proxyNames.filter(name => name.startsWith("HK"));
const jpNodes = proxyNames.filter(name => name.startsWith("JP"));
// 清空原有的那些垃圾分组,准备注入我们自己设计的顶级架构
config["proxy-groups"] = [
{
name: "🚀 核心路由",
type: "select",
proxies: ["🇭🇰 香港自动集群", "🇯🇵 日本自动集群", "DIRECT"]
},
{
name: "🇭🇰 香港自动集群",
type: "url-test", // url-test 代表测速选最优
url: "http://www.gstatic.com/generate_204",
interval: 300, // 每 300 秒测一次速
tolerance: 50, // 容忍 50ms 的延迟波动,避免频繁切换导致断流
proxies: hkNodes.length > 0 ? hkNodes : ["DIRECT"]
},
{
name: "🇯🇵 日本自动集群",
type: "fallback", // fallback 代表按顺序用,死一个切下一个
url: "http://www.gstatic.com/generate_204",
interval: 300,
proxies: jpNodes.length > 0 ? jpNodes : ["DIRECT"]
}
];
return config;
}极致的差异化调度:
- 对于距离近、竞争激烈的香港节点,我们采用了
url-test (负载最优)模式,让几十台香港机器互相内卷,每 5 分钟自动把速度跑得最快的那台机器顶上来给您用。 - 对于稳定性更好的日本节点,我们采用了
fallback (故障转移)模式。它会死死咬住第一台机器不动,除非第一台彻底宕机超时,它才会无缝滑档到第二台。这种模式最适合打游戏或者需要稳定 IP 的高频工作环境。
5. 结语:让冰冷的机器为您打工
曾经,为了找一个不卡的节点,我们每天要花费十几分钟在测速、切换、重启中挣扎。而现在,通过短短几十行优雅的 Javascript 脚本,您赋予了代理软件“自我净化”和“自动排错”的灵魂。
无论您后续购买了多么杂乱无章的廉价机场,只要将订阅丢进这个“绞肉机脚本”里,出来的永远是经过严密分流、名称规范、且自带高可用光环的完美集群架构。这就是编程的魅力,也是真正高端本站应有的从容姿态。