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

从链接格式、服务商侧状态、更新时机三个方向排查订阅解析失败或列表为空,按顺序给出可逐条核对的检查项。

本文速览

适用于用户已有自己的服务商与订阅,但 Shadowrocket 无法导入、更新后列表为空或仍显示旧条目的情况。先保留现有记录,再依次区分链接错误、请求失败、响应内容不兼容与列表显示问题;每次只改一个条件,结合原始提示判断下一步,避免把连接测试失败误当成订阅解析失败。

一、先区分订阅请求、解析与连接测试

Shadowrocket(小火箭)是 Apple 平台的闭源商业应用,以 iPhone / iPad 为主要使用设备,仅通过 App Store 获取,客户端采用一次性买断方式。客户端买断 ≠ 线路套餐。本文以用户已经持有订阅为前提;本站不提供、不销售、不推荐节点、订阅或服务商。价格、系统要求与通用购买适用性以 App Store 页面标注为准。

“订阅更新成功”和“节点可以连接”不是同一件事。更新首先请求订阅地址,再解析响应中的条目;只有得到可识别的条目后,才涉及节点连接、认证与流量转发。列表为空时直接更改节点端口或切换协议,通常没有对准发生故障的环节。

读取链接 请求订阅 解析内容 显示条目 测试连接

二、核对完整订阅地址,不修改凭据

回到自己服务商的账户页面,重新复制为 Shadowrocket 提供的订阅地址。不要从聊天记录里的截断预览、截图文字识别结果或浏览器地址栏中的账户页面反推链接。订阅地址通常包含认证参数,少一个字符也可能变成另一个请求。

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

上面是不可用于实际订阅的假值,只用于说明结构:协议是 https,主机名是 example.com,路径是 /sub,查询参数包含 token。真实地址的路径和参数由用户自己的服务商决定,不要求与这个示例相同。

  1. 检查首尾:去掉误复制的空格、换行、引号或中文句号;不要删除地址内部原本存在的符号。
  2. 检查参数:确认 ?、&、= 后面的值没有遗漏。不要自行解码再重新拼接含 % 的字符串。
  3. 检查入口用途:账户登录页、购买记录页和订阅地址不同;单个节点分享内容也不等于可持续更新的订阅地址。
  4. 检查是否被重置:如果曾在账户页面重置订阅凭据,旧地址可能立即失效;应以重新复制的地址为准。
  5. 保留来源:在 Home 找到对应订阅的编辑入口,核对保存的 URL。先记录所属分组与原有条目数量,再保存修改,避免同时新增多个同名订阅。

三、区分网络失败与服务端拒绝

发起一次更新后,先记录完整提示,再决定检查网络还是检查账户状态。下列是可能出现在响应、日志或诊断结果中的标准 HTTP 状态行,不代表 Shadowrocket 的每个界面都会逐字显示它们;实际判断以本次请求记录为准。

报错:401 Unauthorized

原因:服务器没有接受当前请求的认证信息,可能是凭据已失效。解法:在自己的账户页面确认订阅权限并重新复制地址,不要靠反复改动 token 猜测有效值。

报错:403 Forbidden

原因:服务器拒绝访问,可能涉及权限、访问策略或请求来源限制。解法:记录发生时间及网络类型,向自己的服务商确认限制原因;仅凭 403 不能断言账户已经到期。

报错:404 Not Found

原因:请求路径不存在,可能是链接截断、入口变更或服务器使用此状态隐藏无效资源。解法:从账户页面重新取得完整订阅地址,再核对保存的 URL,不手工补猜路径。

报错:429 Too Many Requests

原因:服务端认为请求过于频繁。解法:停止连续刷新;若响应提供 Retry-After,按其指定时间等待,否则遵循服务商说明后再试。

如果是请求超时或域名解析错误,服务器未必已经收到请求。先确认当前 Wi-Fi 是否需要网页认证,再在允许的情况下改用蜂窝网络做一次对照。证书错误则应先核对设备日期与时间、网络认证状态以及服务端证书,不要通过关闭证书验证来掩盖问题。

443
HTTPS 默认端口;地址明确指定端口时以地址为准
3 类
分开记录:网络失败、HTTP 状态、内容解析结果
1 项
每轮只改变一个条件,保留其余设置作为对照

结论:收到拒绝响应时先查权限

已有 401 或 403 等响应时,先核对订阅授权与服务端访问要求;没有收到响应时,先查网络路径。不要把这两种情况统一处理为更换节点协议。

四、请求完成后,检查返回内容是否能解析

