Un serveur VMess se décrit par un UUID, un chiffrement qui protège le trafic et un transport qui porte la connexion, comme WebSocket ou gRPC, avec ou sans TLS. Potatso se connecte à un serveur lorsqu’il prend en charge son chiffrement, son transport et ses réglages TLS. Utilisez les tableaux ci-dessous pour vérifier les réglages de votre serveur, tels que votre fournisseur les indique ou tels qu’ils figurent dans son lien vmess://.
Vous pouvez ajouter un serveur VMess à la main, avec un lien vmess://, ou en important :
- un abonnement Clash ou Mihomo,
- une configuration Xray ou V2Ray,
- une configuration Surge.
Potatso n’importe pas encore les serveurs VMess d’une configuration sing-box. Utilisez plutôt le lien vmess:// du serveur.
Chiffrements
| Chiffrement | Pris en charge |
|---|---|
auto |
✅ Potatso choisit aes-128-gcm, que tous les appareils Apple exécutent en matériel. |
aes-128-gcm |
✅ |
chacha20-poly1305 |
✅ |
none |
✅ |
zero |
❌ |
aes-128-cfb (ancien) |
❌ |
none et zero envoient votre trafic sans chiffrement. N’utilisez none qu’avec TLS, qui chiffre alors la connexion. Potatso ne se connecte pas avec zero, qui supprime aussi la protection contre la falsification : choisissez un autre chiffrement sur votre serveur.
alterId
Potatso utilise toujours l’authentification VMess actuelle, identique à alterId 0. Les serveurs dont l’utilisateur a encore un alterId supérieur à 0 l’acceptent aussi : vous pouvez donc laisser le serveur tel quel. Potatso ne prend pas en charge l’ancienne authentification que seul un alterId supérieur à 0 utilisait, que les serveurs ont abandonnée depuis 2022.
Transports
| Transport | net / type du lien |
Pris en charge | Testé avec |
|---|---|---|---|
| Aucun (TCP simple) | tcp, ou aucun |
✅ Avec ou sans TLS | Xray, sing-box, V2Ray |
| WebSocket | ws |
✅ Avec ou sans TLS et early data | Xray, sing-box, V2Ray |
| gRPC | grpc |
✅ Avec ou sans TLS | Xray, sing-box, V2Ray |
| HTTP/2 | h2 ou http |
✅ Avec TLS | sing-box, V2Ray |
| HTTP Upgrade | httpupgrade |
✅ Avec ou sans TLS | Xray, sing-box |
| TCP avec un en-tête HTTP | tcp avec type=http |
❌ | |
| XHTTP | xhttp |
❌ | |
| mKCP, QUIC | kcp, quic |
❌ |
Chaque transport pris en charge fonctionne avec l’UDP. Potatso n’importe pas un serveur dont il ne prend pas en charge le transport.
L’early data WebSocket envoie les premiers octets d’une connexion avec la négociation WebSocket, ce qui économise un aller-retour. Elle se définit par ?ed=2048 à la fin du chemin du lien, ou max-early-data dans un abonnement Clash.
Xray ne propose plus HTTP/2 : les serveurs Xray qui l’utilisaient utilisent désormais XHTTP, que Potatso ne prend pas encore en charge.
TLS
| Réglage | Clé Clash | Champ de lien | Pris en charge |
|---|---|---|---|
| Nom du serveur (SNI) | servername |
sni |
✅ Sans nom, Potatso utilise l’adresse du serveur. |
| ALPN | alpn |
alpn |
✅ Sans ALPN, Potatso envoie http/1.1 pour WebSocket et h2 pour gRPC et HTTP/2. |
| Ignorer la vérification du certificat | skip-cert-verify |
allowInsecure |
✅ |
| Empreinte de navigateur | client-fingerprint |
fp |
✅ chrome, firefox, safari, ios, android, edge et random. Les autres noms se connectent avec une négociation par défaut. |
| Épinglage de certificat | fingerprint |
pcs |
❌ |
| REALITY | reality-opts |
security=reality |
❌ |
| Encrypted Client Hello (ECH) | ech-opts |
ech |
❌ |
| Certificat CA personnalisé | ❌ |
Désactiver la vérification du certificat permet à n’importe qui entre vous et le serveur de lire votre trafic. Potatso ne se connecte pas à un serveur VMess qui exige REALITY, ECH ou un épinglage de certificat, car se connecter sans eux n’offrirait pas la protection que demande le serveur. Utilisez VLESS ou Trojan pour REALITY.
Une empreinte de navigateur fait ressembler la négociation TLS de la connexion à celle de ce navigateur. Elle ne change pas ce que le serveur doit prendre en charge.
UDP
L’UDP est désactivé par défaut pour les serveurs VMess. Activez Relais UDP dans les réglages du serveur, ou définissez udp: true dans un abonnement Clash.
Potatso envoie chaque flux UDP sur sa propre connexion VMess, ce que tous les serveurs VMess acceptent. Il ne prend pas en charge les encodages XUDP et PacketAddr (packetEncoding dans un lien, packet-encoding ou xudp dans un abonnement Clash), qui transportent plusieurs flux UDP sur une seule connexion : un serveur configuré avec eux fonctionne quand même, et Potatso vous indique à l’import qu’il utilise son propre UDP à la place. Les apps qui ont besoin d’un NAT full-cone, comme certains jeux, peuvent ne pas fonctionner avec lui.
Avec le multiplexage activé, l’UDP passe par la connexion partagée.
Multiplexage
Potatso peut faire passer plusieurs connexions par une seule connexion VMess, défini avec smux dans un abonnement Clash :
| Protocole | protocol de smux |
Serveurs |
|---|---|---|
| Mux.Cool | muxcool |
Xray, V2Ray et sing-box, sans réglage serveur |
| sing-mux | h2mux, smux, yamux |
sing-box avec le multiplexage activé |
Le TCP et l’UDP fonctionnent tous deux. Mux.Cool ferme les deux sens d’une connexion ensemble : une app qui cesse d’envoyer puis attend la réponse doit donc utiliser un serveur sans multiplexage.
Options de requête
Un client VMess choisit quelques options pour chaque connexion, et chaque serveur les accepte toutes. Potatso envoie toujours son trafic en blocs chiffrés et marque la fin de chaque envoi, et ne définit pas les autres :
| Option | Clé Clash | Potatso |
|---|---|---|
| Flux de blocs | Toujours activé | |
| Masquage des blocs | Désactivé | |
| Bourrage global | global-padding |
Désactivé. Potatso vous avertit quand vous importez un serveur qui le définit. |
| Longueur authentifiée | authenticated-length |
Désactivé. Potatso vous avertit quand vous importez un serveur qui la définit. |
Le masquage des blocs et le bourrage global cachent la taille de chaque bloc à quiconque observe. Sans eux, votre trafic reste illisible, mais son motif est plus facile à reconnaître.
Gros envois
Une seule connexion VMess peut envoyer environ 1 Gio. VMess numérote ses blocs chiffrés avec un compteur qui s’épuise après cela, et continuer affaiblirait le chiffrement : Potatso ferme donc la connexion. Les téléchargements n’ont pas de limite. Pour des envois de plus de 1 Gio sur une seule connexion, utilisez un serveur VLESS ou Trojan.
Fonctionnalités prises en charge
| Fonctionnalité | Pris en charge |
|---|---|
Authentification AEAD (alterId 0) |
✅ |
Ancienne authentification MD5 (alterId supérieur à 0) |
❌ Les serveurs avec alterId supérieur à 0 acceptent l’authentification AEAD. |
Chiffrements aes-128-gcm, chacha20-poly1305, none, auto |
✅ |
Chiffrements zero et l’ancien aes-128-cfb |
❌ |
| Flux de blocs, marqueur de fin d’envoi | ✅ |
| Masquage des blocs, bourrage global, longueur authentifiée | ❌ Les serveurs acceptent les connexions sans eux |
| UDP | ✅ Une connexion par flux |
| Envois de plus d’environ 1 Gio sur une connexion | ❌ Voir Gros envois |
| XUDP, PacketAddr | ❌ |
| Mux.Cool | ✅ TCP et UDP |
| sing-mux (h2mux, smux, yamux) | ✅ TCP et UDP |
| Transports | Voir Transports |
| TLS | Voir TLS |
| Liens de partage v2rayN (version 2) | ✅ |
| Liens de partage Xray | ✅ |
| Liens de partage Shadowrocket | Import uniquement |
Liens vmess://
Un lien vmess:// contient un serveur entier sur une ligne. Potatso importe trois formes et partage les deux premières.
La forme v2rayN, la plus courante, est un objet JSON encodé en Base64 :
vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})| Champ | Description |
|---|---|
v |
Version du format, 2. |
ps |
Facultatif. Le nom du serveur dans Potatso. |
add |
Adresse du serveur. |
port |
Port du serveur. |
id |
L’UUID. |
aid |
alterId. Voir alterId. |
scy |
Le chiffrement. Sans valeur, auto. |
net |
Le transport : tcp, ws, grpc, h2 ou httpupgrade. |
type |
none, ou http pour un en-tête HTTP en TCP, que Potatso ne prend pas en charge. |
host |
L’en-tête Host pour WebSocket, HTTP/2 et HTTP Upgrade. |
path |
Le chemin pour WebSocket, HTTP/2 et HTTP Upgrade, ou le nom du service pour gRPC. Un chemin WebSocket peut se terminer par ?ed=2048 pour l’early data. |
tls |
tls pour utiliser TLS, ou vide. |
sni, alpn, fp |
Le nom du serveur TLS, la liste ALPN et l’empreinte de navigateur. |
La forme Xray est une URL, avec le chiffrement dans encryption et les réglages de transport et de TLS comme paramètres de requête :
vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name| Paramètre | Description |
|---|---|
type |
Le transport. |
encryption |
Le chiffrement. Sans valeur, auto. |
security |
tls, ou none. |
sni, alpn, fp |
Le nom du serveur TLS, la liste ALPN et l’empreinte de navigateur. |
host, path |
L’en-tête Host et le chemin, comme dans la forme v2rayN. |
serviceName |
Le nom du service gRPC. |
ed |
L’early data WebSocket, en octets. |
Potatso importe aussi la forme de Shadowrocket, vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&….
Exemples
Chaque exemple montre le lien à importer. L’UUID est b831381d-6324-4d53-ad4f-8cda48b30811.
WebSocket avec TLS et early data, via cdn.example.com, avec l’empreinte Chrome :
vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=gRPC avec TLS et aes-128-gcm, nom de service vmess-grpc :
vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==TCP simple avec chacha20-poly1305, dans la forme Xray :
vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:8080?type=tcp&encryption=chacha20-poly1305#Plain%20TCPHTTP Upgrade avec TLS, dans la forme 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%20UpgradeDans un abonnement 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