💡 Clash 配置技巧

为所有节点生成本地 SOCKS5 代理端口

功能说明

通过 Clash 的 JavaScript 预处理脚本,可以将机场的所有节点自动映射为本地的 SOCKS5 代理端口。这样每个节点都有固定的本地端口,方便在 SSH、终端工具或其他应用中直接使用。

使用场景

  • 需要为不同的服务指定不同的代理节点
  • 在 SSH 配置中为不同主机分配独立的代理端口(参考 SSH 走代理)
  • 使用命令行工具时需要指定特定节点的代理

配置脚本

在 Clash 的预处理脚本(Preprocessor Script)中添加以下代码:

function main(config) {
  // 1. 初始化 listeners 数组,添加固定端口的自定义节点
  config.listeners = [
    {
      name: "default-111",
      type: "mixed",        // mixed 类型支持 HTTP 和 SOCKS5
      port: 12345,
      address: "127.0.0.1",
      udp: true,
      proxy: "xxx-111"      // 绑定到指定的节点名称
    },
    {
      name: "default-777",
      type: "mixed",
      port: 12346,
      address: "127.0.0.1",
      udp: true,
      proxy: "xxx-777"
    }
  ];

  // 2. 设置动态代理节点的起始端口
  const startPort = 20000;

  // 3. 过滤节点:排除不需要的节点
  const filteredProxies = (config.proxies || []).filter(proxy =>
    !(proxy.name.includes("免费") ||
      proxy.name.includes("xxx") ||
      proxy.name.includes("落地") ||
      proxy.name.includes("下载"))
  );

  // 4. 遍历过滤后的节点,为每个节点创建独立的本地代理端口
  filteredProxies.forEach((proxy, index) => {
    config.listeners.push({
      name: `mixed-${proxy.name}`,  // 使用前缀避免名称冲突
      type: "mixed",
      port: startPort + index,      // 端口号递增
      proxy: proxy.name,            // 强制绑定到该节点
      address: "127.0.0.1",
      udp: true
    });
  });

  // 5. 输出日志信息,便于调试
  console.log(`过滤完成:排除了"免费"的节点,共生成 ${filteredProxies.length} 个端口。`);

  return config;
}

配置说明

固定节点配置(第 1 步)

  • 为特定节点分配固定端口(如 12345、12346)
  • name: 监听器名称
  • type: 代理类型,mixed 同时支持 HTTP 和 SOCKS5
  • port: 本地监听端口
  • proxy: 要绑定的节点名称

动态节点配置(第 2-4 步)

  • startPort: 动态端口起始值(建议使用 20000 以上避免冲突)
  • 过滤规则:排除节点名称包含"免费"、“xxx”、“落地”、“下载"的节点
  • 每个节点分配一个连续的端口号:20000、20001、20002…

使用方法

配置完成后:

  1. 重启 Clash 使配置生效
  2. 查看 Clash 日志确认生成的端口数量
  3. 在终端或其他应用中使用 127.0.0.1:端口号 访问对应节点的代理

示例:

# 使用固定端口的节点
curl --socks5 127.0.0.1:12345 https://ip.sb

# 使用动态端口的节点
curl --socks5 127.0.0.1:20000 https://ip.sb