2026-08-14 · 问题排查 · 约 8 分钟

Shadowrocket 订阅解析失败或节点列表为空:逐项自查步骤

订阅导入后提示解析失败或列表为空时,按顺序核对四处:链接格式与完整性、服务商侧状态、更新时机与网络环境、订阅内容编码。

本文速览

本文适用于已经持有自己服务商订阅的用户。Shadowrocket(小火箭)的订阅更新需要先获取响应,再识别内容,最后生成服务器条目;任一步失败都可能表现为列表没有变化。先保留原有记录,再按链接、账户状态、请求路径、内容格式的顺序检查,可区分“没有取到内容”和“内容无法解析”,避免反复删除仍可使用的配置。

一、先区分列表为空、更新失败与连接失败

订阅地址用于获取一组服务器配置,不等同于某台服务器的连接地址。订阅能成功更新,也不保证其中每台服务器都能建立连接;反过来,旧服务器还能使用,也不代表订阅接口当前能够访问。排查前先在 Home 展开对应订阅分组,确认是整个分组没有条目,还是条目仍在、只是 Connectivity Test 没有得到有效结果。

读取订阅地址 请求订阅接口 接收响应内容 解析服务器 显示列表
  1. 记录现象:记下报错原文、发生时间、使用的网络,以及更新后条目是否变化。不要只记录“不能用”。
  2. 保留已有记录:先不要删除原订阅、Config 或仍可连接的服务器。需要留存界面时,遮住订阅地址、密码和 token。
  3. 检查显示状态:确认 Home 中对应分组已经展开;如使用了搜索或筛选,先清除条件,再判断是否真的为空。
  4. 限定测试范围:一次只检查一条订阅。更新单个分组后观察结果,不用其他分组的成功状态替代本条订阅的验证。

如果条目正常显示,只是连接超时,应转向服务器参数与连通性检查,而不是继续处理订阅编码。本文后续步骤主要针对获取或解析订阅内容失败的情况。

二、核对链接格式、完整性与导入位置

从自己服务商的订阅管理页面重新复制完整地址,再与 Shadowrocket 中保存的地址核对。不要使用账户登录页、订单页或浏览器地址栏中的管理页面来代替订阅接口。带有 token 的查询参数通常承担鉴权作用,少一个字符、复制进一个换行,都可能改变请求结果。

https://example.com/sub?token=xxxx

上面只是用于说明结构的假地址,不能提供服务器条目。https:// 是协议部分,example.com 是示例主机名,/sub 是示例路径,问号之后为查询参数。真实路径和参数应保持服务商提供的原样,不按示例自行改写。

三、确认服务商侧状态与 HTTP 响应

地址完整并不代表接口一定返回服务器配置。账户到期、访问权限变化、接口维护、请求频率限制,都可能使同一地址返回不同内容。先在自己的账户页面核对订阅是否有效、是否还有可用条目、是否发生了地址重置;这些状态需要由服务商确认,客户端本地无法修复服务端的权限或数据。

443
HTTPS 未显式指定端口时使用的默认端口
401
HTTP 鉴权失败状态,需核对凭据
403
HTTP 拒绝访问状态,需确认访问限制

下列是请求日志或服务端诊断中可能出现的 HTTP 状态原文,不是对 Shadowrocket 弹窗文案的逐字承诺。应用未显示状态码时,不要仅凭“列表为空”推断一定是其中某一项。

报错:401 Unauthorized

原因与解法:接口没有接受当前鉴权信息。核对订阅 token 是否缺失、失效或已被重置,再用账户页面提供的最新地址更新。

报错:403 Forbidden

原因与解法:服务端拒绝本次访问。向自己的服务商确认账户权限、来源限制和接口要求,不通过反复修改服务器连接参数处理。

报错:429 Too Many Requests

原因与解法:请求频率触发限制。暂停连续刷新,按服务端提示的等待时间或服务商说明重试,并检查是否有多台设备同时自动更新。

判断:先修复接口响应,再处理解析

如果已确认返回的是鉴权错误或访问限制页面,下一步是恢复订阅接口的有效响应;切换协议、修改规则或重新导入相同地址都不能补回服务端没有返回的服务器数据。

四、分开验证更新时机与网络路径

