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

> Documentation Index
> Fetch the complete documentation index at: https://potatso.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# VMess

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

你可以手动添加 VMess 服务器、通过 [`vmess://` 链接](#links)添加，或通过导入添加：

- Clash 或 Mihomo 订阅，
- Xray 或 V2Ray 配置，
- Surge 配置。

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

## 加密方式 {#ciphers}

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

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

### alterId {#alterid}

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

## 传输方式 {#transports}

| 传输方式 | 链接 `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 {#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 {#udp}

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

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

开启[多路复用](#mux)后，UDP 改为通过共享的连接传输。

## 多路复用 {#mux}

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

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

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

## 请求选项 {#request-options}

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

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

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

### 大文件上传 {#large-uploads}

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

## 功能支持 {#features}

| 功能 | 支持情况 |
| --- | --- |
| [AEAD 认证](https://www.v2fly.org/en_US/developer/protocols/vmess.html)（`alterId` 为 0） | ✅ |
| 旧式 MD5 认证（`alterId` 大于 0） | ❌ `alterId` 大于 0 的服务器也接受 AEAD 认证。 |
| 加密方式 `aes-128-gcm`、`chacha20-poly1305`、`none`、`auto` | ✅ |
| 加密方式 `zero` 和旧式 `aes-128-cfb` | ❌ |
| 分块流、上传结束标记 | ✅ |
| 分块掩码、全局填充、认证长度 | ❌ 服务器接受不带它们的连接 |
| UDP | ✅ 每个流一条连接 |
| 单条连接上传超过约 1 GiB | ❌ 见[大文件上传](#large-uploads) |
| XUDP、PacketAddr | ❌ |
| Mux.Cool | ✅ TCP 和 UDP |
| sing-mux（h2mux、smux、yamux） | ✅ TCP 和 UDP |
| 传输方式 | 见[传输方式](#transports) |
| TLS | 见 [TLS](#tls) |
| [v2rayN 分享链接](#links)（版本 2） | ✅ |
| [Xray 分享链接](https://github.com/XTLS/Xray-core/discussions/716) | ✅ |
| Shadowrocket 分享链接 | 仅支持导入 |

## `vmess://` 链接 {#links}

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

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

```text
vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})
```

| 字段 | 说明 |
| --- | --- |
| `v` | 格式版本，`2`。 |
| `ps` | 可选。服务器在 Potatso 中的名称。 |
| `add` | 服务器地址。 |
| `port` | 服务器端口。 |
| `id` | UUID。 |
| `aid` | `alterId`。见 [alterId](#alterid)。 |
| `scy` | [加密方式](#ciphers)。未设置时为 `auto`。 |
| `net` | [传输方式](#transports)：`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](#tls) 的服务器名称、ALPN 列表和浏览器指纹。 |

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

```text
vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name
```

| 参数 | 说明 |
| --- | --- |
| `type` | [传输方式](#transports)。 |
| `encryption` | [加密方式](#ciphers)。未设置时为 `auto`。 |
| `security` | `tls` 或 `none`。 |
| `sni`, `alpn`, `fp` | [TLS](#tls) 的服务器名称、ALPN 列表和浏览器指纹。 |
| `host`, `path` | `Host` 请求头和路径，与 v2rayN 形式相同。 |
| `serviceName` | gRPC 服务名称。 |
| `ed` | WebSocket early data，单位为字节。 |

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

### 示例 {#link-examples}

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

通过 `cdn.example.com` 的 WebSocket，带 TLS 和 early data，使用 Chrome 指纹：

```text
vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=
```

gRPC，带 TLS，使用 `aes-128-gcm`，服务名称为 `vmess-grpc`：

```text
vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==
```

普通 TCP，使用 `chacha20-poly1305`，Xray 形式：

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

带 TLS 的 HTTP Upgrade，Xray 形式：

```text
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 订阅中的写法 {#clash}

```yaml
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
```

Source: https://potatso.com/docs/zh/protocols/vmess/index.mdx
