sing-box 订阅怎么导入配置?无节点、JSON 错误这样排查
简答:sing-box 订阅应先确认是兼容的远程 JSON 配置,再在客户端新增 Remote 配置并粘贴 URL;更新后检查节点、启动服务和实际联网,Clash 或其他格式不能默认直接导入。
定义:sing-box 订阅导入,是把服务商提供的远程配置 URL 添加为客户端的 Remote Profile,随后下载、解析并启动其中的 JSON 配置。
先判断订阅类型,再选择导入方式
与 sing-box 项目及其开发者无隶属关系。本文按 2026 年 10 月 23 日已公开的官方文档整理,客户端菜单名称可能随版本变化;下载渠道和客户端版本应以对应项目官方页面为准。
| 类型 | 通常表现 | 能否直接作为 sing-box 配置 | 先做什么 |
|---|---|---|---|
| 远程 sing-box 配置 | URL 返回完整 JSON 配置 | 通常可以 | 在客户端新增 Remote Profile,保存后更新 |
| 本地 JSON 配置 | 已经下载到设备的 .json 文件 | 可以作为 Local Profile | 备份文件后导入或放入客户端配置目录 |
| 单节点链接 | 只描述一个出站节点的 URI | 不能等同于完整配置 | 使用客户端支持的节点导入功能,或手动加入配置 |
| Clash、Surge、V2Ray 等其他格式 | 可能返回 YAML、专用 JSON 或转换页面 | 不能默认直接导入 | 回到提供方选择 sing-box 格式;不确定时不要提交给不可信转换站 |
官方文档说明,sing-box 配置文件使用 JSON,并包含如 dns、inbounds、outbounds、route 等配置区域;因此“能打开一个链接”不等于“返回内容就是可加载的 sing-box 配置”。可查看官方的配置文件结构与检查说明。
最快判断方法:在浏览器或命令行打开订阅 URL,观察返回内容是否为 JSON。若页面显示登录页、HTML 错误页、空白内容或 YAML,先不要导入,优先确认链接权限、格式选项和访问方式。
Android:Profiles → Remote 添加订阅
- 打开兼容 sing-box 的 Android 图形客户端,进入配置或 Profiles 页面。
- 选择新增配置,类型选 Remote,不要把远程地址粘贴到 Local 文件编辑器。
- 在 URL 栏粘贴订阅地址;如果服务商同时提供多个格式,选择明确标注为 sing-box 的配置。
- 如果界面提供自动更新选项,可先关闭自动更新,完成首次手动更新后再决定是否启用。
- 填写名称并保存,然后执行更新或获取远程配置。
- 确认配置解析成功后,进入 Dashboard 或服务页面,选择可用的出站组或节点,再启动连接。
- Android 首次启动 TUN 或 VPN 功能时,根据系统提示允许 VPN 权限。若配置使用特殊 TUN 能力,权限要求以客户端和系统提示为准。
官方通用客户端文档把 Remote Profile 定义为以 URL 作为更新来源的远程配置,并列出远程配置导入 URL Scheme:sing-box://import-remote-profile?url=urlEncodedURL#urlEncodedName。其中 URL 和名称应进行 URL 编码,不能把包含特殊字符的原始地址直接拼接。具体菜单是否支持该 Scheme,以客户端实际实现为准,参见官方图形客户端通用说明。
判断 Android 导入成功,不只看配置名称是否出现:至少要依次确认“配置已保存”“远程内容已更新”“节点或出站组能显示”“服务启动无报错”“浏览器或目标应用实际能联网”。
iOS、macOS、Windows、Linux 速查
| 平台 | 入口或方式 | 权限提示 | 常见坑 |
|---|---|---|---|
| iOS | 在支持 Remote Profile 的客户端中新增远程配置,或使用客户端支持的导入链接 | 首次启动通常需要允许系统 VPN 配置 | 菜单和获取渠道可能因客户端版本、地区和发行渠道不同;以客户端官方页面为准 |
| macOS | 使用支持远程配置的图形客户端新增 Remote,或导入本地 JSON | TUN、系统扩展或辅助组件可能需要系统授权 | App Store 版本与独立版本的能力可能不同,不能照搬其他平台菜单 |
| Windows | 使用 sing-box for Desktop 或其他兼容客户端新增 Remote;命令行可下载为本地 JSON | 使用 TUN 时通常需要以管理员身份运行 | PowerShell 中使用 curl.exe,不要把 curl 当作 Linux 参数格式直接照抄 |
| Linux | 图形客户端新增 Remote,或命令行保存并检查配置 | TUN、路由和部分网络能力可能需要 root、sudo 或相应能力 | 不能只执行检查命令;检查通过后还要执行 run,并观察日志 |
官方桌面客户端页面说明,sing-box for Desktop 用于管理和运行本地或远程 sing-box 配置,并提供包括 TUN 在内的平台功能;可查看sing-box for Desktop 官方说明。官方 TUN 文档还说明,非特权运行时,地址和 MTU 不会自动配置,因此使用 TUN 时应同时检查权限与配置内容,参见TUN 配置官方文档。
如果使用命令行,建议先保存为新文件,避免覆盖原配置。Linux 或 macOS 示例:
curl -fsSL -o config.remote.json '替换为你的 sing-box 订阅 URL'
sing-box check -c config.remote.json
sing-box run -c config.remote.jsonWindows PowerShell 示例:
curl.exe -fsSL -o config.remote.json "替换为你的 sing-box 订阅 URL"
sing-box.exe check -c .\config.remote.json
sing-box.exe run -c .\config.remote.json这里的 config.remote.json 是临时文件名,请替换为实际订阅地址,不要直接覆盖已有的 config.json。官方配置文档给出了 sing-box check、format 和 merge 等命令;检查通过只代表配置可被校验,不能替代启动和联网验证。
Linux 使用 TUN 或自动路由时,如果当前用户权限不足,应在确认配置来源可信后使用相应的 sudo 权限运行,或按系统服务方式授予必要能力。Windows 使用 TUN 时,右键终端或客户端选择“以管理员身份运行”。权限不足的判定线索包括创建 TUN 失败、路由写入失败、权限拒绝或服务启动后立即退出。
导入成功后,按五个阶段验证
- 保存阶段:配置名称、URL 和本地记录存在。若保存后配置条目消失,先检查客户端是否允许远程配置。
- 更新阶段:手动点击更新后,查看最后更新时间或更新日志。没有更新时间,说明请求可能没有发出或响应没有被接受。
- 解析阶段:配置内容能被识别为 JSON,且不是 HTML、登录页或其他格式。出现
JSON parse error时,先查看响应原文的第一行。 - 加载阶段:客户端能显示出站节点、Selector、URLTest 或其他配置组,启动日志没有字段不支持、缺少必填字段或 TUN 初始化错误。
- 联网阶段:服务状态显示运行,再用一个普通网页或应用进行实际访问;如果只有客户端显示“已启动”而所有请求失败,仍不能算导入完成。
如果配置中存在出站组,官方通用客户端说明指出,Dashboard 可用于查看运行状态和选择组;因此“有节点”与“已选中节点并开始转发”是两个不同步骤。
按错误现象排查订阅失败
| 现象 | 优先检查 | 判定标准 | 下一步 |
|---|---|---|---|
| 403 Forbidden | 订阅权限、访问来源、链接是否过期 | 用浏览器或 curl.exe 返回 403 | 回到提供方重新复制或生成 sing-box 格式链接,不要反复修改 JSON |
| 404 Not Found | URL 是否完整、域名和路径是否被截断 | 请求返回 404 或明确的不存在页面 | 重新复制完整地址,检查是否误删查询参数 |
| 429 Too Many Requests | 短时间重复刷新或服务端限流 | 响应状态为 429 | 停止连续刷新,等待后再试;动态限制未核实,不要自行推断恢复时间 |
| Timeout | 本地网络、DNS、服务端响应和代理链路 | 请求在客户端设定时间内没有完成 | 先用普通网络打开同一 URL,再区分是链接不可达还是客户端请求失败 |
| 返回 HTML | 登录页、验证页、错误页或重定向 | 响应开头出现 <html>、<!DOCTYPE> 或网页标题 | 不能把该响应当作 JSON,先解决访问权限或改用正确订阅格式 |
| JSON parse error | 响应是否完整 JSON、是否混入说明文字 | 命令行 sing-box check -c config.remote.json 返回错误 | 保留原文件并查看错误位置;不要直接手改节点字段,除非明确知道配置结构 |
| 导入成功但无节点 | 配置是否只有规则、出站组是否为空、格式是否选错 | 配置能打开但 Groups 或 outbounds 没有可选项 | 重新确认服务端提供的是完整 sing-box 配置,而不是其他客户端格式 |
| 启动后无网络 | 节点选择、DNS、TUN 权限、路由和日志 | 服务显示运行但测试请求失败 | 先切换到明确存在的出站,检查 DNS 与 TUN 初始化日志,再进行单变量测试 |
排查时不要同时更换订阅、客户端、DNS 和 TUN 模式,否则无法判断是哪一个变量造成变化。建议先记录客户端名称、核心版本、系统版本、响应状态和错误日志;版本号通常可在客户端的 Settings、About 或 Core 区域查看,命令行可尝试执行 sing-box version,若当前构建不支持该写法,则以启动输出或客户端 About 页面为准。
Clash 订阅能否直接导入 sing-box?
不能默认认为可以。sing-box 官方配置文档明确使用 JSON 配置结构,而不同客户端订阅可能返回 YAML、专用 JSON、单节点 URI 或带有转换逻辑的网页。扩展名、链接名称和页面标题都不能单独证明格式兼容。
- 优先在提供方后台查找明确写有 sing-box 的格式选项。
- 如果只有 Clash 或其他格式,先确认是否提供官方或可信的 sing-box 输出,不要把未知转换站当作默认方案。
- 转换前注意订阅 URL 可能包含账户凭据、节点信息或访问令牌,不要公开粘贴到论坛、截图或第三方服务。
- 转换后仍需用
sing-box check校验,并逐步确认节点、出站组、启动和实际联网。
如果订阅地址已经泄露,应在提供方后台重新生成或撤销旧链接;旧链接能否立即失效、是否支持撤销以及具体操作,本文无法核实,应以提供方页面说明为准。
使用命令行时的最小安全流程
- 先备份现有配置:
cp config.json config.json.bak;Windows 可使用Copy-Item .\config.json .\config.json.bak。 - 把远程内容保存为新文件
config.remote.json,示例域名和 URL 必须替换为实际订阅地址。 - 查看文件头部,确认不是 HTML 或登录页;不要在不信任的环境中打印完整订阅 URL。
- 运行
sing-box check -c config.remote.json。以命令返回成功且没有错误为基本通过标准。 - 运行
sing-box run -c config.remote.json。Linux 使用 TUN 时按需加sudo;Windows 使用管理员终端。 - 观察启动日志,确认没有 TUN、DNS、路由、字段不支持或出站连接错误,再进行实际联网测试。
如果只是想验证文件格式,可先使用官方支持的检查命令,不要为了“修复”而直接删除未知字段。字段是否支持与核心版本有关,版本不一致时应先查看官方迁移说明和当前配置文档;例如官方迁移页记录了 TUN stack 字段在新版本中的弃用变化,具体以sing-box 官方迁移说明为准。
常见问题
sing-box 订阅一定是 JSON 链接吗?
不一定。完整远程 sing-box 配置通常应返回可解析的 JSON,但订阅地址也可能返回 HTML、YAML、单节点 URI 或其他客户端格式。应查看响应内容,并使用 sing-box check 校验,不能只看链接名称。
Clash 订阅可以直接导入 sing-box 吗?
不能默认直接导入。Clash 订阅可能是 YAML 或其他结构,必须先确认提供方是否提供 sing-box 兼容格式;未经核实的转换站还可能暴露包含凭据的订阅地址。
为什么订阅导入成功后没有节点?
可能导入的是空配置、规则配置、单节点以外的错误格式,或者配置中的出站组为空。先查看更新后的原始内容,再检查 outbounds、Selector 或 URLTest 等配置是否存在。
Windows 下载配置为什么不能直接使用 curl 参数?
PowerShell 5.1 中 curl 可能映射为 Invoke-WebRequest,参数行为与 Linux curl 不同。Windows 示例应使用 curl.exe,保存后再运行 sing-box.exe check -c .\config.remote.json。
sing-box check 通过后就能正常联网吗?
不能。check 主要验证配置是否可被检查,仍需运行 sing-box run 或在图形客户端启动服务,再确认节点选择、DNS、TUN 权限和实际访问结果。
订阅链接泄露后应该怎么办?
先停止公开分享并尽快到提供方后台重新生成或撤销旧链接;是否支持立即撤销、旧链接何时失效等信息未核实,应以提供方页面为准。