本文速览

已有订阅却无法更新时,先保留当前服务器列表,再核对链接、账户状态、网络请求与返回内容,最后只触发一次更新并记录结果。本文适用于已经从你的服务商处获取订阅的用户,帮助区分“请求没完成”“响应不是订阅”和“列表中没有可用条目”,避免通过反复删除、重建配置扩大问题。

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

Shadowrocket(小火箭)的订阅更新,是根据保存的地址请求服务器条目,再把可识别的内容显示在 Home。更新成功不等于其中每个服务器都能连接;服务器连接失败,也不能反过来证明订阅链接失效。排查时应先确定故障发生在哪一步,而不是同时修改订阅、规则与服务器参数。

读取订阅地址 请求服务端 接收响应 解析条目 显示服务器

在 Home 先展开对应订阅分组,检查是否只是分组收起;如果正在使用搜索或筛选,先清除条件。记录更新前的条目数量,以及更新后是保留旧条目、出现空列表,还是只有连接测试失败。三种现象的处理方向不同。

可见现象优先核对暂不改动
更新报错,旧条目仍在地址、网络可达性、服务端响应已有服务器参数
分组展开后没有条目账户权益、响应内容、输出格式Config 中的分流规则
条目存在,但连接失败服务器状态、认证参数、TLS 设置已确认正常的订阅地址

二、核对完整链接:不要只看域名是否正确

订阅链接从你的服务商处获取。应使用其提供的订阅复制入口,而不是复制账户管理页、登录页或账单页的网址。下面是用于解释结构的假值,不是可用订阅;真实链接的路径、参数名称与长度可能不同,不能按示例自行拼接。

https://example.com/sub?token=xxxx
  1. 核对开头与结尾:确认协议、域名、路径和完整查询参数都被复制。聊天软件的折行显示不一定改变内容,但手动选取文字时可能漏掉最后一段。
  2. 去掉附带文字:不要把“订阅地址:”、包裹用的引号、句末标点或换行一起写入 URL 字段。也不要删除链接内部原有的符号。
  3. 保留参数原貌:? 后面通常是查询参数,& 用于分隔参数;把它们替换成中文符号会改变地址。不要擅自改写大小写,也不要重复解码百分号编码。
  4. 重新复制一次:在 Home 进入对应 Subscribe 条目的编辑界面,核对 URL。需要重新添加时可从 Home 的添加入口进入 Add Server,选择 Subscribe,再填写链接;先保留旧条目,避免丢失仍可工作的服务器。

某些网页源码会用 & 表示分隔符 &。如果直接从源码复制,可能把表示方式一起带入地址。优先使用服务商页面的复制按钮,不要对已经正确复制的链接再执行一次全局替换。

三、服务商侧自查:账户有效不等于响应一定有条目

应用购买与服务商账户是两套独立关系。客户端买断 ≠ 线路套餐;在 App Store 恢复 Shadowrocket 购买,不会自动恢复服务商账户权益,也不会替换失效的订阅链接。确认链接完整后,再检查你已有账户的有效期、可用流量、订阅地址是否重置,以及是否存在服务商明确说明的请求限制。

401
HTTP 认证相关响应,先核对凭据
403
HTTP 拒绝访问,核对账户与访问条件
429
HTTP 请求过多,停止连续刷新

这些是 HTTP 状态码,不是 Shadowrocket 保证逐字显示的弹窗文案。只有在应用提供的错误信息或服务商确认的响应中看到相应状态时,才按该分支处理;不能仅凭列表为空就推断账户已到期。

HTTP 401 Unauthorized

原因:请求未通过服务端认证,可能是 token 已失效或链接被重置。

解法:从你的服务商处获取当前有效链接,完整替换保存的 URL 后再更新。

HTTP 403 Forbidden

原因:服务端拒绝本次访问,可能涉及账户权限或访问条件,不能只归因于密码错误。

解法:让服务商核对该订阅请求的拒绝原因,并按其说明处理账户或访问限制。

