Skip to content

VMess

Die von Potatso unterstützten VMess-Verschlüsselungen, Transporte, Links und Funktionen.

Updated Als Markdown anzeigen

Ein VMess-Server wird durch eine UUID, eine Verschlüsselung, die den Datenverkehr verschlüsselt, und einen Transport beschrieben, der die Verbindung trägt, etwa WebSocket oder gRPC, mit oder ohne TLS. Potatso verbindet sich mit einem Server, wenn es dessen Verschlüsselung, Transport und TLS-Einstellungen unterstützt. Prüfe anhand der Tabellen unten die Einstellungen deines Servers, wie dein Anbieter sie angibt oder wie sie in seinem vmess://-Link stehen.

Einen VMess-Server kannst du von Hand, mit einem vmess://-Link oder per Import hinzufügen:

  • eines Clash- oder Mihomo-Abonnements,
  • einer Xray- oder V2Ray-Konfiguration,
  • einer Surge-Konfiguration.

Potatso importiert VMess-Server noch nicht aus einer sing-box-Konfiguration. Nutze stattdessen den vmess://-Link des Servers.

Verschlüsselungen

Verschlüsselung Unterstützt
auto ✅ Potatso wählt aes-128-gcm, das jedes Apple-Gerät in Hardware ausführt.
aes-128-gcm ✅
chacha20-poly1305 ✅
none ✅
zero ❌
aes-128-cfb (veraltet) ❌

none und zero senden deinen Datenverkehr unverschlüsselt. Nutze none nur mit TLS, das die Verbindung dann verschlüsselt. Mit zero, das auch den Schutz vor Manipulation aufgibt, verbindet Potatso nicht: Wähle auf deinem Server eine andere Verschlüsselung.

alterId

Potatso verwendet immer die aktuelle VMess-Authentifizierung, die alterId 0 entspricht. Server, deren Benutzer noch eine alterId über 0 hat, akzeptieren sie ebenfalls, du kannst den Server also so lassen, wie er ist. Potatso unterstützt die alte Authentifizierung nicht, die nur alterId über 0 nutzte und die Server seit 2022 als veraltet führen.

Transporte

Transport Link-net / type Unterstützt Getestet mit
Keiner (einfaches TCP) tcp oder keiner ✅ Mit oder ohne TLS Xray, sing-box, V2Ray
WebSocket ws ✅ Mit oder ohne TLS und Early Data Xray, sing-box, V2Ray
gRPC grpc ✅ Mit oder ohne TLS Xray, sing-box, V2Ray
HTTP/2 h2 oder http ✅ Mit TLS sing-box, V2Ray
HTTP Upgrade httpupgrade ✅ Mit oder ohne TLS Xray, sing-box
TCP mit einem HTTP-Header tcp mit type=http ❌
XHTTP xhttp ❌
mKCP, QUIC kcp, quic ❌

Jeder unterstützte Transport funktioniert mit UDP. Potatso importiert keinen Server, dessen Transport es nicht unterstützt.

WebSocket Early Data sendet die ersten Bytes einer Verbindung mit dem WebSocket-Handshake mit und spart so einen Round-Trip. Sie wird durch ?ed=2048 am Ende des Link-Pfads oder durch max-early-data in einem Clash-Abonnement festgelegt.

Xray bietet HTTP/2 nicht mehr an: Xray-Server, die es nutzten, verwenden jetzt XHTTP, das Potatso noch nicht unterstützt.

TLS

Einstellung Clash-Schlüssel Link-Feld Unterstützt
Servername (SNI) servername sni ✅ Ohne Angabe verwendet Potatso die Adresse des Servers.
ALPN alpn alpn ✅ Ohne Angabe sendet Potatso http/1.1 für WebSocket und h2 für gRPC und HTTP/2.
Zertifikatsprüfung überspringen skip-cert-verify allowInsecure ✅
Browser-Fingerabdruck client-fingerprint fp ✅ chrome, firefox, safari, ios, android, edge und random. Andere Namen verbinden mit einem Standard-Handshake.
Zertifikat-Pinning fingerprint pcs ❌
REALITY reality-opts security=reality ❌
Encrypted Client Hello (ECH) ech-opts ech ❌
Eigenes CA-Zertifikat ❌

Schaltest du die Zertifikatsprüfung aus, kann jeder zwischen dir und dem Server deinen Datenverkehr mitlesen. Potatso verbindet nicht mit einem VMess-Server, der REALITY, ECH oder einen Zertifikat-Pin braucht, weil eine Verbindung ohne sie nicht den Schutz böte, den der Server verlangt. Nutze für REALITY VLESS oder Trojan.

Ein Browser-Fingerabdruck lässt den TLS-Handshake der Verbindung wie den dieses Browsers aussehen. Er ändert nicht, was der Server unterstützen muss.

UDP

UDP ist bei VMess-Servern standardmäßig aus. Schalte UDP-Relay in den Servereinstellungen ein oder setze udp: true in einem Clash-Abonnement.

Potatso sendet jeden UDP-Flow über eine eigene VMess-Verbindung, was jeder VMess-Server akzeptiert. Es unterstützt die Kodierungen XUDP und PacketAddr nicht (packetEncoding in einem Link, packet-encoding oder xudp in einem Clash-Abonnement), die viele UDP-Flows über eine Verbindung tragen: Ein damit eingerichteter Server funktioniert trotzdem, und Potatso weist beim Import darauf hin, dass es stattdessen sein eigenes UDP nutzt. Apps, die Full-Cone-NAT brauchen, etwa manche Spiele, funktionieren damit eventuell nicht.

