本文速览

已有自己的服务信息与订阅链接时,先在 Home 手动刷新,确认错误发生在链接访问、内容解析还是服务器连接,再到 Settings → Subscribe 设置 Update on Open。本文说明单次更新、打开时自动更新与 Update via Proxy 的区别;更新失败时先保留现有列表,不要立即删除重建。

先区分订阅更新与服务器连接

Shadowrocket(小火箭)的订阅更新,是向已保存的订阅地址请求内容,并把可识别的服务器信息写入列表。打开 Home 的连接开关,则是使用当前选中的服务器建立连接。这是两个不同的过程:现有服务器能使用,不代表订阅地址仍然有效;订阅获取成功,也不代表返回的每台服务器都能连接。

本文以用户已经持有自己的订阅为前提。开始排查前,记下订阅分组名称、错误原文、发生时间和当前网络类型。如果列表里有自己单独修改过的条目,应先保存必要信息;订阅刷新可能按远端内容重建条目,不能把手动修改当作长期保留的依据。

2 个阶段
获取订阅内容 → 解析并更新列表
401 / 403
HTTP 身份验证或访问权限问题的线索
443
HTTPS 未显式指定端口时的默认端口

这里的端口指订阅网址的 HTTPS 请求,不是服务器连接端口。例如一个订阅地址使用 HTTPS 默认端口 443,里面列出的服务器仍可以使用服务信息指定的其他端口。不要因为订阅更新失败,就把所有服务器端口统一改成 443。

在 Home 手动更新订阅

手动更新适合首次导入后验证,也适合服务信息变更后的单次检查。先观察一次完整结果,再决定下一步,不要连续快速下拉;频繁重复请求可能触发订阅端的访问频率限制,还会让不同次请求的错误混在一起。

  1. 核对条目

    进入 Home,确认已有 Subscribe 类型的订阅及对应分组。若原来只手动添加了一个服务器,列表中没有订阅地址,就没有可供刷新整组服务器的来源。

  2. 检查地址

    打开目标订阅的编辑信息,核对 URL 是否完整。不要把账户登录页、购买记录页或单个服务器的分享 URI 当成订阅 URL;不要在截图或公开记录中展示完整 token。

  3. 下拉刷新

    回到 Home,在列表中向下拉动触发更新,等待本次请求结束。有多个订阅时,分别核对各分组结果,不要因为其中一组变化,就认定所有订阅都已更新成功。

  4. 核对结果

    检查提示、分组内容和预期变化。服务器数量不变并不等于失败,远端可能返回了相同内容;列表有变化也不能替代连接测试,应再选择自己要用的服务器验证访问。

打开时自动更新:Update on Open

手动刷新成功后,再进入 Settings → Subscribe → Update on Open 开启打开应用时更新。这个设置用于打开应用时触发订阅更新,不是持续轮询服务器,也不是把更新任务交给一个保证准点执行的后台定时器。

首次验证时,先手动成功刷新一次,再开启 Update on Open,离开应用后重新打开并观察更新结果。仅仅从其他页面返回 Home,不能作为已经触发一次“打开时更新”的可靠证明;网络可用性、应用当时的运行状态也会影响请求能否完成。

Settings → On Demand 管理的是连接触发条件,与订阅更新不是同一个设置。开启 On Demand 不等于开启 Update on Open;关闭打开时更新,也不等于关闭已有的连接触发条件。排查时应分别记录这两个设置,避免同时改动后无法判断原因。

超时与网络受限:何时使用 Update via Proxy

先确认当前网络本身可用,再判断订阅域名是否能通过当前路径访问。如果普通网页也打不开,优先处理 Wi-Fi 认证、蜂窝网络权限或网络切换问题。若只有订阅地址请求超时,再考虑请求路径差异,而不是立即替换链接。

当订阅地址通过当前直连网络无法访问,而已有服务器仍然可用时,可以先建立可用连接,再进入 Settings → Subscribe → Update via Proxy 开启该选项,然后回到 Home 手动刷新。它改变的是订阅更新请求的访问方式,不能修复过期凭据、错误 URL 或不兼容的返回内容。

