先保留现有订阅与可用条目,再区分“请求没有完成”“取回内容无法解析”和“返回内容没有有效条目”。本文面向已经持有自己服务商订阅的用户,按 Home 中的 Subscribe 录入、地址核对、HTTP 响应、更新网络与重试时机给出检查顺序;不需要先重置 Config,也不需要反复删除后重建订阅。
先区分:订阅为空、解析失败与连接失败
Shadowrocket 的订阅更新,是从已有订阅地址取得内容并生成条目的过程;连接测试则使用某个条目建立连接。前者成功不代表后者一定成功,后者失败也不能证明订阅地址无效。排查时先确认问题发生在哪一步,不要把所有现象都归为“节点不能用”。
- 保存后只有订阅分组,没有条目:检查是否已经执行更新、分组是否展开,以及请求返回的内容是否确实包含有效条目。
- 更新时出现解析提示:优先核对响应格式。登录页面、错误说明和空内容都不能当作正常订阅列表解析。
- 更新等待很久后失败:优先检查访问订阅域名的网络、DNS 与 TLS 连接,再确认服务端是否可用。
- 条目已经出现,但无法连接:转入单条目的地址、端口、认证与传输参数检查,不要继续用刷新订阅代替连接诊断。
Home 主要用于管理条目与连接,Config 用于配置文件,Settings 用于相关设置。修改 Config 中的 DOMAIN-SUFFIX 或 FINAL,不会把一个登录网页转换成订阅内容。先保留现有配置,仅围绕订阅本身做最小范围检查,便于判断每次操作是否有效。
链接格式:从 Subscribe 入口核对完整地址
从自己服务商的订阅管理页面重新复制地址,比手工修补一条残缺链接更可靠。确认复制的是订阅地址,不是账户首页、登录地址或账单页面。订阅 URL 中的查询参数经常承担认证作用,少一个字符也可能改变服务器返回结果。
-
保留原记录
在 Home 记录当前订阅名称、已有条目数量和本次失败提示。暂不删除仍有可用条目的订阅,也不覆盖已有 Config。
-
复制完整地址
在自己的服务商页面复制完整订阅 URL,检查开头的协议、域名、路径,以及问号后面的全部参数。移除复制时混入的首尾空格,不随意改写参数。
-
核对录入类型
需要新建时,在 Home 右上角“+”进入 Add Server,将 Type 设为 Subscribe,再把地址粘贴到 URL。已有订阅则进入对应编辑页核对 URL,避免重复建立多个相同分组。
-
保存后更新
保存并返回 Home,下拉执行更新。等本次请求结束后,再检查分组内条目数量与提示,不要在请求尚未完成时连续触发刷新。
-
记录一次结果
记下此次更新的时间、所用网络和提示原文。下一次只改变一个条件,例如切换网络,才能判断差异来自哪里。
https://example.com/sub?token=xxxx
上面的地址仅用于说明 URL 结构,不是可用订阅。? 后的参数、参数之间的 &、百分号编码都可能属于原地址的一部分。不要把聊天工具显示的省略号当作链接内容,也不要自行解码后重新拼接。若从网页源码中复制到了字面形式的 &,应回到页面的复制入口重新取得地址,而不是凭猜测修改令牌。
[Check]
ss://、vmess://、vless://、trojan://通常表示单条目分享内容,不等同于可定期拉取的 HTTPS 订阅地址。单条目应按对应导入方式处理;不能只把前缀改为 HTTPS,就获得订阅更新能力。
返回内容:HTTP 成功不等于解析成功
请求到达服务器后,还要检查服务器实际返回了什么。HTTP 状态码描述请求处理结果,订阅解析还取决于响应正文是否是可识别的条目内容。因此,浏览器能够打开某个地址,只能说明它产生了响应,不能单凭页面可见就判断订阅有效。
结论:先确认正文,再判断解析器
如果返回的是登录页、验证页或维护说明,先向自己的服务商确认订阅接口状态与适用格式;不要通过反复修改本地规则来处理服务端页面。
部分订阅把条目列表编码后返回,部分返回可直接读取的文本;不能仅凭“看起来像一长串字符”判断损坏。反过来,一个排版完整的 HTML 页面也可能以 HTTP 200 返回,却不包含任何可导入条目。需要由自己的服务商确认该接口提供的是 Shadowrocket 可识别的订阅内容,而不是仅供网页阅读的说明。
- 正文为空:让服务商核对该账户当前是否应有条目、接口是否生成了内容,以及缓存是否仍在返回旧结果。
- 正文是登录或验证页面:浏览器可能借助已登录状态显示内容,但应用的订阅请求没有相同的会话条件;应取得适用于客户端的订阅地址。
- 正文含错误说明:按说明核对授权、账户状态或请求限制,保留原文,不把错误文字粘贴到 Add Server 的其他字段。
- 只有部分条目出现:请服务商检查未出现条目的分享格式、必要字段与协议参数,不能仅凭部分导入成功判定全部内容正确。
服务商侧:按响应原文处理,不猜测故障原因
以下卡片列出的是标准 HTTP 响应状态短语,不表示 Shadowrocket 必定逐字显示相同提示。只有在应用提示、请求诊断结果或自己的服务商记录中看到了对应状态码,才按该分支处理;仅有“解析失败”时,不能直接推断为认证失效或访问受限。
HTTP 401 Unauthorized
原因与解法:请求未通过认证;从自己的服务商页面重新取得当前有效订阅地址,核对完整令牌,并确认授权状态后再更新。
HTTP 403 Forbidden
原因与解法:服务器拒绝了该请求,具体限制需由服务端确认;提交状态码与发生时间,请服务商检查访问策略,不凭状态码单独认定账户到期。
HTTP 404 Not Found
原因与解法:请求资源未找到;核对域名与路径是否完整,并确认服务商是否更换了订阅入口,不自行猜测新的路径。
HTTP 429 Too Many Requests
原因与解法:触发请求频率限制;停止连续刷新,若响应提供 Retry-After 则按其要求等待,否则向服务商确认允许的重试间隔。
HTTP 503 Service Unavailable
原因与解法:服务器当前无法处理请求;保留已有条目,向服务商确认恢复情况,待服务恢复后再执行一次更新。
如果服务商报告接口已恢复,而客户端仍为空,应进一步区分“更新没有取回新内容”和“取回的新内容仍为空”。提交更新发生时间、状态码、条目数量变化与提示原文即可帮助对方定位;截图和日志中的订阅 token、密码、UUID 等认证信息应先遮盖,不在公开讨论区贴出完整 URL。
更新时机:网络路径、代理更新与自动连接
更新订阅需要能够访问订阅域名,连接条目需要能够访问条目的服务器,两者的域名和网络路径可能不同。某个条目能连接,不等于订阅域名当前可直连;订阅域名可以访问,也不等于每个条目的服务端都正常。
当直连请求超时,而已有条目仍可正常使用时,可以先建立可用连接,再到 Settings → Subscribe 核对 Update via Proxy,按需要启用后回到 Home 更新。这个设置改变订阅请求的访问方式,不会修复错误令牌、空响应或服务端格式问题。没有可用连接时,单独开启它不能自动建立可用的更新通道。
- 先完成网络接入:新连接的 Wi-Fi 若需要网页认证,先完成认证,再返回应用更新;不要把认证页面当作订阅响应。
- 先检查当前连接:Global Routing 中的 Proxy、Direct、Config、Scene 属于流量处理姿态,不是订阅格式选择器。检查现状即可,不需要逐个切换来尝试解析。
- 注意自动连接条件:Settings → On Demand 用于按条件触发连接,不是订阅更新开关。记录它是否造成连接状态变化,避免测试期间路径不断改变。
- 切换网络后再试一次:在允许使用的另一网络上重试可帮助区分网络路径问题,但应记录条件变化,不同时修改 URL 与其他设置。
- 等待服务端生效:账户状态或订阅内容刚发生变更时,以自己的服务商确认的生效时间为准,不设定通用的“等待几分钟必定恢复”。
不要为订阅更新错误关闭证书校验。出现 TLS 相关提示时,先核对设备日期与时间、订阅域名是否正确,再让服务商检查证书与证书链。若只有某个网络失败,保留该网络下的提示作为诊断材料,比跳过安全检查更有助于定位。
常见追问:保留数据后完成最后一轮自查
浏览器能打开链接,为什么 Home 还是空的?
先确认浏览器显示的是条目内容,而不是账户网页或验证页面。浏览器的登录状态不等同于订阅请求的认证条件;从自己的服务商页面重新复制客户端订阅地址,在 Home 的 Subscribe 编辑页核对 URL 后再更新。
刷新失败后,要不要删掉整个订阅?
先不要删除。记录原有条目数量、提示和更新时间,保留仍可用的条目;重新导入不是修复接口错误的必要步骤。确需重建时,先确认地址有效,并妥善保存必要的原始资料。
Update via Proxy 打开了,还是超时怎么办?
先确认已有条目确实能够建立连接,再确认当前连接能访问订阅域名。若连接本身不可用,回到可访问该域名的网络测试;若只有该接口失败,把发生时间和提示交给自己的服务商核查。
订阅更新成功,为什么选中的条目还是不能用?
更新成功只说明取得并处理了订阅内容。进入对应条目的编辑页核对协议、地址、端口和认证参数,再检查服务端状态;例如 Trojan 的 TLS 参数应与自己的服务商资料一致,不能用再次刷新替代参数检查。
最后按“完整 URL → Subscribe 类型 → 返回正文 → 服务端状态 → 更新网络 → 重试时机”依次复核。每次只改一个变量,完成一次请求再记录结果。若需要提交问题,下面这份清单足以描述现象,又能避免暴露完整认证资料。
- 说明问题是首次导入为空、原有订阅更新失败,还是更新后部分条目缺失。
- 提供发生时间、Wi-Fi 或蜂窝网络等接入条件,以及是否使用 Update via Proxy。
- 保留提示原文与可核对的 HTTP 状态码;没有状态码时明确写“未取得”,不要推测。
- 说明更新前后条目数量,以及服务商是否确认当前应有有效条目。
- 仅向自己的服务商通过私密支持渠道提供必要资料,公开截图先遮盖 token 与其他认证字段。