Shadowrocket 分享链接格式科普:ss://、vmess://、vless://、trojan:// 与订阅链接的区别

单条分享链接与订阅链接的结构和用途不同。本文拆解 ss://、vmess://、vless://、trojan:// 各自携带的字段,并说明它们与订阅在导入和更新方式上的差异。

本文速览

本文适合已经持有自己的服务商连接资料或订阅、需要在 Shadowrocket(小火箭)中正确导入的用户。先用链接开头判断它描述的是一条连接还是一个远程列表,再核对地址、端口、认证与传输参数,最后区分“重新导入”和“更新订阅”。文中的域名、密码和 UUID 均为教学假值,不是可用连接资料。

1. 分享链接与订阅链接:一条连接和一个远程列表

ss://、vmess://、vless://、trojan:// 是分享链接的 scheme,用来提示客户端按哪种格式解析后续字符。一条这样的链接通常描述一条连接:服务器地址、端口、认证资料,以及必要的传输选项。导入时,Shadowrocket 将这些字段保存到本地;链接本身通常没有持续获取远程变更的作用。

订阅链接则通常是一个 https:// 地址。客户端访问该地址后读取服务器返回的连接列表,随后按照支持的格式解析。订阅地址的路径名称没有统一标准,不能仅凭是否含有 /sub 判断用途;普通网页、登录页和订阅响应都可能使用 HTTPS。应以用户已有服务商提供的资料说明和实际返回内容为准。

核对项单条分享链接订阅链接
常见开头ss://、vmess://、vless://、trojan://通常为 https://
主要内容一条连接的地址、端口与认证参数远程列表的访问地址,可能带有 token
导入动作解析链接并创建本地条目请求远程内容并生成订阅内的条目
后续变更需要编辑本地字段或取得新链接后重新导入执行订阅更新,重新获取远程列表
敏感部分密码、UUID、服务器资料完整订阅 URL,尤其是路径或查询参数中的访问凭据

例如 https://example.com/sub?token=xxxx 只是订阅地址的形态示例。它既不是服务入口,也不能作为实际订阅使用。订阅可能包含多种协议的连接,而不只是同一协议的多个地址;“订阅”描述的是获取与更新方式,不是一种网络传输协议。

2. ss://:核对 Shadowsocks 的加密方法与密码

常见的 Shadowsocks 分享格式把加密方法与密码放在用户信息部分,之后用 @ 接服务器地址与端口。符合 SIP002 形式的链接可对用户信息采用 Base64URL 编码;也能见到较早的、将更多字段整体编码的形式。因此,不能假定所有 ss:// 链接都能直接按一个 @ 拆开。

ss://[email protected]:8388#SS%20Demo

用户信息解码后的教学内容:
aes-128-gcm:password

导入后,在 Home 中打开对应条目的编辑页面,核对协议类型、地址、端口、加密方法与密码。若客户端成功创建了条目,只能说明解析过程成功;服务器是否接受该密码、端口是否可达,还需要另外测试。

3. vmess://:先理解编码后的 JSON 字段

常见的 vmess:// 分享链接,在 scheme 后携带一段 Base64 编码的 JSON。编码内容中通常有地址、端口、用户 ID、传输方式与 TLS 等字段。下面展示的是解码后的教学对象,不是可以直接粘贴导入的完整分享链接。

{
  "v": "2",
  "ps": "VMess Demo",
  "add": "server.example.com",
  "port": "443",
  "id": "123e4567-e89b-42d3-a456-426614174000",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "edge.example.com",
  "path": "/demo",
  "tls": "tls",
  "sni": "edge.example.com"
}
字段用途与核对方法
add / port连接地址与端口。示例使用 443,不代表任意 VMess 服务都使用 443。
id / aid用户 UUID 与 alterId。示例 alterId 为 0;应沿用实际资料,不能自行改成其他数值。
scyVMess 的加密选项。它不等同于 TLS 开关,也不是 Shadowsocks 的 method 字段。
net / host / path示例采用 WebSocket;Host 与路径必须符合服务器要求,路径的大小写与前导斜杠不能随意变动。
tls / sniTLS 启用状态与用于 TLS 握手的服务器名称。SNI 与连接地址可能不同。
v / ps分享格式的版本标记与备注。此处的 v 不是 Shadowrocket 应用版本。