Bei eingeschaltetem Multiplexing läuft UDP stattdessen über die gemeinsame Verbindung.

Multiplexing

Potatso kann mehrere Verbindungen über eine VMess-Verbindung führen, in einem Clash-Abonnement über smux festgelegt:

Protokoll smux-protocol Server
Mux.Cool muxcool Xray, V2Ray und sing-box, ohne Servereinstellung
sing-mux h2mux, smux, yamux sing-box mit eingeschaltetem Multiplexing

TCP und UDP funktionieren beide. Mux.Cool schließt beide Richtungen einer Verbindung gemeinsam, daher sollte eine App, die das Senden beendet und dann auf die Antwort wartet, einen Server ohne Multiplexing nutzen.

Anfrageoptionen

Ein VMess-Client wählt für jede Verbindung einige Optionen, und jeder Server akzeptiert jede davon. Potatso sendet seinen Datenverkehr immer in verschlüsselten Chunks und markiert das Ende jedes Uploads; die anderen setzt es nicht:

Option Clash-Schlüssel Potatso
Chunk-Stream Immer an
Chunk-Maskierung Aus
Globales Padding global-padding Aus. Potatso warnt, wenn du einen Server importierst, der es setzt.
Authentifizierte Länge authenticated-length Aus. Potatso warnt, wenn du einen Server importierst, der sie setzt.

Chunk-Maskierung und globales Padding verbergen die Größe jedes Chunks vor Beobachtern. Ohne sie bleibt dein Datenverkehr weiterhin unlesbar, sein Muster ist aber leichter zu erkennen.

Große Uploads

Eine einzelne VMess-Verbindung kann etwa 1 GiB hochladen. VMess nummeriert seine verschlüsselten Chunks mit einem Zähler, der danach ausläuft, und ein Weitermachen würde die Verschlüsselung schwächen, daher schließt Potatso stattdessen die Verbindung. Downloads haben kein Limit. Nutze für Uploads von mehr als 1 GiB in einer Verbindung einen VLESS- oder Trojan-Server.

Funktionsunterstützung

Funktion Unterstützt
AEAD-Authentifizierung (alterId 0) ✅
Alte MD5-Authentifizierung (alterId über 0) ❌ Server mit alterId über 0 akzeptieren die AEAD-Authentifizierung.
Verschlüsselungen aes-128-gcm, chacha20-poly1305, none, auto ✅
Verschlüsselungen zero und das veraltete aes-128-cfb ❌
Chunk-Stream, Ende-des-Uploads-Markierung ✅
Chunk-Maskierung, globales Padding, authentifizierte Länge ❌ Server akzeptieren Verbindungen ohne sie
UDP ✅ Eine Verbindung pro Flow
Uploads über etwa 1 GiB auf einer Verbindung ❌ Siehe Große Uploads
XUDP, PacketAddr ❌
Mux.Cool ✅ TCP und UDP
sing-mux (h2mux, smux, yamux) ✅ TCP und UDP
Transporte Siehe Transporte
TLS Siehe TLS
v2rayN-Share-Links (Version 2) ✅
Xray-Share-Links ✅
Shadowrocket-Share-Links Nur Import

Ein vmess://-Link enthält einen ganzen Server in einer Zeile. Potatso importiert drei Formen und teilt die ersten beiden.

Die v2rayN-Form, die häufigste, ist ein Base64-kodiertes JSON-Objekt:

vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})
Feld Beschreibung
v Formatversion, 2.
ps Optional. Der Name des Servers in Potatso.
add Serveradresse.
port Serverport.
id Die UUID.
aid alterId. Siehe alterId.
scy Die Verschlüsselung. Ohne Angabe auto.
net Der Transport: tcp, ws, grpc, h2 oder httpupgrade.
type none oder http für einen TCP-HTTP-Header, den Potatso nicht unterstützt.
host Der Host-Header für WebSocket, HTTP/2 und HTTP Upgrade.
path Der Pfad für WebSocket, HTTP/2 und HTTP Upgrade oder der Dienstname für gRPC. Ein WebSocket-Pfad kann für Early Data auf ?ed=2048 enden.
tls tls, um TLS zu nutzen, oder leer.
sni, alpn, fp Der TLS-Servername, die ALPN-Liste und der Browser-Fingerabdruck.

Die Xray-Form ist eine URL, mit der Verschlüsselung in encryption und den Transport- und TLS-Einstellungen als Abfrageparametern:

vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name
Parameter Beschreibung
type Der Transport.
encryption Die Verschlüsselung. Ohne Angabe auto.
security tls oder none.
sni, alpn, fp Der TLS-Servername, die ALPN-Liste und der Browser-Fingerabdruck.
host, path Der Host-Header und der Pfad, wie in der v2rayN-Form.
serviceName Der gRPC-Dienstname.
ed WebSocket Early Data, in Byte.

Potatso importiert auch die Form von Shadowrocket, vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&….

Jedes Beispiel zeigt den Link zum Importieren. Die UUID ist b831381d-6324-4d53-ad4f-8cda48b30811.

WebSocket mit TLS und Early Data, über cdn.example.com, mit dem Chrome-Fingerabdruck:

vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=

gRPC mit TLS und aes-128-gcm, Dienstname vmess-grpc:

vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==

Einfaches TCP mit chacha20-poly1305, in der Xray-Form:

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

HTTP Upgrade mit TLS, in der Xray-Form:

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

In einem Clash-Abonnement

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
Navigation

Type to search…

↑↓ navigate↵ selectEsc close