subconverter-ng 现代化订阅转换服务概念架构图

解决日常网络中的具体问题

原版 subconverter 是经典的代理转换工具,但我日常使用中有几个痛点一直没有得到解决:

  1. 新协议缺失:Hysteria 2、TUIC v5、VLESS Reality 等新协议难以转换;
  2. 内核不匹配:生成的配置无法顺畅对准 Clash.Meta(mihomo)和 sing-box;
  3. 低算力设备编译繁琐:C++ 依赖链复杂,想在 OpenWrt 等老软路由上编译极其耗时;
  4. 订阅投毒断网:上游机场故障时返回 200 空内容,导致客户端冲掉本地正常配置。

我用 Go 完全重写了转换引擎:subconverter-ng。


做了什么

  • 无缝平替:保持与原版 100% 相同的 URL 参数(/sub?target=clash&url=...),客户端无需调整。
  • 全协议覆盖:完整支持 Hysteria 1/2、TUIC v5、VLESS Reality/XTLS-Vision、WireGuard、AnyTLS 等。
  • 单静态二进制:纯 Go 交叉编译,覆盖 macOS、Linux、Windows 以及 MIPS/ARM 架构的 OpenWrt 路由器。
  • 异常保护(Fail-Closed):抓取失败严格返回 502/422,杜绝冲掉客户端本地正常配置。
  • 凭据脱敏:在日志与错误返回中自动屏蔽机场敏感 Token。
  • 局域网防御:物理连接层校验 IP,阻断 SSRF 与 DNS 重绑定。
  • 并发折叠:基于 SingleFlight 合并同一 URL 的并发抓取,防止触发上游风控。

交付形态

  1. 常驻守护进程:监听本地端口,内置可视化 Web 生成页面,支持 API Token 准入控制。
  2. CLI 离线工具:无需常驻后台,单行命令直接把本地节点文件转成目标配置。

项目资源与文档