Shadowrocket 订阅解析失败或节点为空:链接格式、服务商侧与更新时机自查

订阅导入后提示解析失败或列表为空时,可依次检查链接是否完整、是否被截断、服务商侧是否到期,以及更新时机是否合适。

本文速览

先保留现有订阅,再按“链接、访问、响应内容、账户状态、更新时机”的顺序检查,不要一开始就删除全部节点。本文适用于已经拥有自己服务商与订阅的 Shadowrocket 用户;操作以 iPhone / iPad 的 Home 为例,Mac、Windows、安卓、Linux 可沿用相同排查顺序,具体控件位置以当前平台界面为准。

一、先区分解析失败、列表为空与连接失败

Shadowrocket(小火箭)的订阅更新,需要先取得远端内容,再从内容中读取节点参数。请求超时、返回登录网页、返回空内容以及节点参数无法识别,处于不同环节。只看“更新没成功”无法确定原因,也不能据此判断原有节点是否可用。

读取链接 请求订阅 接收内容 解析节点 显示列表
看到的现象优先检查暂时不要做
更新提示超时,旧节点仍在当前网络能否访问订阅地址删除仍可使用的旧订阅
返回内容后提示解析失败返回的是订阅数据,还是网页、错误页随意改动 UUID、密码或协议类型
订阅分组存在,但节点为空服务商侧节点分配、响应内容、列表筛选把空列表直接等同于本地配置损坏
节点已显示,但连接失败节点参数、网络与连接测试结果反复导入同一订阅来代替连接诊断

先在 Home 确认查看的是目标订阅分组,并清空搜索条件、展开折叠分组。如果能看到节点名称,说明至少已有节点数据,不应继续按“空列表”处理。Config 中的规则配置与 Home 中的节点订阅用途不同,添加规则配置文件不能替代节点订阅导入。

二、核对订阅链接:完整地址比重新导入更重要

从自己服务商的账户页面重新复制适用于 Shadowrocket 的订阅地址,再与已保存地址逐项核对。不要复制浏览器地址栏中的账户主页,也不要把网页上的说明文字、按钮名称或登录跳转地址当成订阅。下面仅展示地址结构,不能用于实际导入。

https://example.com/sub?token=xxxx
  1. 核对开头。确认协议部分完整,例如 https://,不要丢失冒号或斜杠。链接前后不应带引号、中文括号或说明文字。
  2. 核对结尾。检查 ? 后的查询参数是否完整。消息预览中的省略号不是地址的一部分;从预览卡片抄写容易漏掉 token。
  3. 保留参数原样。& 用于分隔查询参数,%2F 等是编码片段。不要自行解码、重排或删除看似多余的字符。
  4. 检查复制来源。优先使用账户页面提供的复制操作。若粘贴后出现换行,重新复制核对;不要把屏幕自动折行与实际换行混为一谈。
  5. 确认链接用途。单个节点分享内容、规则配置链接与订阅地址不是同一种输入。按服务商标注的用途导入,不要仅通过扩展名判断。

如果服务商已经重置订阅凭据,旧地址即使结构正确也可能失效。应更新本地订阅地址,而不是只改订阅显示名称。不要为了排错频繁重置 token:它可能同时影响使用同一地址的其他设备。

三、根据响应结果,区分访问问题与内容问题

“浏览器能打开”只能说明浏览器收到某种响应,不等于响应可以被 Shadowrocket 解析。浏览器可能带有已登录的 Cookie,而订阅请求不能依赖浏览器登录状态。登录页、验证码页、维护通知即使成功显示,也不是节点数据。

443
HTTPS 未指定端口时的默认端口
401
HTTP 状态:缺少有效身份凭据
403
HTTP 状态:服务器拒绝请求

以下是可能在响应或诊断信息中出现的标准 HTTP 状态,不代表各平台都会以同样文字弹窗。只有实际看到相应状态时才按该条处理;不要从“列表为空”反推服务器一定返回了某个状态码。

HTTP 401 Unauthorized

原因与解法:请求缺少有效身份凭据,可能与 token 失效有关;回到账户页面重新核对订阅地址,并向自己的服务商确认凭据状态。

HTTP 403 Forbidden

原因与解法:服务器拒绝访问,可能涉及访问策略或账户权限;记录出现时间与所用网络,交由服务商确认,不要靠修改节点密码解决。

HTTP 404 Not Found

