Skip to content

VMess

iPhone 版 Potatso 支持的 VMess 加密方式、传输方式、链接和功能,包括 WebSocket、gRPC、HTTP Upgrade 和多路复用。

Updated 以 Markdown 查看

VMess 服务器由 UUID、用来加密流量的加密方式,以及用来承载连接的传输方式(如 WebSocket 或 gRPC,可带或不带 TLS)描述。只要 Potatso 支持服务器的加密方式、传输方式和 TLS 设置,就能连接到它。你可以对照下面的表格,检查服务商提供的服务器设置,或其 vmess:// 链接中的设置。

你可以手动添加 VMess 服务器、通过 vmess:// 链接添加,或通过导入添加:

  • Clash 或 Mihomo 订阅,
  • Xray 或 V2Ray 配置,
  • Surge 配置。

Potatso 暂不从 sing-box 配置中导入 VMess 服务器。请改用服务器的 vmess:// 链接。

加密方式

加密方式 支持情况
auto ✅ Potatso 会选用 aes-128-gcm,所有 Apple 设备都能用硬件运行它。
aes-128-gcm ✅
chacha20-poly1305 ✅
none ✅
zero ❌
aes-128-cfb(旧式) ❌

none 和 zero 会以不加密的方式发送流量。none 只应搭配 TLS 使用,由 TLS 来加密连接。Potatso 不会使用 zero 连接,它还会去掉防篡改保护:请在服务器上改用其他加密方式。

alterId

Potatso 始终使用当前的 VMess 认证方式,等同于 alterId 为 0。用户的 alterId 仍大于 0 的服务器也接受这种方式,所以服务器无需改动。Potatso 不支持仅在 alterId 大于 0 时使用的旧认证方式,服务器自 2022 年起已弃用它。

传输方式

传输方式 链接 net / type 支持情况 测试环境
无(普通 TCP) tcp,或不填 ✅ 可带或不带 TLS Xray、sing-box、V2Ray
WebSocket ws ✅ 可带或不带 TLS 和 early data Xray、sing-box、V2Ray
gRPC grpc ✅ 可带或不带 TLS Xray、sing-box、V2Ray
HTTP/2 h2 或 http ✅ 需带 TLS sing-box、V2Ray
HTTP Upgrade httpupgrade ✅ 可带或不带 TLS Xray、sing-box
带 HTTP 头部的 TCP tcp 加 type=http ❌
XHTTP xhttp ❌
mKCP、QUIC kcp, quic ❌

所有受支持的传输方式都支持 UDP。如果服务器使用的传输方式 Potatso 不支持,Potatso 不会导入它。

WebSocket early data 会把连接的最初几个字节随 WebSocket 握手一起发送,从而省去一次往返。它由链接路径末尾的 ?ed=2048 设置,在 Clash 订阅中则是 max-early-data。

Xray 已不再提供 HTTP/2:原本使用它的 Xray 服务器现在改用 XHTTP,而 Potatso 暂不支持 XHTTP。

TLS

设置 Clash 键 链接字段 支持情况
服务器名称(SNI) servername sni ✅ 未设置时,Potatso 使用服务器地址。
ALPN alpn alpn ✅ 未设置时,WebSocket 发送 http/1.1,gRPC 和 HTTP/2 发送 h2。
跳过证书验证 skip-cert-verify allowInsecure ✅
浏览器指纹 client-fingerprint fp ✅ chrome、firefox、safari、ios、android、edge 和 random。其他名称使用默认握手连接。
证书固定 fingerprint pcs ❌
REALITY reality-opts security=reality ❌
Encrypted Client Hello(ECH) ech-opts ech ❌
自定义 CA 证书 ❌

关闭证书验证,会让你与服务器之间的任何人都能读取你的流量。对于需要 REALITY、ECH 或证书固定的 VMess 服务器,Potatso 不会连接,因为不带这些设置连接,得不到服务器所要求的保护。需要 REALITY 时请使用 VLESS 或 Trojan。

浏览器指纹会让连接的 TLS 握手看起来像该浏览器的握手,但不会改变服务器必须支持的内容。

UDP

VMess 服务器默认关闭 UDP。请在服务器设置中开启 UDP 转发,或在 Clash 订阅中设置 udp: true。

Potatso 让每个 UDP 流各走自己的 VMess 连接,所有 VMess 服务器都接受这种方式。它不支持 XUDP 和 PacketAddr 编码(链接中的 packetEncoding,Clash 订阅中的 packet-encoding 或 xudp),这两种编码会让多个 UDP 流共用一条连接:按它们设置的服务器仍可使用,导入时 Potatso 会告诉你它改用了自己的 UDP 方式。需要全锥形 NAT 的应用(如部分游戏)可能无法使用。

开启多路复用后,UDP 改为通过共享的连接传输。

多路复用

Potatso 可以让多条连接共用一条 VMess 连接;在 Clash 订阅中用 smux 设置:

协议 smux protocol 服务器
Mux.Cool muxcool Xray、V2Ray 和 sing-box,服务器端无需设置
sing-mux h2mux, smux, yamux 开启了多路复用的 sing-box

