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:// 链接
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%20UpgradeClash 订阅中的写法
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