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

拆解四种分享链接的结构与编码方式,说明单条节点链接与订阅链接在导入、更新上的不同,并介绍识别失败时的检查方法。

本文速览

Shadowrocket(小火箭)中的单条分享链接用于携带一组连接参数,订阅链接则指向可更新的远程列表。本文适合已经从自己的服务商处取得连接资料、准备导入或排查识别问题的用户:先按链接前缀判断类型,再检查编码、地址、凭据与传输参数,最后把“成功导入”和“成功连接”分开验证。

一、先辨认单条分享链接与订阅地址

ss://、vmess://、vless:// 和 trojan:// 是单条连接资料常见的协议前缀。它们携带服务器地址、端口、身份凭据以及可能存在的传输设置。把文本转换成二维码,只是改变了传递方式,并不会让单条链接自动变成订阅。

订阅通常是一个 https:// 地址。Shadowrocket 请求该地址,取得服务端返回的列表,再解析其中的条目。列表内容可以更新,地址本身却不一定改变。不能仅凭一个地址以 HTTPS 开头,就认定它一定可订阅;普通网页、登录页面、错误提示页都不是连接列表。

4 类
本文拆解的前缀:ss / vmess / vless / trojan
1 条
普通单条分享链接描述一组连接参数
443
后文 TLS 示例端口,并非所有服务的固定端口

二、ss://:先区分 Base64 的范围

Shadowsocks 常见的 SIP002 分享形式,是在 ss:// 后放置经过 Base64 编码的 method:password,再用 @ 连接服务器地址与端口。下例中的编码部分 YWVzLTEyOC1nY206dGVzdA 解码后是 aes-128-gcm:test。

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

另一种旧式写法会把整个 method:password@host:port 编码,因此不能看到 Base64 就机械地只解码 @ 前面的一段。部分链接还含 plugin 查询参数,插件名及其选项也是连接资料的一部分,复制时不能截掉问号之后的内容。

Base64 与 URL 百分号编码是不同层次。Base64 中可能出现 +、/ 和末尾的 =;URL-safe Base64 使用的字符又有所不同。不要手动把所有 + 替换为空格,也不要给每个链接统一补上固定数量的等号。优先取得完整原文,让导入器处理对应格式。

三、vmess://:编码内容通常是一份 JSON

常见的 VMess 分享格式是 vmess:// 加 Base64 编码的 JSON。它和前一节的区别是:解码结果通常不是一行“密码加地址”,而是一组有字段名称的数据。以下是演示用的解码结果,并非可以直接粘贴为分享链接的文本。

{
  "v": "2",
  "ps": "Demo VMess",
  "add": "example.com",
  "port": "443",
  "id": "11111111-1111-4111-8111-111111111111",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/demo",
  "tls": "tls",
  "sni": "example.com"
}
字段检查内容
add / port实际连接的服务器与端口;端口必须是有效数字,不能混入中文冒号。
id / aidUUID 与 Alter ID;按服务端资料填写,不把 UUID 当普通密码随意改写。
net / host / path传输方式及其附加参数;WebSocket 路径的斜杠和大小写应保留。
tls / sniTLS 设置与服务器名称;不能仅因为端口为 443 就推断所有值。

示例中的 v 是分享格式字段,不是 Shadowrocket 的应用版本。不同生成器可能输出不同字段组合,不能假定缺少的字段都可以使用同一个默认值。导入后应打开条目详情,对照原始资料核查 UUID、传输方式、TLS 和路径;仅有备注与地址正确,还不足以证明其余参数正确。

四、vless:// 与 trojan://:结构相近,凭据不同

这两类常见分享形式都能直接看到 @ 后面的地址和端口,并通过问号后的查询参数表达安全层或传输设置。但外形相似不等于协议相同,尤其不能把 VLESS 的 UUID 与 Trojan 的密码互换。

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

trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Demo%20Trojan

这些示例只覆盖常见形式,不是所有传输组合的完整模板。如果原始链接带有额外参数,应保留原文并确认当前客户端能否映射到对应选项。不要仅凭“导入没有报错”就删除无法理解的参数,也不要通过关闭证书验证来代替核查 SNI、系统时间与证书配置。

