小火箭节点链接格式详解:ss://、vmess://、vless://、trojan:// 与订阅链接的区别

科普单节点分享链接的结构,比较 ss://、vmess://、vless://、trojan:// 各自携带的字段,并说明它们与订阅链接在导入方式和更新机制上的差别。

本文速览

已有自己的服务商与订阅时,先判断拿到的是单节点分享链接,还是可更新的订阅地址,再选择导入入口。本文说明四种链接的字段、编码与常见误读,给出 Home 导入后的核对步骤,并区分节点参数、Config 规则与 Global Routing 的作用。所有示例仅用于辨认结构,不可用于连接。

先看链接开头:连接参数与订阅地址不是一回事

Shadowrocket(小火箭)中,单节点分享链接通常描述一个连接条目:使用什么协议、连接哪个服务器、使用什么凭据,以及是否启用 TLS 或特定传输方式。ss://、vmess://、vless://、trojan:// 是本文讨论的四种 scheme;开头相似不代表内部字段可以互换。

订阅链接通常是一个 HTTPS 地址。Shadowrocket 请求该地址后,读取服务端返回的节点列表,再按返回内容建立或更新条目。链接本身未必展示服务器地址与端口;这些信息往往在响应正文里。不是所有 HTTPS 地址都能作为订阅,账户管理页面、登录页面和说明页面都不等于订阅接口。

4 种
本文辨认的 scheme:ss / vmess / vless / trojan
1 个
单节点链接通常描述一个连接条目
443
后文示例端口,不是所有节点的默认值

订阅一次可以返回多个节点,也可能只返回一个,因此不能单凭导入后的条目数量判断类型。更可靠的依据是:导入时是否使用 Subscribe 类型、是否保存了订阅来源,以及该来源能否再次请求更新。客户端买断 ≠ 线路套餐;应用与已有服务的连接凭据分别管理。

ss://:Shadowsocks 的认证信息与编码边界

Shadowsocks 分享链接常见的结构是:编码后的认证信息、服务器地址、端口,以及可选的查询参数与备注。认证信息通常包含加密方法和密码。下面使用 BASE64URL 表示一个编码操作,而不是可以直接粘贴导入的字面内容。

ss://BASE64URL(method:password)@server.example:8388#Office
认证信息示意:aes-128-gcm:demo-password
服务器示意:server.example
端口示意:8388

历史分享格式中,也存在把更长的一段连接信息整体编码的写法,因此不能用“有没有看得见的 @”作为唯一判定标准。应保留已有服务商给出的原始链接,交给导入器解析,再在 Home 的条目编辑页核对结果。若认证信息解码后明显被截断,优先重新复制原文,而不是猜测缺失的密码。

vmess://:常见载荷是 Base64 编码的 JSON

常见 VMess 分享链接以 vmess:// 开头,后面是一段 Base64 编码的 JSON。它不像常见 VLESS URI 那样直接展示 用户信息@主机:端口。以下仅展示解码后的字段示意,使用保留示例域名与演示 UUID,不对应实际服务。

{
  "v": "2",
  "ps": "Office",
  "add": "server.example",
  "port": "443",
  "id": "00000000-0000-4000-8000-000000000000",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "edge.example",
  "path": "/demo",
  "tls": "tls",
  "sni": "edge.example"
}
字段用途核对重点
add / port连接地址与端口决定连接的网络终点
id / aid用户标识与历史兼容参数保留来源值,勿随意改写
net / path传输方式及相关路径ws 场景需核对路径
host / sni传输 Host 与 TLS 服务名称作用不同,可能与连接地址不同
ps / v备注与分享格式标识v 不是应用版本号

不能把 add、host 与 sni 当作三个可互换的服务器地址。前者负责连接目的地;在此示例的 WebSocket 场景中,host 用于请求 Host,sni 用于 TLS 名称协商。三者在实际服务中可以相同,也可以不同。导入后若只保留地址和 UUID,却丢失传输路径或 TLS 设置,条目虽然能保存,仍可能无法完成连接。

vless:// 与 trojan://:相近外形,不同认证字段

VLESS 与 Trojan 的常见分享写法都较接近标准 URI:认证信息位于 @ 前,服务器与端口位于其后,问号之后携带扩展参数,井号之后是备注。外形接近并不意味着可以只改前缀来转换协议。

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

trojan://[email protected]:443?security=tls&type=tcp&sni=edge.example#Office

字段核对方案:按认证方式分别检查

VLESS 分享链接
  • @ 前通常是 UUID。
  • encryption=none 不等于关闭 TLS。
  • security、type、flow 等参数必须按来源核对。
  • WebSocket 场景另查 host 与 path。
Trojan 分享链接
  • @ 前通常是密码。
  • 常见部署使用 TLS,需核对服务名称与证书。
  • 含特殊字符的密码需要正确进行 URI 编码。
  • 传输扩展以来源参数及实际支持情况为准。

协议、认证信息、传输方式与 TLS 参数是一组配套配置;不要仅替换 scheme 或端口尝试转换。

示例中的 %2Fdemo 解码后是 /demo。百分号编码用于避免保留字符改变 URI 结构:例如密码里的 # 如果直接写入,可能被识别为备注起点。复制时应保留原始编码,导入器通常会按字段处理;反复手工解码再粘贴,反而可能破坏分隔关系。

端口 443 只是服务端可选择的监听端口之一。不能根据端口号推断协议,也不能把所有 TLS 连接都改成 443。遇到证书校验失败,应先核对设备时间、SNI 与来源参数,不应把关闭证书校验当成常规修复方式。

单节点与订阅:导入入口和更新行为分别核对