上述字段属于一种常见分享格式,不是所有生成工具都提供完全相同的 JSON。导入后应检查解析结果,而不是只看备注是否出现。如果实际资料要求 WebSocket 与 TLS,导入后却缺少 path 或 TLS 状态不符,应先核对原始链接是否被截断,再向已有服务商确认格式与参数。

4. vless:// 与 trojan://:查询参数也是连接条件

VLESS 与 Trojan 的常见分享形式更接近可直接阅读的 URI:认证资料在 @ 前,地址与端口在后,问号之后携带安全层与传输选项。二者的认证字段并不相同:VLESS 常使用 UUID,Trojan 使用密码,不能只改前缀便把一种协议转换成另一种。

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.com&path=%2Fdemo&sni=edge.example.com#VLESS%20Demo

trojan://[email protected]:443?security=tls&type=tcp&sni=edge.example.com#Trojan%20Demo
  1. 先核对认证部分。VLESS 示例中的 UUID 与 Trojan 示例中的 demo-password 均为假值;实际导入必须使用原始资料。
  2. 再核对 server.example.com:443。端口 443 在这里是具体示例,不能以“通常使用 TLS”为由覆盖服务商给出的其他端口。
  3. 检查 security=tls 与 sni。它们影响 TLS 握手及证书核对,不只是显示名称。
  4. 检查 type=ws 或 type=tcp。VLESS 示例中的 host 和 path 属于 WebSocket 条件;%2Fdemo 解码后为 /demo。
  5. 保留实际链接中的其他必需参数。如果原始资料包含 flow 或其他安全层相关字段,应核对客户端是否正确识别,不要根据这个简化示例删去。

VLESS 示例中的 encryption=none 指 VLESS 本身的加密选项,不表示示例没有 TLS 保护;协议认证、传输方式和 TLS 是不同层次。Trojan 通常依赖 TLS,证书名称与信任状态同样重要。遇到证书错误,应检查地址、SNI 与服务器证书,而不是直接关闭证书验证。

结论:导入后同时核对认证、传输与 TLS

如果条目已出现但连接失败,先逐项比较 UUID 或密码、端口、type、path 与 SNI;备注一致并不能证明连接参数一致。只修改已确认有差异的字段,每次修改后再测试,避免同时变动多个条件。

5. 在 Home 导入:选择单条还是订阅

开始前先确认手中的资料属于哪一种。Home 用于管理与选择连接条目,Config 用于配置文件和规则,Settings 用于应用设置。连接列表订阅不是规则配置文件;将订阅地址填进 Config 的配置文件入口,不能替代连接订阅的导入。

已有订阅:按 Subscribe 导入

推荐

在 Home → + 中将 Type 选为 Subscribe,填写用户已有的订阅 URL 并保存,再检查远程列表是否成功获取。此建议针对已经持有订阅的用户,目的是保留后续更新关系。

适合:已有远程连接列表,需要跟随地址、端口或凭据变更

单条资料:导入分享链接

复制完整的单条分享链接,返回 Shadowrocket 后按剪贴板识别提示确认导入;也可扫描用户已有资料中的二维码。完成后打开条目检查字段,避免只确认名称。

适合:只需保存一条明确的连接,或核对某条连接的参数

结构化资料:手动填写

在 Home → + 选择对应 Type,按已有资料填写地址、端口和认证信息,并核对传输与 TLS 选项。手动创建本地条目不会自动获得订阅更新关系。