五、在 Home 导入后,把列表与规则分开管理

单条链接与订阅的维护对象不同:前者通常得到独立条目,后者保留远程列表的来源关系。更新订阅可能同步增删或重建条目,因此针对订阅内条目做的本地修改,不应被当作永久保存的服务端参数。

  1. 从你的服务商处取得完整原文。先判断它是单条协议链接、二维码,还是订阅地址,不复制说明文字、引号或聊天消息中的省略号。
  2. 单条链接使用客户端的剪贴板导入入口,二维码使用扫描入口;导入完成后回到 Home 检查新增条目。
  3. 订阅地址在 Home → + → Type → Subscribe 中添加,填写完整 URL 与可辨认的备注。不同平台的入口排布可能不同,应选择同名的订阅类型。
  4. 执行订阅更新后检查条目数量及错误提示。示例地址 https://example.com/sub?token=xxxx 仅说明 URL 结构,不提供实际列表。
  5. 打开条目详情核对参数,再选择要使用的条目并开启连接;规则配置在 Config 中单独管理,不把普通节点列表误当成完整规则配置。

测试连接时还要检查 Global Routing。它影响请求是否使用已选条目,却不会把错误的分享链接修复成正确参数。下面比较的是 Shadowrocket 自身的路由姿态,推荐标记指日常已有规则配置的使用场景。

Config

推荐

按当前配置的规则决定走向。是否命中 PROXY,应以请求记录中的实际匹配结果为准。

适合:已经配置规则、需要验证日常分流的用户

Proxy

让受客户端接管的流量使用代理路径,便于临时排除规则未命中造成的影响。

适合:单独检查已导入条目的连接能力

Direct

使用直连路径。此时网页能够打开,并不能证明导入条目的代理连接已经可用。

适合:对照本地网络直连状况

结论:一次只验证一个层次

先确认条目参数完整,再临时使用 Proxy 验证连接,最后切回 Config 检查规则命中;这样可以区分解析错误、连接错误与分流结果,避免同时修改多处后无法定位原因。

六、识别失败时,按文本、编码、响应顺序检查

“无法识别链接”和“连接超时”属于不同阶段。前者发生在解析文本或订阅内容时;后者通常发生在已经取得参数、开始连接之后。先记下错误发生在哪一步,再决定是重新复制资料,还是检查网络与服务端设置。

复制了链接,为什么没有出现可导入的条目?

把原文放到本地纯文本编辑器中检查,确认开头确实是完整的协议前缀,末尾没有聊天标点,正文没有换行或空格截断。若只得到一个二维码截图,应扫描二维码,而不是复制图片文件名。

vmess:// 解码后看起来是乱码,应该改哪里?

先确认复制的是完整 Base64 段,区分标准 Base64 与 URL-safe Base64,不要反复对整串执行 URL 解码。常见 JSON 形式解码后应能看到 add、port、id 等字段;若内容不完整,重新取得原始链接,不靠猜测补齐 UUID。

订阅地址能在浏览器打开,为什么更新仍然失败?

浏览器打开可能得到登录页、验证页或错误页,并不表示返回了列表。检查完整查询参数是否保留;若响应提示 401 或 403,向你的服务商确认访问凭据与权限,若提示 404 则确认路径是否有效。不要把网页正文当节点列表粘贴。

导入成功但连接失败,是编码有问题吗?

先核对服务器地址、端口、密码或 UUID,再检查 TLS 的 SNI、WebSocket 的 Host 与路径。若显示证书相关错误,检查系统时间与证书名称;若超时,检查网络可达性及服务状态。编码能被解析,不代表服务端一定接受这些参数。

更新订阅后,手动修改的备注或参数为什么变了?

更新可能按服务端列表重新生成条目。先对照服务商提供的当前参数,确认变化来自远程内容;确需保留本地调整时,明确区分独立条目与订阅条目,并避免在多个副本之间误选旧资料。

完成排查后,反馈问题时只提供协议名称、失败阶段与经过脱敏的错误信息。服务器地址、UUID、密码、订阅 token 和二维码均可能关联访问权限;需要展示结构时,可以用本文这种保留字段名、替换实际值的方式。完整资料应仅在必要的受控渠道中交付。

下载 Shadowrocket