使用全局扩展脚本对任意 clash 节点组中所有节点添加前置代理,实现链式代理效果
全局扩展脚本
function main(config, profileName) {
const DIALER_PROXY = "中转节点组"; // 这里需要填写完整的前置代理组名称
const GROUP_SUFFIX = "落地节点组"; // 这里填写需要通过前置代理连接的所有节点所在组后缀
// 用于存储需要添加 dialer 的代理名称(去重)
const proxiesToDial = new Set();
// 第一步:遍历 proxy-groups,收集所有在 "IPLC节点" 组中的代理名
config["proxy-groups"]?.forEach(group => {
if (group?.name?.endsWith(GROUP_SUFFIX)) {
console.log(group.proxies);
(group.proxies || []).forEach(proxyName => {
if (typeof proxyName === 'string') {
proxiesToDial.add(proxyName);
console.log(proxyName);
}
// 如果是嵌套数组或其他结构,可扩展处理
});
}
});
// 第二步:遍历全局 proxies,为匹配的代理添加 dialer-proxy
config.proxies?.forEach(proxy => {
if (typeof proxy === 'object' && proxy !== null) {
if (proxiesToDial.has(proxy.name)) {
proxy["dialer-proxy"] = DIALER_PROXY;
console.log(proxy);
}
}
});
return config;
}
需要注意的是,在订阅栏中查看订阅的配置文件是修改前文件,如果需要看修改后文件,则需要到 设置-当前配置 中查看。引用