HTTP 请求成功只说明传输层面取得了响应,不保证响应就是有效订阅。服务器即使返回 200,也可能给出登录页面、交互验证页面、维护通知或空文本。浏览器能打开某个地址,同样不等于 Shadowrocket 能从该地址读取到节点条目;浏览器可能已有登录状态,而应用发出的订阅请求没有对应状态。

观察到的结果说明什么下一步
返回登录或验证页面拿到的是网页内容,不是可直接解析的订阅内容确认使用专用订阅入口,让自己的服务商核对接口响应
返回空内容本次响应没有可供解析的正文核对账户订阅状态、可见条目及服务端生成结果
正文存在,但全部解析失败可能是格式不兼容、内容被截断或数据字段不完整使用明确适用于 Shadowrocket 的订阅格式,并保存脱敏后的错误信息
只出现部分条目可能部分记录无效,或当前视图没有展示全部结果先清除搜索条件、展开分组,再比较服务端应返回的条目

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 是协议名,不是判断整个订阅文本有效性的充分条件。内容中出现这些名称,并不能证明每条记录的认证字段、地址、端口与传输参数完整。不要为了让导入“看起来成功”而批量改协议名、随意填端口或把网页源码当作节点文本粘贴。

五、回到 Home,排除显示与更新时机问题

在 Home 先退出搜索,展开订阅分组,确认看到的是目标订阅而不是另一个同名分组。记录更新前的条目数量以及是否存在仍可使用的旧条目。更新失败后旧列表仍在,不表示已经获取最新内容;列表突然变空,也不能单凭这一现象认定是应用删除了有效数据。

  1. 保留现场:记录分组名称、更新前条目数量、错误提示与本次操作时间。不要先删除整个分组或重装应用。
  2. 单独更新:在 Home 找到目标订阅的更新操作,执行一次手动更新;若操作菜单随界面布局不同,以当前订阅条目提供的更新入口为准。
  3. 等待结果:等本次请求结束再观察,不连续触发,也不要把多个分组同时更新造成的结果混在一起。
  4. 控制路径:如果存在订阅经代理更新的设置,先确认当前连接本身可用。依赖空列表中的节点去获取这份订阅,会形成无法完成的依赖链。
  5. 恢复日常设置:排查期间若暂停了自动更新或更改访问路径,确认修复后再恢复;记录最终成功的条件,避免下一次自动更新重复失败。

Global Routing 的 Config、Proxy、Direct、Scene 属于流量处理姿态,不是订阅格式转换器。订阅请求是否通过代理还要看应用相关更新设置与当前网络路径,不能仅凭切到 Proxy 就认定订阅一定会经代理更新。Settings → On Demand 用于按条件触发连接,也不负责修复失效链接或解析不兼容的响应。

结论:旧条目可用时,先保留再验证

先修复订阅请求或响应内容,再检查条目是否恢复;不要通过删除现有可用条目来验证更新能力,否则可能同时失去对照信息与可用连接路径。

六、常见追问与提交排查材料

如果按以上顺序仍未定位,整理一次完整失败记录比连续尝试更有价值。把问题限定到“链接、请求、响应、解析、显示”中的一个环节,可以减少重复核对,也能避免将账户权限问题误交给客户端连接设置处理。

网页能打开订阅,为什么应用还是解析失败?

先确认浏览器显示的是订阅内容,而不是登录页或验证页。浏览器可能携带已登录状态;请从账户页面重新复制专用订阅地址,并让自己的服务商核对未登录请求得到的响应内容。

列表有条目,但全部超时,还要重新导入吗?

先保留订阅,在 Home 对现有条目做连接测试,并核对服务端状态与节点认证信息。条目已显示说明至少有内容被解析,连接超时不能直接证明订阅地址错误。

刚更新就变成空列表,能直接连续刷新吗?

先停止重复请求,清除搜索条件并展开分组,再核对账户页面是否应有条目。若服务端确实返回空内容或出现 429,应先处理内容或等待限制解除,而不是持续刷新。

换了网络就成功,是否需要修改所有节点?

不需要先批量修改。记录成功与失败时使用的网络、是否经过代理及错误提示,重点核对订阅域名解析、网络认证和请求访问限制;节点参数与订阅请求是不同检查对象。

向自己的服务商反馈前,准备这些信息

完成排查的标准是:目标订阅能完成请求,响应可解析,Home 显示预期条目,再单独确认节点连接结果。不要只以错误提示消失作为恢复依据,也不要把一次更新成功理解为后续所有线路都一定可用。

App Store 正版核对