订阅更新本身也是一次网络请求,需要完成域名解析、连接和 HTTPS 验证。当前网络能够打开普通网页,不代表订阅主机也能访问。浏览器已经登录账户时,还可能依靠 Cookie 显示内容;应用使用订阅 URL 发起请求时,不一定具备同样的登录状态,因此“浏览器能打开”只能作为线索。

  1. 先完成网络接入:如当前 Wi-Fi 需要网页认证,先完成认证,再回到 Home 手动更新。认证页返回的 HTML 不能当作订阅内容解析。
  2. 记录一次更新结果:在 Home 下拉刷新后等待本次请求结束,记录结果。不要在请求尚未结束时连续重复操作。
  3. 切换单一变量:在条件允许时,用 Wi-Fi 与蜂窝网络分别测试同一地址;其余订阅设置保持不变,以判断是否与当前网络有关。
  4. 核对更新路径:查看 Settings → Subscribe 中与更新有关的选项。如果当前应用显示 Update via Proxy,记录其状态,并确认选择的路径确实可用;具体初始值以当前应用显示为准。
  5. 有可用连接再试代理路径:需要经代理更新时,先用已有服务器建立连接并确认可用,再更新订阅。空列表且没有其他可用服务器时,仅开启代理更新不能产生一条可工作的连接。
  6. 检查自动连接干扰:查看 Settings → On Demand 是否会在测试网络下自动恢复连接。记录原设置,避免把自动重连后的路径误记为未连接状态;测试结束后恢复原设置。

Home 中的 Global Routing 决定流量处理姿态,Proxy、Direct、Config、Scene 不应被当作四种订阅格式。尤其不要只看到 Proxy 就断言订阅请求已经通过代理;订阅更新选项、连接状态和实际请求结果需要分别确认。Config 中的规则也不能修复服务器返回的空响应。

五、获取成功后,检查响应内容与编码

HTTP 请求成功不等于订阅解析成功。即使状态为 200 OK,响应正文仍可能是登录页、维护提示、空文本,或并非供当前导入入口使用的内容。此时需要核对服务商提供的输出类型,而不是继续重复同一次下载。

响应现象 可能含义 下一步检查
正文包含 HTML 页面结构 登录页、网络认证页或接口错误页 确认订阅接口能在不依赖网页登录态的条件下返回配置
响应正文为空 接口没有返回条目,或账户当前没有可用数据 向自己的服务商确认条目数量和接口状态
返回 Base64 文本 可能是经过编码的服务器分享内容集合 确认数据完整、编码有效,且解码结果属于支持的订阅内容
只有部分条目出现 某些条目字段缺失、格式不兼容或被筛选 先清除筛选,再请服务商核对缺失条目的输出格式

Base64 是编码,不是加密,也不是有效订阅的保证。编码文本被截断、夹入说明文字,或解码后仍是错误页,都可能导致解析失败。不要把完整订阅上传到在线解码工具;可以让自己的服务商检查原始响应与编码完整性,并提供适用于 Shadowrocket 的输出。

六、常见追问与恢复后的验证

重新复制链接还是空,要先删掉原订阅吗?

先不删。保留原分组,确认新地址已正确保存,再对这一条订阅执行更新并观察报错。删除只会丢失现有记录,不能修复接口鉴权、网络超时或内容格式问题。

为什么浏览器能看到内容,应用却解析失败?

先区分浏览器显示的是原始配置还是账户网页。浏览器可能带有登录 Cookie,也可能跟随跳转进入管理页面;请服务商确认订阅 URL 的直接响应内容,以及是否需要额外认证。

打开连接开关再更新就一定能好吗?

不一定。已有连接必须可用,更新路径也必须符合当前设置;若问题是 token 失效或响应格式错误,改变路径不会解决。先记录 Settings → Subscribe 中的更新选项,再做一次受控测试。

列表恢复了,还需要检查什么?

在 Home 确认目标分组出现条目,选择其中一台服务器进行 Connectivity Test,再验证实际访问。恢复此前为排查临时改动的 On Demand 等设置;如果只恢复部分条目,继续核对筛选和服务商输出。

向自己的服务商提交问题时,可提供发生时间、所用网络、更新是否经过代理、报错原文,以及“完全为空”还是“部分条目缺失”。不提交完整 token、密码或服务器凭据。本站不提供、不销售、不推荐节点或订阅;订阅有效性与服务端输出需由用户自己的服务商确认。

完成标准:获取、解析、连接分别验证

本次更新完成且分组显示条目,说明获取与解析已恢复;随后用 Connectivity Test 和实际访问确认连接。把这三项结果分开记录,下一次发生问题时就能从失败环节继续排查。

App Store 下载先核对正版信息