已有自己的服务商与订阅时,先在 Home 手动更新并核对返回结果,再按需要启用 Settings → Subscribe → Update on Open。更新失败应依次区分链接授权、网络请求与内容解析问题,不要先删除已有分组。本文说明更新入口、自动更新边界,以及保留现有配置完成排查的方法。
订阅更新与连接测试分别检查什么
Shadowrocket(小火箭)的订阅更新,是重新请求用户保存的订阅地址,将返回的服务器条目读入应用。它不是更新 Shadowrocket 本身,也不等于连接测试。服务器能否建立连接,还取决于条目参数、网络环境及自己的服务状态。
订阅地址是请求入口,Home 中展开的服务器条目是读取结果,Config 中选用的配置则涉及规则等设置。更新服务器订阅,不应被理解为同步所有 Config 内容;同样,改变 Global Routing 也不是重新获取订阅。先区分操作对象,才能判断故障发生在哪一步。
只有请求与解析都完成,才能据此检查列表变化。更新成功但名称和数量不变,可能只是远端内容没有改变;旧条目还在,也不能单独证明刚才的请求成功。应结合应用显示的更新结果,以及自己服务商提供的当前条目进行核对。
在 Home 手动更新已有订阅
首次排查建议使用手动更新:停留在 Home,观察一次完整操作的结果,避免在切换网络、修改规则和更新订阅之间来回操作。本文按英文界面词说明;按钮位置与具体提示以当前应用显示为准。
-
确认分组
打开 Home,找到自己的订阅分组。先核对分组名称与已有条目,避免把手动添加的单个服务器误当作订阅。
-
检查地址
进入该订阅的编辑界面,核对 URL。不要随意改写域名、路径或查询参数;检查完可返回 Home,无需为测试先删除分组。
-
发起更新
在 Home 的列表顶部向下拉动并释放,触发订阅刷新。存在多个订阅时,注意分别核对各分组的结果,不把其中一个的成功当成全部成功。
-
核对结果
等待刷新结束,记录提示,再展开目标分组检查名称与数量。如果出现错误,先保留原条目和原始提示,按后文分类排查。
-
单独测连接
确认更新完成后,再选择自己的有效服务器进行连接测试。若列表已更新但连接失败,应转向服务器参数、服务状态或网络路径检查。
尚未添加订阅时,可从 Home 右上角“+”进入,Type 选择 Subscribe,在 URL 中粘贴自己已有的订阅地址并保存。新增订阅与刷新已有订阅是两种操作;排查现有问题时,不必反复新增相同地址,否则容易得到多个同名分组。
Update on Open 的含义与使用边界
进入 Settings → Subscribe,找到 Update on Open。启用后,应用会在打开时尝试更新订阅,减少每次手动刷新的操作。它不代表固定间隔的后台轮询,也不表示远端内容一变化,本地列表就立即变化。
从后台返回是否立即触发请求,不应仅凭列表画面判断;还需要考虑应用当时的运行状态,并核对实际更新结果。若要确认某个地址此刻能否获取,直接在 Home 手动刷新比反复切换前后台更便于观察。
Settings → On Demand 管理的是按需连接行为,与获取订阅列表属于不同环节。开启 On Demand 不会替代 Update on Open,启用 Update on Open 也不等于自动建立连接。排查自动更新时,先确认手动更新能够完成,再检查开关状态。
- 手动更新失败:先修复地址、网络或格式问题,不靠反复切换自动更新开关解决。
- 手动更新成功:保留该结果,再观察下一次打开应用时是否有更新反馈。
- 打开后列表不变:先确认远端是否实际改变,不能只凭数量不变认定自动更新失效。
- 需要稳定复现:记录网络环境与操作顺序,每轮只改变一个条件。
链接失效:先查 URL 与授权状态
订阅地址往往包含用于识别用户的参数。复制不完整、使用旧地址、服务端重置凭据,都会导致获取失败。下面只是结构示例,不是真实服务地址,也不可用于连接。
https://example.com/sub?token=xxxx
检查时应比较完整地址,而不是只看域名。示例中的 ?token=xxxx 表示查询参数的位置;真实地址可能使用不同的路径和参数名,不应照此修改。尤其要检查复制过程中是否带入空格、换行、引号或聊天文本中的标点。
| 检查对象 | 可核对现象 | 处理方法 |
|---|---|---|
| 完整 URL | 只有域名正确,路径或参数缺失 | 从自己的订阅管理页面重新复制完整地址。 |
| 访问凭据 | 旧地址失败,服务端已生成新地址 | 核对后在原订阅中替换 URL,再手动刷新。 |
| HTTP 401 | 响应要求身份验证或拒绝现有凭据 | 确认地址授权仍有效,不通过修改规则来修复凭据。 |
| HTTP 403 | 服务器拒绝访问 | 向自己的服务商核对访问权限及限制条件。 |
| HTTP 404 | 请求路径对应的资源未找到 | 核对路径与地址是否已变更,不直接断定是网络中断。 |
HTTP 状态码只有在提示或诊断信息实际提供时才用于判断,不能把所有“更新失败”都归为地址过期。浏览器能打开某个网站首页,也不证明订阅 URL 有效;首页与订阅接口是不同资源,可能有不同的访问要求。
超时与连接失败:按请求阶段排查
网络错误应尽量保留原文。以下是可能出现在系统网络错误中的英文描述,具体语言与显示形式以应用实际提示为准;不是每次失败都会显示同样的文字。按错误所处阶段排查,比一次修改多个设置更容易定位。
报错:The request timed out.
原因与解法:请求在等待期限内没有完成,可能涉及当前网络或远端响应;先确认当前网络可用,再换用另一个可用网络手动更新一次,并比较结果。
报错:A server with the specified hostname could not be found.
原因与解法:订阅域名未能解析;先核对 URL 中的域名拼写,再检查当前网络的域名解析是否正常,不要把目标域名直接替换成猜测的 IP。
报错:Could not connect to the server.
原因与解法:到目标服务器的连接未能建立;核对地址中的端口及目标服务状态,在保留原始地址的前提下向自己的服务商确认接口是否可访问。
例如,HTTPS 地址没有显式端口时通常使用 443;若 URL 明确带有端口,则请求会使用该端口。这里的端口属于订阅接口,不一定等于服务器条目里的连接端口。不要为了修复订阅更新,把所有服务器端口统一改成 443。
- 先完成当前 Wi-Fi 的网络认证;只能进入认证页面时,订阅请求可能无法正常完成。
- Wi-Fi 失败而蜂窝网络成功,说明结果与网络环境有关,应继续检查原网络,而不是立即删除订阅。
- 两个可用网络均对同一地址失败,应结合错误原文检查地址及远端服务,不能据此直接认定应用故障。
- 出现证书相关错误时,检查设备日期与时间,并核对目标域名的证书状态,不将关闭安全检查作为通用解法。
Global Routing 下的 Proxy、Direct、Config、Scene 涉及路由姿态,不是“修复订阅”的按钮。若测试确实需要切换路由,应记录原状态、一次只改一项,并在测试后恢复;仅凭订阅错误就改写整个 Config,会引入更多变量。
格式不符与空列表:请求成功后继续查内容
收到响应不等于获得可解析的订阅。接口可能返回登录页面、错误说明、空内容,或不适用于当前导入方式的数据。因此,网络已通但列表没有有效条目时,下一步应核对响应内容类型,而不是继续扩大网络修改范围。
| 现象 | 需要区分 | 下一步 |
|---|---|---|
| 返回网页内容 | 复制了管理页面地址,或请求被转到登录页 | 从自己的管理页面取得订阅入口,不使用页面地址代替。 |
| 响应为空 | 接口没有提供条目,或当前授权下没有可用内容 | 向自己的服务商核对该地址此时应返回哪些条目。 |
| 提示解析失败 | 返回格式、条目参数或协议内容不适配 | 确认该订阅适用于 Shadowrocket,并保留去除敏感信息后的错误原文。 |
| 更新后数量减少 | 远端调整了条目,不一定是本地丢失 | 比较自己的服务商当前列表,先确认预期数量。 |
| 条目更新但无法连接 | 订阅获取成功与服务器可用性是两回事 | 转查所选条目的参数、服务状态及连接日志。 |
不要仅凭返回内容“看起来像编码文本”就手动截取、拼接或重新编码;这样可能破坏原始数据,也会让后续排查失去依据。需要联系自己的服务商时,提供发生时间、网络类型、错误文字及是否能手动复现即可,完整订阅凭据只应通过其指定的私密渠道核对。
恢复后核对:先更新,再连接
修复后按同一顺序验证:在 Home 手动刷新,核对分组条目,再选择自己的服务器测试连接,最后按需要恢复 Update on Open。保留这一顺序,可以把订阅接口问题与连接问题分开,也能避免误把旧列表当成新结果。
- 确认更新结果:本次刷新结束,没有新的失败提示,目标分组内容符合预期。
- 确认所选条目:远端可能调整名称或移除条目,应重新核对当前选择,不能只看之前的选择记录。
- 确认规则配置:订阅更新不代替 Config 检查;连接后的访问行为仍需结合当前配置判断。
- 确认自动更新:手动更新稳定后,再启用或保留 Settings → Subscribe → Update on Open。
- 确认隐私记录:分享排查截图前,遮盖 URL 中的访问参数及其他身份凭据。
Shadowrocket 是 Apple 平台的闭源商业应用,主要用于 iPhone、iPad,唯一获取入口是 App Store。购买客户端与用户自己的订阅服务分别管理;重新购买应用不能修复已失效的订阅地址。系统要求与购买适用范围以 App Store 页面标注为准。