Um servidor Shadowsocks é descrito por uma cifra e uma senha e, opcionalmente, por um plugin que disfarça a conexão. O Potatso conecta a um servidor quando suporta a cifra e, se houver, o plugin. Use as tabelas abaixo para conferir os ajustes do seu servidor, como mostrados pelo seu provedor ou no link ss:// dele.
Você pode adicionar um servidor Shadowsocks à mão, com um link ss://, ou importando:
- uma assinatura Clash ou Mihomo,
- uma configuração online SIP008, a partir de um arquivo ou de um link,
- um
config.jsondo shadowsocks-rust ou do shadowsocks-libev, - uma configuração do Surge, ou uma configuração do Xray ou do V2Ray.
Cifras
Prefira uma cifra 2022 se o seu servidor oferecer uma e, depois, uma cifra AEAD. As cifras de fluxo têm fraquezas conhecidas: use-as apenas com servidores que não oferecem nada além delas.
| Cifra | Tipo | Suportada |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ Com vários usuários |
2022-blake3-chacha20-poly1305, 2022-blake3-chacha8-poly1305 |
2022 | ✅ |
aes-128-gcm, aes-192-gcm, aes-256-gcm |
AEAD | ✅ |
chacha20-ietf-poly1305, xchacha20-ietf-poly1305 |
AEAD | ✅ |
aes-128-ccm, aes-256-ccm, aes-128-gcm-siv, aes-256-gcm-siv |
AEAD | ✅ |
sm4-gcm, sm4-ccm |
AEAD | ✅ |
aes-128-ctr, aes-192-ctr, aes-256-ctr |
Fluxo | ✅ |
aes-128-cfb, aes-192-cfb, aes-256-cfb (também escrito -cfb128) |
Fluxo | ✅ |
aes-128-cfb1, aes-192-cfb1, aes-256-cfb1 |
Fluxo | ✅ |
aes-128-cfb8, aes-192-cfb8, aes-256-cfb8 |
Fluxo | ✅ |
aes-128-ofb, aes-192-ofb, aes-256-ofb |
Fluxo | ✅ |
camellia-128-ctr, camellia-192-ctr, camellia-256-ctr |
Fluxo | ✅ |
camellia-128-cfb, camellia-192-cfb, camellia-256-cfb (também escrito -cfb128) |
Fluxo | ✅ |
camellia-128-cfb1, camellia-192-cfb1, camellia-256-cfb1 |
Fluxo | ✅ |
camellia-128-cfb8, camellia-192-cfb8, camellia-256-cfb8 |
Fluxo | ✅ |
camellia-128-ofb, camellia-192-ofb, camellia-256-ofb |
Fluxo | ✅ |
chacha20-ietf, chacha20, salsa20 |
Fluxo | ✅ |
bf-cfb, rc4-md5, rc4, table |
Fluxo | ✅ |
none (também escrito plain) |
Sem criptografia | ✅ |
cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb, rc4-md5-6 |
Fluxo | ❌ Somente ShadowsocksR |
xchacha20, xsalsa20 |
Fluxo | ❌ |
Os nomes não diferenciam maiúsculas de minúsculas, então AES-256-GCM funciona igual a aes-256-gcm.
none envia seu tráfego sem criptografia. Use-o apenas com um plugin que criptografe a própria conexão, como o v2ray-plugin com TLS.
Toda cifra suportada é testada com pelo menos um servidor Shadowsocks real: shadowsocks-rust, sing-box ou o servidor Python original. Das cifras AEAD acima, somente os servidores shadowsocks-rust oferecem aes-*-ccm, aes-*-gcm-siv e sm4-*, e poucos provedores as usam.
Chaves 2022
As cifras 2022 (SIP022) não usam senha. Elas usam uma chave: bytes aleatórios, codificados em Base64, do tamanho que a cifra exige. 2022-blake3-aes-128-gcm exige uma chave de 16 bytes e as outras cifras 2022, uma chave de 32 bytes. Use a chave exatamente como o seu servidor a tem.
O Potatso não conecta com uma chave de tamanho errado nem com uma senha que não seja Base64. Para gerar uma nova chave para o seu servidor, execute openssl rand -base64 16 para 2022-blake3-aes-128-gcm ou openssl rand -base64 32 para as outras cifras 2022.
Servidores com vários usuários
Um servidor 2022 pode compartilhar uma porta entre vários usuários (SIP023). Cada usuário tem a própria chave. Para esses servidores, defina a senha como a chave do servidor e a sua chave de usuário, separadas por dois-pontos:
server-key:user-keySomente 2022-blake3-aes-128-gcm e 2022-blake3-aes-256-gcm suportam servidores com vários usuários.
Plugins
Um plugin envolve a conexão Shadowsocks para torná-la mais difícil de detectar. O Potatso traz estes plugins integrados, então não há mais nada para instalar.
| Plugin | Nomes do plugin | Suportado | UDP |
|---|---|---|---|
| Simple Obfs | obfs-local, simple-obfs, obfs |
✅ obfs=http e obfs=tls |
Enviado ao servidor sem o plugin |
| v2ray-plugin | v2ray-plugin |
✅ WebSocket, com ou sem TLS. O modo QUIC não é suportado. | ❌ |
| gost-plugin | gost-plugin |
✅ WebSocket, com ou sem TLS | ❌ |
| ShadowTLS | shadow-tls |
✅ Versões 1, 2 e 3 | ❌ |
| Restls | restls |
✅ | ❌ |
| JLS | jls |
✅ | ❌ |
O Potatso não importa um servidor que precise de outro plugin:
- Cloak, xray-plugin e outros plugins são programas que o seu dispositivo teria de executar ao lado do Potatso, o que o iOS não permite.
- kcptun e ech-tls-tunnel ainda não estão disponíveis no Potatso.
Definir um plugin
Nos ajustes do servidor, escolha o plugin em Plugin e depois digite as opções dele em Parâmetro do plugin. As opções são pares chave=valor separados por ponto e vírgula, como neste exemplo de Simple Obfs:
obfs=tls;obfs-host=cdn.example.comUma chave sozinha, como tls, ativa essa opção. Deixe de fora qualquer opção de que você não precisa; as tabelas abaixo dão o padrão de cada uma.
Quando você importa um servidor, o Potatso define o plugin e as opções dele por você:
- Um link
ss://os traz no parâmetroplugin, depois do nome do plugin:simple-obfs;obfs=tls;obfs-host=cdn.example.com. - Uma assinatura Clash ou Mihomo os traz em
plugineplugin-opts. - Uma configuração SIP008 ou um
config.jsondo shadowsocks-rust ou do shadowsocks-libev os traz emplugineplugin_opts.
São as mesmas opções em todas as formas. Se o seu provedor as lista uma por linha, como em um plugin-opts do Clash, escreva cada uma como chave=valor e una-as com ponto e vírgula.
Opções do plugin
Simple Obfs
| Opção | Descrição |
|---|---|
obfs |
Obrigatória. http ou tls. |
obfs-host |
O cabeçalho Host (http) ou o nome do servidor enviado no handshake TLS (tls). Quando está vazia, o Potatso usa o endereço do servidor. |
obfs-uri |
Somente http. O caminho da requisição. Padrão /. |
http-method |
Somente http. O método da requisição. Padrão GET. |
v2ray-plugin
| Opção | Descrição |
|---|---|
mode |
websocket, o padrão. O modo QUIC não é suportado. |
tls |
Conecta por TLS. Desativada por padrão. |
host |
O cabeçalho Host e o nome do servidor para o TLS. Quando está vazia, o Potatso usa o endereço do servidor. |
path |
O caminho do WebSocket. Padrão /. |
mux |
Multiplexação. Desativada por padrão. Ative somente se o seu servidor a usar. |
skip-cert-verify |
Aceita qualquer certificado do servidor. Use somente com um servidor em que você confia. |
header |
Um cabeçalho de requisição extra, como header=Name:Value. Repita para mais cabeçalhos. |
gost-plugin
| Opção | Descrição |
|---|---|
mode |
Obrigatória. websocket. |
tls |
Conecta por TLS. Desativada por padrão. |
host |
O cabeçalho Host e o nome do servidor para o TLS. Padrão bing.com, como no gost. |
path |
O caminho do WebSocket. Padrão /. |
mux |
Multiplexação. Ativada por padrão. |
skip-cert-verify |
Aceita qualquer certificado do servidor. Use somente com um servidor em que você confia. |
fingerprint |
A impressão digital SHA-256 do certificado do servidor, para aceitar somente esse certificado. |
header |
Um cabeçalho de requisição extra, como header=Name:Value. Repita para mais cabeçalhos. |
ShadowTLS
| Opção | Descrição |
|---|---|
host |
Obrigatória. O nome do servidor do site de fachada, como www.example.com. |
version |
Obrigatória. 1, 2 ou 3. |
password |
A senha. As versões 2 e 3 a exigem. |
alpn |
A lista de ALPN, separada por vírgulas. Padrão h2,http/1.1. |
skip-cert-verify |
Aceita qualquer certificado do site de fachada. |
Restls
| Opção | Descrição |
|---|---|
host |
Obrigatória. O nome do servidor do site de fachada. |
password |
Obrigatória. A senha. |
version-hint |
Obrigatória. tls13 ou tls12, conforme o seu servidor está configurado. |
restls-script |
O script de registros, se o seu provedor fornecer um. |
JLS
| Opção | Descrição |
|---|---|
host |
Obrigatória. O nome do servidor do site de fachada. |
username |
Obrigatória. O nome de usuário. |
password |
Obrigatória. A senha. |
alpn |
A lista de ALPN, separada por vírgulas. Padrão h2,http/1.1. |
O Potatso não conecta a um servidor quando falta uma opção obrigatória ou um valor não é válido.
UDP
O UDP vem ativado por padrão nos servidores Shadowsocks e funciona com todas as cifras suportadas. Desative-o nos ajustes do servidor se o seu servidor não repassa UDP.
O UDP não é enviado por um plugin, então, com um plugin diferente do Simple Obfs, o servidor só transporta TCP. O Potatso não suporta UDP sobre TCP (udp-over-tcp ou uot em um link ou assinatura) e não importa um servidor que o exija.
Suporte a recursos
| Recurso | Suportado |
|---|---|
Links ss:// SIP002 |
✅ Incluindo a forma Base64 mais antiga |
| Plugins SIP003 | Somente os plugins integrados |
| SIP003u (UDP por um plugin) | ❌ |
| Cifras AEAD (SIP004) | ✅ |
| Configuração online SIP008 | ✅ |
| Cifras 2022 SIP022 | ✅ TCP e UDP |
| Cabeçalhos de identidade para vários usuários SIP023 | ✅ Para as cifras AES 2022 |
| Cifras de fluxo | ✅ Veja Cifras |
| UDP sobre TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |
Alguns recursos do shadowsocks-rust são ajustes do próprio programa cliente dele, o sslocal, e o Potatso faz o mesmo trabalho à sua maneira:
- Servidores locais SOCKS5, HTTP, tunnel, redir, DNS e TUN: o Potatso captura o tráfego do seu dispositivo por conta própria.
- Listas de controle de acesso (ACL): use as regras do seu perfil.
- Escolher o mais rápido entre vários servidores: use um grupo de proxies no seu perfil.
Links ss://
Um link ss:// guarda um servidor inteiro em uma linha (SIP002):
ss://userinfo@host:port/?plugin=…#name| Parte | Descrição |
|---|---|
userinfo |
A cifra e a senha como cipher:password, codificadas em Base64 ou em percent-encoding. Uma cifra 2022 deve usar a forma com percent-encoding. |
host |
Endereço do servidor. Coloque um endereço IPv6 entre colchetes, como [2001:db8::1]. |
port |
Porta do servidor. |
plugin |
Opcional. O nome do plugin e suas opções, separados por ponto e vírgula e com percent-encoding, como simple-obfs;obfs=tls;obfs-host=cdn.example.com. |
name |
Opcional. O nome do servidor no Potatso. |
O Potatso também importa a forma mais antiga, em que tudo antes do # é codificado em Base64:
ss://base64(cipher:password@host:port)#nameO Potatso aceita Base64 padrão e seguro para URL, com ou sem preenchimento =. Ao compartilhar um servidor, o Potatso oferece as formas Base64 e com percent-encoding do SIP002 e a forma mais antiga.
Exemplos
Cada exemplo mostra o link a importar. A senha nos exemplos AEAD é secret.
Um servidor básico com aes-256-gcm:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#BasicUm servidor 2022 com a chave de 16 bytes MTIzNDU2Nzg5MDEyMzQ1Ng==:
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022Um servidor 2022 com vários usuários, com a chave do servidor e a chave do usuário separadas por dois-pontos (%3A):
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-userSimple Obfs com TLS, usando cdn.example.com como nome do servidor:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#ObfsA forma mais antiga do servidor básico:
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#LegacyUm servidor com endereço IPv6:
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6