适合:只有字段清单,或需要逐项定位分享链接解析差异

  1. 从原始资料复制完整链接。不要带上中文引号、句末标点、聊天软件的说明文字或代码围栏。
  2. 保存后回到 Home,确认出现的是独立条目还是订阅及其下属条目。仅看到订阅名称,不足以说明列表已成功获取。
  3. 打开一条连接的编辑页面,核对类型、地址、端口和认证字段。若涉及 WebSocket 或 TLS,再核对相应选项。
  4. 选择需要测试的连接。首次开启连接开关时,按系统提示授权添加 VPN 配置,然后测试目标访问情况。

二维码只是链接的另一种承载方式,并不是一种额外协议。二维码若包含订阅 URL,导入后仍应按订阅处理;若包含单条 ss://,它不会因为扫码导入就获得远程更新能力。iPhone 与 iPad 均应按实际界面核对,系统要求以 App Store 页面标注为准。

6. 更新与排查:先分清获取失败还是连接失败

订阅更新是再次请求远程列表,并不等于更新 Shadowrocket 应用,也不等于刷新 Config 中的规则。远程条目可能被新增、删除或替换;不要假定在订阅条目上做的所有本地修改都能在下一次更新后保留。需要进行对照测试时,先记录修改前的字段与结果。

两种维护方式:本地条目与远程订阅

本地单条连接
  • 地址或密码变更后,取得新分享链接并重新导入,或编辑现有字段。
  • 重导后检查是否产生同名重复条目,按地址与端口区分。
  • 测试成功后再移除不再使用的旧条目,避免误删当前连接。
已有远程订阅
  • 在 Home 对相应订阅执行更新,检查下属条目是否获取成功。
  • 更新后核对当前选中的连接是否仍存在,以及参数是否发生变化。
  • 若访问凭据已更换,先替换订阅 URL,再重新获取列表。

本地编辑改变的是当前保存的字段;订阅更新读取的是远程资料。两者不能互相替代。

排查时区分三个阶段:URL 请求是否成功、响应是否能解析、解析后的连接是否可用。例如 HTTP 401 或 403 常提示访问授权问题,但仍需结合服务商的响应说明;收到 HTTP 200 也可能只是返回了登录 HTML 页面。列表出现而网页打不开,则应继续核对连接、Global Routing 和 Config 中的规则,而不是反复重导同一链接。

为什么复制了链接,Home 里却没有新增条目?

先确认链接以完整的 scheme 开头,并检查是否夹入换行、全角冒号或聊天说明。若系统询问是否允许从其他应用粘贴,应按实际需要允许。重新复制原始链接后再导入;不要手动改写 Base64 内容来试错。

订阅更新超时,是不是里面的连接都失效了?

不是同一结论。先确认当前网络能访问订阅地址;需要通过已有可用连接获取时,可在 Settings → Subscribe 检查 Update via Proxy,并在 Home 选择可用连接后开启开关再更新。此选项只改变更新请求的访问方式,不会修复失效的 token 或错误响应格式。

已经导入成功,为什么打开网页仍然失败?

先检查所选条目的地址、端口、密码或 UUID,再检查 TLS 与传输选项。随后核对 Home → Global Routing:Direct 使用直连,Proxy 将可代理流量交给所选代理策略,Config 按当前配置规则处理,Scene 按已配置的场景处理。必要时临时用 Proxy 对照,测试结束后恢复原姿态。

我改了备注后更新订阅,名称又变回去了怎么办?

先检查远程列表是否继续下发旧备注。订阅更新可能重建或覆盖条目,本地备注不是远程修改。若需要保留对照记录,将测试对象单独记录或保存为独立条目,并明确它不再随该订阅自动更新。

能把真实链接或二维码发出来让别人检查吗?

不要公开完整资料。反馈时提供协议类型、端口、传输方式和已脱敏的错误信息,遮住密码、UUID、token、完整 URL 与二维码。如果资料已经暴露,应通过已有服务商的管理入口更换相关凭据,再更新本地连接或订阅。

App Store 正版核对