观察到的现象优先操作判断边界
普通网页与订阅请求都超时检查基础网络,切换 Wi-Fi 或蜂窝网络后重试暂时不能判断是订阅链接失效
直连请求失败,已有连接可用建立连接后测试 Update via Proxy成功只说明此次请求路径可用
通过已有连接仍返回 401向自己的服务提供方核对订阅凭据改变网络路径通常不能修复凭据
已有服务器全部不可用先确认基础网络与订阅端状态不能依赖失效连接完成代理更新

结论:一次只改变一个条件

保留同一订阅地址,先更换基础网络测试一次,再单独测试 Update via Proxy;记录每次结果,避免同时改 URL、连接模式和更新设置。

Home → Global Routing 中的 Proxy、Direct、Config、Scene 用于选择流量处理方式,不是四种订阅格式。Config 模式下的 DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINAL 等规则会影响相应流量的路由,但盲目追加规则不能让已失效的 token 恢复有效。需要检查规则时,应先确认本次请求究竟使用了什么访问路径。

按报错区分链接失效与格式问题

下面列出的是网络响应或系统错误中可能看到的原文。具体界面可能只展示状态码、简短描述或本地化提示,应以本次实际记录为准。状态码只能定位问题类别,不能单凭一个数字断言账户到期或服务器永久下线。

报错:401 Unauthorized

原因:请求未提供被订阅端接受的身份凭据,URL 中的 token 可能缺失、失效或已被重置。

解法:在自己的服务管理页面核对当前订阅地址,完整复制后替换原地址,再手动更新一次;不要只复制问号前面的部分。

报错:403 Forbidden

原因:订阅端拒绝本次请求,可能涉及账户权限、访问来源或服务端策略。

解法:保存发生时间与状态码,向自己的服务提供方确认访问条件;更换路径只能用于定位,不能保证解除权限限制。

报错:404 Not Found

原因:请求路径不存在,常见于旧入口停用、地址复制不完整或路径被误改。

解法:核对域名、路径和查询参数,使用自己账户中当前有效的订阅地址,不要尝试猜测新的路径。

报错:The request timed out.

原因:请求在限定时间内没有完成,可能发生在网络连接、订阅端响应或中间访问路径。

解法:先验证基础网络,再按上一节分别测试网络切换与 Update via Proxy,避免把超时直接判为链接过期。

还有一种情况是 HTTP 请求已完成,但返回内容无法解析。状态码 200 只表示请求在 HTTP 层面成功,并不保证正文是有效订阅。登录页面、网络认证页面、服务维护通知甚至一段 HTML 错误页,都可能以 200 返回。

检查 URL 完整性与敏感信息

订阅 URL 往往同时承担访问凭据的作用。下面仅展示地址结构,域名与 token 都是示例,不能用于实际订阅。排查时可以比较自己地址的结构,但不要把真实链接贴到公开网页或截图里。

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

排查记录通常只需要分组名称、时间、网络类型、错误原文,以及是否开启 Update via Proxy。需要联系自己的服务提供方时,使用其既有支持渠道,先提供脱敏信息;对方是否能看到请求日志,应以其实际能力为准。

常见问题:更新后列表与自动更新行为

开了自动更新,为什么打开后还是旧列表?

先到 Home 手动刷新确认请求是否成功,再到 Settings → Subscribe 核对 Update on Open。若手动也失败,先处理链接或网络错误;若远端返回相同内容,更新成功后列表也可能没有可见变化。

订阅能更新,选中的服务器却不能用?

更新只证明已获取并解析订阅内容。回到 Home 核对当前选择,检查 Global Routing 与已有服务参数,再做实际访问测试;不要把“更新成功”当成全部服务器的可用性报告。

更新失败了,要把原订阅删掉再加吗?

先保留原条目,检查 URL 和错误原文。删除会丢失可对照的信息,也不会修复超时或权限问题。确需替换地址时,先记录分组及必要设置,再编辑原订阅,避免反复导入形成重复列表。

多个订阅只有一组更新失败怎么办?

先单独核对失败分组的地址与返回状态。其他订阅能成功只能说明部分请求可达,不能证明这个域名、路径和 token 都有效;不要因此批量修改所有分组的配置。

买了 Shadowrocket,订阅会自动获得吗?

客户端买断 ≠ 线路套餐。Shadowrocket 是通过 App Store 获取的闭源商业应用,订阅内容来自用户已有的服务信息;应用购买与订阅地址的有效性应分别核对。