单节点链接导入后,通常形成一份本地连接参数副本。服务端随后更换密码、地址或传输参数时,旧条目不会仅因同名就自动获得新值。订阅则保存了可再次请求的来源,更新时能够重新取得列表;但它也不能保证每次请求成功,更不能代替服务有效期与账户状态检查。

订阅地址结构示意:
https://example.com/sub?token=xxxx

此地址为明显假值,仅展示“地址 + 查询凭据”的结构。
  1. 导入单节点:在可信来源复制完整链接,回到 Home,使用应用提供的剪贴板导入入口;如出现读取剪贴板请求,仅在本次确需导入时允许。入口未出现时,可进入 Home 右上角的添加入口,按已有参数建立条目。
  2. 导入订阅:进入 Home → 右上角 +,在 Type 中选择 Subscribe,将自己的订阅地址填入 URL,添加备注后保存。不要把账户登录页面填入 URL。
  3. 检查结果:确认订阅分组、节点类型和条目数量是否符合已有服务说明;进入条目编辑页检查地址、端口与传输设置,而不是只看备注名称。
  4. 后续更新:在 Home 的订阅项操作中执行更新;如需自动更新,到 Settings → Subscribe 核对更新设置。打开应用时更新不等于系统持续定时拉取,单节点条目也不会因此变成订阅。
先保留来源,再调整本地条目

订阅更新可能替换订阅管理的节点信息,也可能改变列表顺序与名称。对订阅节点进行本地修改前,应记录修改原因并保留原始参数;关键的自定义条目宜单独管理,避免把一次更新误认为手工配置丢失。

HTTPS 只说明传输使用了相应保护,不说明返回内容一定是节点列表。若更新后得到登录页面、错误页面或格式不兼容的文本,应核对原始订阅地址、有效期与返回内容。订阅 token 相当于访问凭据,不要为了排错把完整 URL 发到公开聊天或截图中。

导入成功后:先验证节点,再检查 Global Routing 与 Config

“能解析链接”“能保存条目”“能建立连接”“目标请求走对策略”是四个不同结果。节点分享链接主要解决连接参数,不会因为导入成功就自动生成符合个人需求的 Config。Home 用于管理连接条目与连接状态,Config 用于管理规则配置,Settings 用于调整应用行为。

Global Routing → Config

推荐

已有并核对过规则配置时,按当前 Config 中的规则决定请求策略。哪些请求走代理、哪些直接连接,取决于规则内容与顺序。

适合:节点验证完成、已有明确分流规则的日常使用

Global Routing → Proxy

用代理姿态排查是否由分流规则导致目标请求未走代理。它用于缩小排查范围,不会补全缺失的 UUID、密码、SNI 或传输路径。

适合:短时排查节点连通性与规则影响

Global Routing → Direct

以直接连接姿态访问目标,适合观察当前网络自身的访问结果;此时不能据此证明所选代理节点工作正常。

适合:对照当前网络与代理路径的差异

Global Routing 还包含 Scene,按所设场景条件使用相应策略,不应把它当作固定的 Proxy 或 Config。Settings → On Demand 则控制按需连接行为,不是节点协议,也不是订阅更新开关。排查期间先保持连接触发条件与测试目标一致,避免网络切换和自动触发同时改变测试条件。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
FINAL,DIRECT

以上只是规则语法示意,不是完整配置。DOMAIN-SUFFIX 匹配域名后缀,IP-CIDR 匹配地址网段,GEOIP 按 IP 地理数据库分类,FINAL 处理前面未命中的请求。规则顺序会影响结果;即使节点参数正确,目标请求命中 DIRECT 时也不会用该代理路径。观察请求记录中的命中规则与最终策略,比反复重新导入同一链接更有针对性。

常见问题:把解析、认证、传输与更新分开处理

复制了 ss://,为什么没有导入出节点?

先检查是否完整包含前缀、编码串、服务器与端口,移除链接外侧的引号或说明文字,但不要改动链接内部字符。聊天排版可能插入空格、换行或省略内容;回到原始来源重新复制完整文本,再在 Home 执行导入。若仍失败,应确认来源采用的分享格式与扩展是否受支持。

VMess 导入成功,却一直连接失败,是 UUID 不对吗?

不一定。依次核对地址与端口、UUID、传输方式、WebSocket Host 与 Path、TLS 和 SNI,同时检查设备日期时间。条目可以保存只说明输入已被接受,不证明服务端认证与传输握手成功。一次只更正一个已确认的差异,避免同时改动多项后无法判断原因。

VLESS 的 encryption=none 是不是没有 TLS?

不是。这两个参数描述不同层面的设置。查看同一链接里的 security,并在导入后的条目中核对 TLS 相关选项;不要仅看到 encryption=none 就关闭 TLS。具体传输与安全参数必须与自己的服务配置一致。

订阅更新成功,为什么选中的节点还是不能用?

更新成功表示订阅内容已获取并处理,不等于列表内每个节点都能建立连接。先在 Home 确认当前选中条目与连接状态,再检查已有服务的有效期、节点参数以及 Global Routing。若更新失败,则先排查 URL、访问凭据、网络可达性与响应格式,不要把两种现象混为一谈。

可以把链接截图发给别人帮忙看吗?

先遮盖密码、UUID、订阅 token 与完整二维码。二维码往往只是原始链接的另一种表示,并没有隐藏凭据。排查时可提供协议名、脱敏后的参数名称、错误提示和已做步骤;需要核对真实凭据时,应通过自己服务商的受信渠道处理。

最终核对顺序是:辨认链接类型 → 保留完整原文 → 选择对应导入入口 → 核对认证和传输字段 → 验证连接 → 检查规则与更新行为。本文四种 scheme 不是 Shadowrocket 支持能力的完整清单,也不能据此推断其他协议沿用相同 URI 字段;已有参数与实际支持情况应分别核对。

App Store 正版核对