对象

列表里能点的,和列表里只存地址的,不是一种东西。

开关打开时只会用当前高亮的记录。Subscribe 是容器:里面是 URL,子记录要刷新之后才出现。规则配置是第三种对象,与前两者并列,互不替换。

  1. 01三种对象
  2. 02记录
  3. 03URI 与扫码
  4. 04容器:保存与刷新
  5. 05很多行,只用一行
  6. 06URL 按密钥保管

01

三种对象互不替换

Shadowrocket 添加类型列表:Subscribe 是容器,其它类型是记录
添加时 Type 里 Subscribe 是容器,其余类型是记录。截自 App Store,以你设备上的版本为准。

主界面列表里能看见的,通常是记录和容器。规则文件在另一个入口里。换高亮行不会换规则;换规则也不会换高亮行;刷新容器不会改 FINAL。把这三者当成「同一次导入的三份拷贝」,后面所有对照都会乱。

记录

一条出口

地址、端口、协议、认证、传输层。可被高亮。没有「刷新」——远端改了参数,本地这条不会自己变,只能编辑或删掉重建。

容器

一个 URL

保存只写下地址,此时子记录集合可以是空的。刷新才去拉。失败则保留上一次成功的集合。URL 失效时,客户端不能把它修好。

02

记录:字段要和远端是同一套

添加入口按类型分。类型是这条记录的身份,不是标签。选 Trojan、密码却是 Shadowsocks 的,能存下来,隧道握手会失败。UUID、密码、加密方法、alterId 这类认证字段必须与对端一致;「看起来差不多」不够。

传输层属于记录本身,不是可选项。远端用 WebSocket,本地却留在 TCP;远端要求 TLS,本地关掉;路径、Host、gRPC 服务名、REALITY 公钥与短 ID 填成另一套——都能保存,都不能握手。排障时把「协议类型」和「传输层」当成两个独立检查项,不要只核对地址和端口。

SNI / 对端主机名、是否跳过证书验证、指纹,决定 TLS 能不能完成。证书与系统时间有关:时间未自动同步时,所有依赖 TLS 的记录会一起失败,换一行也没用。见 读数

一条记录只描述一个出口。它不包含规则,也不包含「连上之后自动换成另一条」。列表探测看到的毫秒数,只说明这一跳此刻探不探得通,见读数页。

地址
对端主机名或 IP。这里填 URI 整段,通常不会被当成 ss:// 解析,只会变成一个非法主机名。
端口
对端监听的端口。填成网页端口、填成管理面板端口,握手对象就不是代理进程。
认证
密码、UUID、用户名,按该类型要求的那一套。多填一个、少填一个、从别的类型拷过来,都属于认证失败。
传输
TCP、WebSocket、gRPC 等,以及路径与 Host。与类型并列,不是「高级可忽略」。

03

URI 是打包好的一行,不是地址栏

ss://vmess://trojan://vless:// 把类型、认证、传输层打成一行。能整段贴进添加入口时,比手抄 UUID 少出错。把整段贴进「服务器地址」那一个格子,通常不会被当成 URI 解析。

扫码得到的可能是一条记录,也可能是一个容器 URL,也可能是一份配置的下载地址。保存之后看它能不能被高亮:能高亮、字段里是主机和端口的,是记录;只能展开、点进去是 URL、子记录要刷新才出现的,是容器;进了配置列表而不是服务器列表的,是 配置

同一张码被扫两次,列表里可能出现两条相同的记录。连接时仍然只用高亮的那一条,重复行不会叠加带宽,只增加选错的机会。

04

容器:保存和刷新是两步

保存把 URL 写进本机。这一步不下载子记录。保存刚结束时列表看起来是空的,对容器来说是正常状态,不是「订阅坏了」。

刷新按 URL 拉取。成功则用返回内容生成或替换子记录,这些子记录随后可以像普通记录一样被高亮。失败时不会为了失败把已经在的子记录抹掉——你看到的仍是上一次成功的集合,可能已经过期,但还在。

打开应用时刷新、后台刷新,都是在重复「刷新」。后台能否执行,还看系统是否允许该应用后台刷新,以及设备是否在省电。这是 系统 边界,不是容器开关没打开。

刷新请求走当时的网络路径。开关正连着一条已失效的记录时,刷新本身也可能失败。把策略改成 Direct,或先关掉开关,是在隔离路径,不是在修复 URL。URL 返回 404、401、空文件,客户端只能报告失败,不能替远端把链接续上。

用浏览器打开订阅 URL,常常得到一段不能当网页看的内容。那是给客户端解析的。浏览器能下到字节,说明链路通、链接本身还活着;浏览器也打不开,问题在网络或链接,不在 Shadowrocket 的解析器。

两种刷新不要当成同一次操作

服务器容器的刷新更新的是列表里的子记录。规则 / 配置订阅的刷新更新的是名单文件。两个 URL 长得像,对象不是一个。刷新了容器,FINAL 不会变;刷新了规则,高亮行也不会变。

05

很多行,只用一行

列表允许很多记录、很多容器。连接时仍然只使用当前高亮的那一条记录。两个容器不会自动负载均衡,也不会自动改选「探测数字最小的那一行」。探测数字再小,没被高亮,开关打开后也不会用它。

删除容器时,由它生成的子记录通常一并消失。若当前高亮属于这个容器,删完需要另选一行再开开关。手动添加的记录不会因为某个容器被删而消失;反之,容器里刷出来的行,不要当成可以脱离 URL 永久存在的副本——下一次刷新可能改写或移除它们。

把容器里的某一行再手动复制成独立记录,以后刷新就不会动这份副本。远端改了端口,副本不会跟着改,需要自己编辑。这是「冻结一行」和「继续跟随 URL」之间的取舍。

06

URL 按密钥保管

许多容器把令牌放在路径里。出现在截图、群文件、公开网盘、浏览器历史里,等于交出子记录的访问权。客户端不会替你作废一条已经泄漏的 URL,也不会通知远端去换链。

导出的备份、发给另一台设备的文件,同样含认证参数。按密钥保管,不要当普通文档转发。iCloud 同步走的是你的 Apple ID,不是开发者的服务器;开发者侧没有你的列表。见 配置

应用不能延长某条 URL 的有效期,不能代付服务器费用,不能把握手失败的记录变成可用。这些在 系统 里归为做不到的事,不是设置项没找到。