Um servidor VMess é descrito por um UUID, uma cifra que criptografa o tráfego e um transporte que carrega a conexão, como WebSocket ou gRPC, com ou sem TLS. O Potatso conecta a um servidor quando suporta a cifra, o transporte e os ajustes de TLS dele. Use as tabelas abaixo para conferir os ajustes do seu servidor, como mostrados pelo seu provedor ou no link vmess:// dele.
Você pode adicionar um servidor VMess à mão, com um link vmess://, ou importando:
- uma assinatura Clash ou Mihomo,
- uma configuração do Xray ou do V2Ray,
- uma configuração do Surge.
O Potatso ainda não importa servidores VMess de uma configuração do sing-box. Use o link vmess:// do servidor.
Cifras
| Cifra | Suportada |
|---|---|
auto |
✅ O Potatso escolhe aes-128-gcm, que todo dispositivo Apple executa em hardware. |
aes-128-gcm |
✅ |
chacha20-poly1305 |
✅ |
none |
✅ |
zero |
❌ |
aes-128-cfb (legado) |
❌ |
none e zero enviam seu tráfego sem criptografia. Use none somente com TLS, que então criptografa a conexão. O Potatso não conecta com zero, que também elimina a proteção contra adulteração: escolha outra cifra no seu servidor.
alterId
O Potatso sempre usa a autenticação atual do VMess, que equivale a alterId 0. Os servidores cujo usuário ainda tem um alterId acima de 0 também a aceitam, então você pode deixar o servidor como está. O Potatso não suporta a autenticação antiga que só o alterId acima de 0 usava, que os servidores descontinuaram desde 2022.
Transportes
| Transporte | net / type do link |
Suportado | Testado com |
|---|---|---|---|
| Nenhum (TCP puro) | tcp, ou nenhum |
✅ Com ou sem TLS | Xray, sing-box, V2Ray |
| WebSocket | ws |
✅ Com ou sem TLS e early data | Xray, sing-box, V2Ray |
| gRPC | grpc |
✅ Com ou sem TLS | Xray, sing-box, V2Ray |
| HTTP/2 | h2 ou http |
✅ Com TLS | sing-box, V2Ray |
| HTTP Upgrade | httpupgrade |
✅ Com ou sem TLS | Xray, sing-box |
| TCP com cabeçalho HTTP | tcp com type=http |
❌ | |
| XHTTP | xhttp |
❌ | |
| mKCP, QUIC | kcp, quic |
❌ |
Todo transporte suportado funciona com UDP. O Potatso não importa um servidor cujo transporte ele não suporta.
O early data do WebSocket envia os primeiros bytes de uma conexão junto com o handshake do WebSocket, economizando uma ida e volta. Ele é definido por ?ed=2048 no fim do caminho do link, ou por max-early-data em uma assinatura Clash.
O Xray não oferece mais HTTP/2: os servidores Xray que o usavam agora usam XHTTP, que o Potatso ainda não suporta.
TLS
| Ajuste | Chave do Clash | Campo do link | Suportado |
|---|---|---|---|
| Nome do servidor (SNI) | servername |
sni |
✅ Sem um, o Potatso usa o endereço do servidor. |
| ALPN | alpn |
alpn |
✅ Sem um, o Potatso envia http/1.1 para WebSocket e h2 para gRPC e HTTP/2. |
| Ignorar a verificação de certificado | skip-cert-verify |
allowInsecure |
✅ |
| Impressão digital do navegador | client-fingerprint |
fp |
✅ chrome, firefox, safari, ios, android, edge e random. Outros nomes conectam com um handshake padrão. |
| Fixação de certificado | fingerprint |
pcs |
❌ |
| REALITY | reality-opts |
security=reality |
❌ |
| Encrypted Client Hello (ECH) | ech-opts |
ech |
❌ |
| Certificado CA personalizado | ❌ |
Desativar a verificação de certificado permite que qualquer pessoa entre você e o servidor leia o seu tráfego. O Potatso não conecta a um servidor VMess que precise de REALITY, ECH ou fixação de certificado, porque conectar sem eles não daria a proteção que o servidor exige. Use VLESS ou Trojan para REALITY.
Uma impressão digital de navegador faz o handshake TLS da conexão parecer o daquele navegador. Ela não muda o que o servidor precisa suportar.
UDP
O UDP vem desativado por padrão nos servidores VMess. Ative o Relay UDP nos ajustes do servidor, ou defina udp: true em uma assinatura Clash.
O Potatso envia cada fluxo UDP por uma conexão VMess própria, o que todo servidor VMess aceita. Ele não suporta as codificações XUDP e PacketAddr (packetEncoding em um link, packet-encoding ou xudp em uma assinatura Clash), que transportam muitos fluxos UDP por uma única conexão: um servidor configurado com elas continua funcionando, e o Potatso avisa na importação que usa o próprio UDP. Apps que precisam de NAT full-cone, como alguns jogos, podem não funcionar com isso.
Com a multiplexação ativada, o UDP viaja pela conexão compartilhada.
Multiplexação
O Potatso pode executar várias conexões sobre uma única conexão VMess, definida com smux em uma assinatura Clash:
| Protocolo | protocol de smux |
Servidores |
|---|---|---|
| Mux.Cool | muxcool |
Xray, V2Ray e sing-box, sem ajuste no servidor |
| sing-mux | h2mux, smux, yamux |
sing-box com a multiplexação ativada |
TCP e UDP funcionam. O Mux.Cool fecha os dois sentidos de uma conexão juntos, então um app que para de enviar e depois espera a resposta deve usar um servidor sem multiplexação.
Opções de requisição
Um cliente VMess escolhe algumas opções para cada conexão, e todo servidor aceita qualquer uma delas. O Potatso sempre envia seu tráfego em blocos criptografados e marca o fim de cada upload, e não define as outras:
| Opção | Chave do Clash | Potatso |
|---|---|---|
| Fluxo em blocos | Sempre ativado | |
| Mascaramento de blocos | Desativado | |
| Padding global | global-padding |
Desativado. O Potatso avisa quando você importa um servidor que o define. |
| Comprimento autenticado | authenticated-length |
Desativado. O Potatso avisa quando você importa um servidor que o define. |
O mascaramento de blocos e o padding global escondem de quem observa o tamanho de cada bloco. Sem eles, seu tráfego continua ilegível, mas o padrão dele é mais fácil de reconhecer.
Uploads grandes
Uma única conexão VMess pode enviar cerca de 1 GiB. O VMess numera seus blocos criptografados com um contador que se esgota depois disso, e continuar enfraqueceria a criptografia, então o Potatso fecha a conexão. Os downloads não têm limite. Para uploads maiores que 1 GiB em uma única conexão, use um servidor VLESS ou Trojan.
Suporte a recursos
| Recurso | Suportado |
|---|---|
Autenticação AEAD (alterId 0) |
✅ |
Autenticação MD5 legada (alterId acima de 0) |
❌ Os servidores com alterId acima de 0 aceitam a autenticação AEAD. |
Cifras aes-128-gcm, chacha20-poly1305, none, auto |
✅ |
Cifras zero e a legada aes-128-cfb |
❌ |
| Fluxo em blocos, marcador de fim de upload | ✅ |
| Mascaramento de blocos, padding global, comprimento autenticado | ❌ Os servidores aceitam conexões sem eles |
| UDP | ✅ Uma conexão por fluxo |
| Uploads acima de cerca de 1 GiB em uma conexão | ❌ Veja Uploads grandes |
| XUDP, PacketAddr | ❌ |
| Mux.Cool | ✅ TCP e UDP |
| sing-mux (h2mux, smux, yamux) | ✅ TCP e UDP |
| Transportes | Veja Transportes |
| TLS | Veja TLS |
| Links de compartilhamento do v2rayN (versão 2) | ✅ |
| Links de compartilhamento do Xray | ✅ |
| Links de compartilhamento do Shadowrocket | Somente importação |
Links vmess://
Um link vmess:// guarda um servidor inteiro em uma linha. O Potatso importa três formas e compartilha as duas primeiras.
A forma do v2rayN, a mais comum, é um objeto JSON codificado em Base64:
vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})| Campo | Descrição |
|---|---|
v |
Versão do formato, 2. |
ps |
Opcional. O nome do servidor no Potatso. |
add |
Endereço do servidor. |
port |
Porta do servidor. |
id |
O UUID. |
aid |
alterId. Veja alterId. |
scy |
A cifra. Sem uma, auto. |
net |
O transporte: tcp, ws, grpc, h2 ou httpupgrade. |
type |
none, ou http para um cabeçalho HTTP no TCP, que o Potatso não suporta. |
host |
O cabeçalho Host para WebSocket, HTTP/2 e HTTP Upgrade. |
path |
O caminho para WebSocket, HTTP/2 e HTTP Upgrade, ou o nome do serviço para gRPC. Um caminho WebSocket pode terminar com ?ed=2048 para early data. |
tls |
tls para usar TLS, ou vazio. |
sni, alpn, fp |
O nome do servidor TLS, a lista de ALPN e a impressão digital do navegador. |
A forma do Xray é uma URL, com a cifra em encryption e o transporte e os ajustes de TLS como parâmetros de consulta:
vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name| Parâmetro | Descrição |
|---|---|
type |
O transporte. |
encryption |
A cifra. Sem uma, auto. |
security |
tls, ou none. |
sni, alpn, fp |
O nome do servidor TLS, a lista de ALPN e a impressão digital do navegador. |
host, path |
O cabeçalho Host e o caminho, como na forma do v2rayN. |
serviceName |
O nome do serviço gRPC. |
ed |
Early data do WebSocket, em bytes. |
O Potatso também importa a forma do Shadowrocket, vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&….
Exemplos
Cada exemplo mostra o link a importar. O UUID é b831381d-6324-4d53-ad4f-8cda48b30811.
WebSocket com TLS e early data, por cdn.example.com, com a impressão digital do Chrome:
vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=gRPC com TLS e aes-128-gcm, nome de serviço vmess-grpc:
vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==TCP puro com chacha20-poly1305, na forma do Xray:
vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:8080?type=tcp&encryption=chacha20-poly1305#Plain%20TCPHTTP Upgrade com TLS, na forma do 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%20UpgradeEm uma assinatura 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