使用全局扩展脚本对任意 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;
}

需要注意的是,在订阅栏中查看订阅的配置文件是修改前文件,如果需要看修改后文件,则需要到 设置-当前配置 中查看。引用