TCP 和 UDP 均可使用。Mux.Cool 会同时关闭连接的两个方向,所以如果某个应用停止发送后要等待回复,应使用未开启多路复用的服务器。

请求选项

VMess 客户端会为每条连接选择若干选项,而服务器接受其中任意一种。Potatso 始终以加密分块的方式发送流量,并标记每次上传的结束,其余选项一律不设置:

选项 Clash 键 Potatso
分块流 始终开启
分块掩码 关闭
全局填充 global-padding 关闭。导入设置了它的服务器时,Potatso 会发出警告。
认证长度 authenticated-length 关闭。导入设置了它的服务器时,Potatso 会发出警告。

分块掩码和全局填充会向旁观者隐藏每个分块的大小。没有它们时,你的流量仍然无法被读取,但流量特征更容易被识别。

大文件上传

单条 VMess 连接最多可上传约 1 GiB。VMess 用计数器给加密分块编号,超过这个量后计数器就会耗尽,继续下去会削弱加密强度,所以 Potatso 会改为关闭连接。下载没有限制。如果需要在一条连接中上传超过 1 GiB,请使用 VLESS 或 Trojan 服务器。

功能支持

功能 支持情况
AEAD 认证(alterId 为 0) ✅
旧式 MD5 认证(alterId 大于 0) ❌ alterId 大于 0 的服务器也接受 AEAD 认证。
加密方式 aes-128-gcm、chacha20-poly1305、none、auto ✅
加密方式 zero 和旧式 aes-128-cfb ❌
分块流、上传结束标记 ✅
分块掩码、全局填充、认证长度 ❌ 服务器接受不带它们的连接
UDP ✅ 每个流一条连接
单条连接上传超过约 1 GiB ❌ 见大文件上传
XUDP、PacketAddr ❌
Mux.Cool ✅ TCP 和 UDP
sing-mux(h2mux、smux、yamux) ✅ TCP 和 UDP
传输方式 见传输方式
TLS 见 TLS
v2rayN 分享链接(版本 2) ✅
Xray 分享链接 ✅
Shadowrocket 分享链接 仅支持导入

vmess:// 链接用一行文字包含完整的服务器信息。Potatso 可导入三种形式,并可分享其中前两种。

最常见的是 v2rayN 形式,即经 Base64 编码的 JSON 对象:

vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})
字段 说明
v 格式版本,2。
ps 可选。服务器在 Potatso 中的名称。
add 服务器地址。
port 服务器端口。
id UUID。
aid alterId。见 alterId。
scy 加密方式。未设置时为 auto。
net 传输方式:tcp、ws、grpc、h2 或 httpupgrade。
type none,或表示 TCP HTTP 头部的 http(Potatso 不支持)。
host WebSocket、HTTP/2 和 HTTP Upgrade 的 Host 请求头。
path WebSocket、HTTP/2 和 HTTP Upgrade 的路径,或 gRPC 的服务名称。WebSocket 路径可以以 ?ed=2048 结尾,用于 early data。
tls 使用 TLS 时为 tls,否则留空。
sni, alpn, fp TLS 的服务器名称、ALPN 列表和浏览器指纹。

Xray 形式是一个 URL,加密方式放在 encryption 中,传输方式和 TLS 设置作为查询参数:

vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name
参数 说明
type 传输方式。
encryption 加密方式。未设置时为 auto。
security tls 或 none。
sni, alpn, fp TLS 的服务器名称、ALPN 列表和浏览器指纹。
host, path Host 请求头和路径,与 v2rayN 形式相同。
serviceName gRPC 服务名称。
ed WebSocket early data,单位为字节。

Potatso 也能导入 Shadowrocket 的形式,即 vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&…。

每个示例都是要导入的链接。UUID 是 b831381d-6324-4d53-ad4f-8cda48b30811。

通过 cdn.example.com 的 WebSocket,带 TLS 和 early data,使用 Chrome 指纹:

vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=

gRPC,带 TLS,使用 aes-128-gcm,服务名称为 vmess-grpc:

vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==

普通 TCP,使用 chacha20-poly1305,Xray 形式:

vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:8080?type=tcp&encryption=chacha20-poly1305#Plain%20TCP

带 TLS 的 HTTP Upgrade,Xray 形式:

vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:443?type=httpupgrade&security=tls&sni=cdn.example.com&host=cdn.example.com&path=%2Fupgrade&encryption=auto#HTTP%20Upgrade

Clash 订阅中的写法

proxies:
  - name: VMess WS
    type: vmess
    server: vmess.example.com
    port: 443
    uuid: b831381d-6324-4d53-ad4f-8cda48b30811
    alterId: 0
    cipher: auto
    udp: true
    tls: true
    servername: cdn.example.com
    network: ws
    ws-opts:
      path: /ray
      headers:
        Host: cdn.example.com
      max-early-data: 2048
      early-data-header-name: Sec-WebSocket-Protocol
导航

Type to search…

↑↓ navigate↵ selectEsc close