HTTP 429 Too Many Requests

原因:请求触发服务端频率限制,继续刷新可能仍被拒绝。

解法:停止手动更新;若响应提供 Retry-After,按其指示等待,否则向服务商确认恢复条件。

结论:先处理已确认的服务端拒绝

如果已确认响应为 401、403 或 429,先修复对应的认证、权限或频率问题,不要通过重写 Config 或反复添加同一链接来尝试消除它。

四、返回成功但节点为空:检查内容,不只检查状态码

HTTP 200 只说明服务端返回了成功响应,不保证内容就是 Shadowrocket 能解析的订阅。登录页面、验证页面、到期说明也可能以 200 返回。此时域名可以访问,甚至页面能正常打开,但响应里没有可导入的服务器条目。

Home 中的 Subscribe 用于管理订阅服务器;Config 中的配置文件还可能涉及规则与其他设置。不要把配置文件地址、规则列表地址和服务器订阅地址互相替代。若服务商同时提供多个入口,应先确认每个入口的用途,再选取对应类型。

已核实的返回结果含义下一步
200 与 HTML 页面请求成功,但内容不是服务器订阅核对订阅入口和重定向结果
200 与空正文没有可供解析的正文由服务商检查生成结果
200 与非空订阅内容仍需核对格式和条目字段提供脱敏错误信息,请服务商核对输出

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

更新需要先完成域名解析、连接以及 HTTPS 的 TLS 校验,之后才进入订阅解析。请求超时与解析失败不是同一层故障。切换网络后旧连接可能尚未恢复,账户刚续期时服务端也可能尚未完成状态更新;应以实际请求结果和服务商说明为准,不设一个通用的“等待几分钟就一定恢复”结论。

  1. 保存基线:记录当前网络是 Wi-Fi 还是蜂窝网络、VPN 是否连接,以及 Home → Global Routing 当前选项。不要同时改动这些条件。
  2. 完成一次更新:在 Home 对目标 Subscribe 条目执行更新,等待此次请求结束。不要连续点击或同时在多台设备上重复请求同一链接。
  3. 换网络复测:如果是超时,在设备网络稳定后,用另一种可用网络复测一次。一个网络失败、另一个成功,说明应优先核对网络路径,而不是立刻重置 token。
  4. 隔离旧连接影响:若怀疑当前连接影响请求,可在理解会中断现有连接的前提下暂时断开 VPN 再测。若 VPN 自动恢复,核对 Settings → On Demand;测试完成后恢复原有设置。
  5. 核对系统时间:设备日期时间明显错误时可能影响证书有效期判断。先校正时间,不要通过关闭证书校验来处理订阅请求错误。

Global Routing 下的 Config、Proxy、Direct、Scene 是流量处理姿态,不是订阅格式选择器。更新请求实际采用的路径还要结合应用设置与当前连接状态判断,不能仅凭模式名称认定请求必然走某条路径。修改 DOMAIN-SUFFIX、GEOIP、IP-CIDR 或 FINAL,也不能修复服务端返回的空正文。

六、提交排查信息与恢复后的验收

前面的检查仍不能定位时,把可复核的信息提交给你自己的服务商。描述应围绕“何时、在哪种网络、执行什么操作、得到什么结果”,而不是只写“节点没了”。不需要公开账户密码或完整订阅 URL,也不应通过转发原始链接让陌生人代测。

恢复后先更新一次并展开分组,确认服务器条目已经显示,再用一个现有条目测试连接。若列表恢复但连接仍失败,应转入服务器连接排查,不再重复修改订阅。对于 Trojan 或其他使用 TLS 的条目,应按服务商给出的参数核对 Address、Port 与相关 TLS 字段,而不是根据常见端口自行填值。

结论:以“能更新”和“能连接”分别验收

先确认一次订阅更新能稳定生成条目,再确认所选服务器能建立连接;完成后恢复为排查临时改动的 On Demand 与路由设置,避免把测试状态长期保留下来。