本地配置工具
Trojan 转 sing-box JSON
传输层按 sing-box 的命名转换,其中 HTTPUpgrade 是独立类型,而不是 WebSocket 上的一个开关。
链接只留在这台设备上
转换完全在浏览器中进行,不会上传、保存链接,也不会把链接写入页面地址。
转换结果
为什么有些链接会被拒绝
如果一个参数无法在不改变连 接行为的前提下映射过去,工具会明确报错,而不是悄悄丢掉。输出 sing-box 时最常碰到的是 XHTTP——它压根没有这种传输方式,另外还有证书锁定和 TUIC v4 的 token。而 sing-box 真能读的重命名(reduce_rtt → zero_rtt_handshake)在这里就完成,不会拖到你机器上静默失效。
如何导入 sing-box
把 JSON 存成配置文件,或者在 SFI / SFA / SFM 里作为本地配置导入。配置里已经带好 Proxy selector 出站,切换节点不需要改文件。
Trojan 转换成 sing-box 的字段映射规则
左边是 Trojan 链接里的写法,右边是它在 sing-box 配置里对应的字段;无法映射的会明确报错。
| 链接里的写法 | sing-box 配置里的字段 | 说明 |
|---|---|---|
password@host:port | password / server / server_port | userinfo 整段都是密码,里面的冒号会完整保留,不会被切成用户名和密码。 |
sni (legacy: peer) | tls.server_name | peer 是旧客户端的写法,会映射成 sni;两个同时出现会报错。 |
security=reality + pbk / sid | tls.reality.public_key / short_id | Trojan 走 REALITY 少见但合法,转换方式和 VLESS 一致。 |
fp / alpn | tls.utls.fingerprint / tls.alpn | Trojan 本身就是 TLS-only,所以这两个参数总是生效。 |
type=ws / grpc / httpupgrade | transport.type: "ws" / "grpc" / "httpupgrade" | 传输层按各家命名转换;HTTPUpgrade 在 Mihomo 是 WebSocket 上的开关,在另外两家是独立类型。 |
type=h2 | transport.type: "http" | Xray 已经移除 HTTP/2 传输,所以输出 Xray 时这一行会被拒绝,而不是改写成 XHTTP——那在链路上是另一种协议。 |
type=xhttp | 拒绝并报错 | 输出 sing-box 时会被拒绝——它没有这种传输方式。 |
allowInsecure=1 | tls.insecure: true | 会转换,并附带一条安全警告。Xray 已经移除这个选项,所以输出 Xray 时改为拒绝。 |
常见问题
- Trojan 转成 sing-box 之后要用哪个客户端?
- 用 sing-box 1.11 以上的官方客户端(含 SFI / SFA / SFM)。1.11 以下的版本不认这份配置用到的 route 规则写法,会直接加载失败。
- 这个 Trojan 转换器免费吗?会不会上传我的节点链接?
- 完全免费,也不需要登录。转换是这个页面里的 JavaScript 在你自己的浏览器里做的,链接不会上传服务器、不会写进页面地址、也不做任何存储——关掉标签页就没了。
- 可以直接把订阅链接转成 sing-box 吗?
- 可以,但要粘贴订阅地址返回的内容(通常是一长串 base64),而不是订阅地址本身——浏览器受同源策略限制,拿不到订阅的内容。一份订阅里混合多种协议也没问题。 订阅链接转 sing-box
- Trojan 转换成 sing-box 之后连不上是什么原因?
- 这里做的只是把链接翻译成配置,校验的是 配置结构,不检测服务器能否连通。先确认同一条链接在原客户端可用,再看客户端版本——server_ports 和 route 规则里的 action 需要 sing-box 1.11 以上。
这里生成的是一次性本地配置,不是自动更新的订阅;工具只检查配置结构,不检测服务器能否连接。