原因与解法:目标路径不存在或未提供该资源;重新复制当前账户页面给出的地址,检查路径是否被截断或已经迁移。

HTTP 429 Too Many Requests

原因与解法:请求频率受到限制;停止连续刷新,按服务商说明或响应中的 Retry-After 等待后,再发起一次更新。

HTTP 200 也不是解析成功的保证:它可能承载一段 HTML 错误说明或空正文。若自己能查看响应,重点确认它是否为服务商提供的客户端订阅内容;不要把整页 HTML 复制进 Add Server。即使看到编码文本,也不应随意解码后覆盖原订阅,应先确认导出格式。

结论:先确定返回了什么,再调整客户端

若同一地址返回登录页、维护页或空内容,下一步是向自己的服务商确认订阅接口;此时切换 Global Routing 或修改 Config 规则,不能把网页变成节点数据。

四、服务商侧自查:到期、配额与节点分配

账户能登录与订阅可用是两个条件。服务有效期、流量配额、账户状态和节点分配都可能影响订阅内容。不同服务商的处理方式不同:有的返回空列表,有的返回说明信息,有的直接拒绝请求,不能只凭一个提示确定账户已经到期。

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 是不同协议,订阅中的参数需要与相应协议匹配。解析失败时,不要为了“先显示出来”把协议类型强改成另一种。让服务商确认导出内容与客户端兼容,比手动猜测端口、TLS 或认证字段更可靠。

五、更新时机与网络:每次只改变一个条件

续期、重置链接或修改节点分配之后,上游可能尚未完成同步。没有适用于所有服务商的固定等待秒数,应以账户页面状态和服务商说明为准。连续刷新既不能加快同步,还可能触发频率限制,使原问题与新产生的限流混在一起。

  1. 记录当前状态。记下更新时间、完整错误文字、节点是否仍存在,以及当时使用 Wi-Fi 还是移动网络。不要先清空可用内容。
  2. 完成网络接入。如果 Wi-Fi 需要网页认证,先完成认证,再回到 Home 更新订阅。认证网页可能让订阅请求得到非预期内容。
  3. 手动更新一次。在 Home 对目标订阅执行更新,可通过下拉刷新触发检查;观察目标分组是否更新,不要只看连接开关。
  4. 切换一个网络再试。在条件允许时,从 Wi-Fi 切换为移动网络,或反向切换。保持订阅地址不变,以便判断是否与网络有关。
  5. 按结果分流。仅某个网络失败,优先检查该网络的访问条件;不同网络都返回同一权限或内容错误,优先联系自己的服务商。

不要把“必须先开连接才能更新”当成通用步骤。订阅请求的可达性取决于网络与相关设置;如果当前节点已经不可用,依赖它访问订阅反而可能形成循环。Global Routing 的 Config、Proxy、Direct、Scene 是路由姿态,不是修复订阅格式的选项。若测试路由条件,一次只改一个设置,记录原值,并在测试后恢复。

Settings → On Demand 控制按条件连接,不负责生成订阅内容。为排查空列表而反复切换 On Demand,会增加变量;保持原设置,先完成链接与响应检查。自动更新也不能修复已失效的 token,手动更新确认成功后,再观察后续自动更新结果。

六、常见追问与反馈清单

浏览器能打开订阅,为什么还是解析失败?

先确认显示的是订阅数据而非登录网页或通知页。浏览器登录状态可能掩盖接口权限问题;从自己账户页面重新复制客户端订阅地址,再在 Home 更新一次。

刚续期,为什么节点还是空的?

先检查账户页面是否已显示权益生效与节点分配,再按服务商说明等待同步。不要在等待期间重复新增多个相同订阅,否则后续难以分辨更新的是哪一个分组。

其他设备有节点,这台没有,要重装吗?

先核对两台设备的订阅地址、更新时刻和搜索筛选。另一台显示的可能是旧缓存,不能据此证明当前接口正常;让两台分别更新并记录结果,再判断设备差异。

重新导入前,旧订阅应该删掉吗?

先保留旧订阅及仍可用的节点。确需测试新地址时,使用能区分的新名称,核对更新结果;确认新订阅正常且没有需要保留的本地修改后,再整理重复条目。

如果仍无法定位,向自己的服务商提交一份不含凭据的记录。能帮助复现的信息比“不能用了”更有效,也能减少来回确认。不要附上完整订阅二维码或可识别个人账户的截图。

下载 Shadowrocket