贤者云 | xianzhey.shop

sing-box订阅怎么转换成配置文件?从订阅链接到 JSON 导入

更新于 2026-11-09 · xianzhey.shop

简答:最稳妥的做法是先判断订阅链接返回的内容:如果已经是 sing-box JSON,可直接作为远程配置导入;如果返回 Clash YAML、Base64 或节点 URI,则需要转换为 sing-box JSON。转换后不要只看“生成成功”,还要用 sing-box check 校验,并确认 outbounds、route、DNS 和默认出口是否完整。

定义:sing-box 配置文件是描述 DNS、入站、出站和路由规则的 JSON 文件,而订阅链接只是获取配置或节点数据的远程地址,两者不是同一个概念。

先试这一步:识别订阅返回格式,再决定是否需要转换

本文面向 Windows、macOS、Linux、Android 和 iOS 上使用 sing-box 图形客户端或命令行的用户。不同客户端的菜单名称可能随版本变化,以下按“远程配置”和“本地 JSON”两个概念说明,不把某个未核实的版本号或菜单名称当成固定事实。

订阅内容与处理方式速查
看到的内容通常代表什么下一步
以 { 开头,能看到 outbounds、route 或 dns可能已经是 sing-box JSON先保存为 config.json,再校验;也可以作为 Remote Profile 使用
出现 proxies:、proxy-groups: 或 YAML 缩进更像 Clash 或兼容格式使用转换工具输出 sing-box 格式,再检查字段是否丢失
是一长串字母数字,常见为 Base64 外观可能是编码后的节点 URI 列表先解码并确认每行是什么协议,再转换
以 vless://、vmess://、ss:// 等开头节点 URI,而不是完整配置转换为 outbounds,之后补齐 DNS、route 和默认出口
浏览器返回登录页、HTML 或错误提示链接失效、需要授权或被重定向不要继续转换,先回到订阅来源核对链接、权限和有效期

sing-box 官方文档明确说明,配置文件使用 JSON,并由 dns、inbounds、outbounds、route 等部分组成。查看 sing-box 配置结构说明。订阅地址包含访问凭据时,不要把完整链接发到群组、工单或在线转换页面。

方法一:已有 sing-box 专用配置时,直接导入远程配置

  1. 在浏览器中打开订阅链接,观察返回内容是否是 JSON。不要只根据链接后缀判断,实际返回内容更重要。
  2. 如果内容中能看到 outbounds、route 或 dns,先保存一份脱敏备份;不要公开其中的服务器地址、UUID、密码、密钥或完整订阅 URL。
  3. 打开 sing-box 图形客户端,找到添加远程配置、Remote Profile 或类似功能,将订阅地址作为更新来源添加。官方通用客户端文档将 Remote Profile 定义为“以 URL 作为更新来源的远程 sing-box 配置”,并说明客户端应支持自动更新和 HTTP Basic authorization。查看 sing-box Remote Profile 说明。
  4. 手动更新一次远程配置,查看配置内容或日志。如果客户端能显示配置且没有 JSON 解析错误,只能说明下载和解析这两层基本正常,不代表目标网站、DNS 或所有节点都能使用。
  5. 启动前确认默认出口。配置中如果只有多个节点但没有 Selector、URLTest 或明确的默认出站,可能出现“有节点但没有流量”的情况;这时需要根据当前配置的 tag 和 route.final 进行调整。

远程导入的优点是可以保留自动更新,缺点是每次更新都依赖订阅服务器和当前网络。若更新后节点突然减少,先保存旧配置,再比较新旧 JSON,不要直接覆盖唯一备份。

方法二:只有 Clash、Base64 或节点 URI 时,转换为 sing-box JSON

转换前先确认输入类型。Clash YAML、Base64 节点列表、单条 URI 和已有 sing-box JSON 的结构不同,不能把它们都当成“订阅链接”直接导入。

  1. 准备输入:复制订阅链接或下载后的文件,但先删除聊天记录、截图和日志中的完整令牌。若使用在线转换服务,订阅凭据可能经过第三方服务器,应优先选择可信工具、自建实例或本地转换。
  2. 选择输出格式:在转换工具中选择 sing-box,不要误选 Plain JSON、V2Ray URI 或 mihomo。Sub-Store 的公开文档列出了 Clash YAML、常见节点 URI 等输入类型,并将 sing-box 列为输出目标;具体支持范围仍应以当前工具页面和实际转换结果为准。查看 Sub-Store 官方仓库说明。
  3. 下载结果:将转换结果保存为 config.json,使用文本编辑器检查文件开头是否为 JSON 对象,而不是 HTML、错误页面或带额外说明文字的内容。
  4. 检查核心字段:至少查看 outbounds 是否存在,节点是否有唯一的 tag,是否存在可用的 DNS 和 route。只有 outbounds 的“节点列表”不等于完整可运行配置。
  5. 本地校验:在已安装 sing-box 的终端中进入配置文件所在目录,运行 sing-box check。官方文档将该命令列为配置检查方式;如果命令失败,先根据报错定位 JSON 语法、字段名称或版本兼容性。查看官方 check 与 format 命令。
  6. 格式化文件:确认配置可以被读取后,再运行 sing-box format -w -c config.json。建议先复制一份原始文件,因为格式化会改变排版,不能替代备份。

如果转换工具提供“仅生成节点列表”与“生成完整配置”两个选项,优先选择符合当前客户端要求的完整配置;若只能得到节点列表,就需要自行补足入站、DNS、route 和默认出站,不要把生成结果直接当成完整配置使用。

转换成功但导入失败:按四层定位

sing-box 订阅转换后的排查顺序
层级表现检查方法处理方式
下载层更新超时、返回 HTML 或 401/403浏览器查看实际响应;确认 URL、授权和网络重新复制订阅地址,必要时撤销旧令牌并生成新链接
解析层JSON parse error、字段类型错误用文本编辑器检查括号、引号和逗号,再运行 sing-box check重新转换,或按当前 sing-box 文档修正字段
结构层能打开但没有节点、没有选择器或没有默认出口搜索 outbounds、tag、route 和 final比较原始订阅与转换结果,确认是否只输出了节点列表
连接层配置能启动但访问目标失败先测试单个节点,再看 DNS、TLS、MTU、路由和系统代理一次只改一个变量,保留能启动的旧配置以便回滚

为什么转换后节点数量减少

常见原因包括输入格式本身不完整、转换器不支持某种协议字段、节点被筛选规则排除,或原始内容中混有非标准 URI。Sub-Store 官方仓库也提示,部分客户端导出的 URI 可能不是标准 URI,因此不能仅凭“链接能打开”判断每个节点都能无损转换。

为什么有节点却不能启动

节点通常属于 outbounds,而完整配置还可能需要 dns、inbounds、route 和默认出口。sing-box 官方配置结构把这些部分分别列出,因此“转换出节点”与“生成可运行配置”是两个不同结果。先用 sing-box check 解决结构错误,再排查连接参数。

协议字段缺失怎么办

Reality、Hysteria2、TUIC、WireGuard 等协议的字段并不完全相同。若转换后缺少服务器名、TLS、密钥、SNI、ALPN 或传输层参数,不要凭经验补写随机值;回到原始订阅核对字段,或改用能直接输出 sing-box 格式的来源。无法核实的字段应标记为“未核实”。

本地文件与远程订阅怎么选:安全和维护对比

三种方式的适用场景
方式适合谁优点注意事项
直接 Remote Profile已有 sing-box JSON 订阅步骤少,可按远程地址更新依赖远程地址;更新前应保留旧版本
第三方在线转换需要快速处理 Clash 或 URI无需本地部署订阅凭据会经过第三方;不要提交长期有效的完整链接
本地或自建转换重视隐私、需要批量处理输入不必交给公共转换站需要自己维护工具、依赖和输出模板
手动编辑 JSON只需修正少量字段可精确控制 DNS、route 和出口字段必须匹配当前 sing-box 构建版本,改动前要备份

建议采用“原始订阅、转换结果、可运行旧配置”三份分开保存的方式。订阅链接可视为凭据:不要公开分享;如果怀疑泄露,应在订阅来源处撤销旧链接并重新生成。更换令牌后,还要同步更新远程配置地址和客户端中的保存项。

如果你使用的是图形客户端,先导入远程配置或本地 JSON,再确认客户端显示的配置内容;如果使用命令行,先执行 sing-box check,通过后再启动服务。JSON Schema 只能帮助编辑器补全和验证字段,不能证明节点本身可连接;官方文档也提供了生成与当前二进制匹配 Schema 的 sing-box schema -o schema.json 命令。查看官方 JSON Schema 说明。

最小可执行检查清单

  1. 确认订阅实际返回的是 JSON、YAML、Base64 还是 URI。
  2. 确认没有把完整订阅链接、UUID、密码、私钥和令牌贴到公开位置。
  3. 确认输出文件名为 config.json,内容不是 HTML 错误页。
  4. 确认 outbounds、节点 tag、DNS 和 route 存在且结构合理。
  5. 在配置目录运行 sing-box check,预期是命令返回成功且没有配置错误。
  6. 通过检查后再运行 sing-box format -w -c config.json,并保留原始备份。
  7. 导入客户端后先测试单个节点和一个明确目标,再决定是否开启系统代理或 TUN。
  8. 出现失败时按下载、解析、结构、连接顺序回滚,不要同时修改 DNS、MTU、TUN 和节点参数。

常见问题

sing-box 可以直接导入 Clash 订阅吗?

不能一概而论。只有当当前客户端或转换环节明确支持该格式时才可能直接处理。更稳妥的做法是先查看返回内容;如果是 Clash YAML,就转换成 sing-box JSON,再用 sing-box check 校验。

订阅转换成 JSON 后为什么没有节点?

先确认原始订阅本身能否返回节点,再检查转换工具的输入类型和筛选条件。如果原始内容是 HTML、授权失败页面或不兼容 URI,转换结果可能为空。不要只看文件能下载,还要搜索 outbounds 和节点 tag。

只有 outbounds 的 JSON 能直接使用吗?

不一定。outbounds 通常只是出站或节点部分,完整运行还可能需要 DNS、inbounds、route 和默认出口。先运行 sing-box check,再确认客户端是否要求完整配置。

在线订阅转换安全吗?

不能默认安全。订阅链接可能包含令牌,提交在线服务意味着凭据会经过第三方。优先使用直接提供的 sing-box 配置、自建转换或本地工具;如果怀疑链接泄露,应撤销旧令牌并重新生成。

sing-box check 通过后就一定能连接吗?

不一定。check 主要验证配置结构和字段,不能证明服务器可达、DNS 正常、TLS 参数匹配或节点当前可用。通过后还应单独测试节点、DNS、路由和目标应用。

相关阅读

参考资料

  1. sing-box 官方配置文件、check、format 与 merge 说明
  2. sing-box 官方图形客户端 Remote Profile 说明
  3. sing-box 官方 JSON Schema 说明
  4. Sub-Store 官方 GitHub 仓库与格式转换说明