Un server Shadowsocks è descritto da una cifratura e da una password, e facoltativamente da un plugin che maschera la connessione. Potatso si connette a un server quando supporta la cifratura e, se presente, il plugin. Usa le tabelle qui sotto per controllare le impostazioni del tuo server, come le indica il tuo provider o come compaiono nel suo link ss://.
Puoi aggiungere un server Shadowsocks a mano, con un link ss://, oppure importando:
- una sottoscrizione Clash o Mihomo,
- una configurazione online SIP008, da un file o da un link,
- un
config.jsondi shadowsocks-rust o shadowsocks-libev, - una configurazione Surge, oppure una configurazione Xray o V2Ray.
Cifrature
Preferisci una cifratura 2022 se il tuo server ne offre una, poi una cifratura AEAD. Le cifrature a flusso (stream) hanno debolezze note: usale solo con server che non offrono altro.
| Cifratura | Tipo | Supportata |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ Con più utenti |
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 |
Stream | ✅ |
aes-128-cfb, aes-192-cfb, aes-256-cfb (scritta anche -cfb128) |
Stream | ✅ |
aes-128-cfb1, aes-192-cfb1, aes-256-cfb1 |
Stream | ✅ |
aes-128-cfb8, aes-192-cfb8, aes-256-cfb8 |
Stream | ✅ |
aes-128-ofb, aes-192-ofb, aes-256-ofb |
Stream | ✅ |
camellia-128-ctr, camellia-192-ctr, camellia-256-ctr |
Stream | ✅ |
camellia-128-cfb, camellia-192-cfb, camellia-256-cfb (scritta anche -cfb128) |
Stream | ✅ |
camellia-128-cfb1, camellia-192-cfb1, camellia-256-cfb1 |
Stream | ✅ |
camellia-128-cfb8, camellia-192-cfb8, camellia-256-cfb8 |
Stream | ✅ |
camellia-128-ofb, camellia-192-ofb, camellia-256-ofb |
Stream | ✅ |
chacha20-ietf, chacha20, salsa20 |
Stream | ✅ |
bf-cfb, rc4-md5, rc4, table |
Stream | ✅ |
none (scritta anche plain) |
Nessuna cifratura | ✅ |
cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb, rc4-md5-6 |
Stream | ❌ Solo ShadowsocksR |
xchacha20, xsalsa20 |
Stream | ❌ |
I nomi non distinguono maiuscole e minuscole, quindi AES-256-GCM funziona come aes-256-gcm.
none invia il tuo traffico senza cifratura. Usala solo con un plugin che cifra da sé la connessione, come v2ray-plugin con TLS.
Ogni cifratura supportata è testata con almeno un server Shadowsocks reale: shadowsocks-rust, sing-box o il server Python originale. Tra le cifrature AEAD qui sopra, solo i server shadowsocks-rust offrono aes-*-ccm, aes-*-gcm-siv e sm4-*, e pochi provider le usano.
Chiavi 2022
Le cifrature 2022 (SIP022) non usano una password. Usano una chiave: byte casuali, codificati in Base64, della lunghezza richiesta dalla cifratura. 2022-blake3-aes-128-gcm richiede una chiave di 16 byte e le altre cifrature 2022 una chiave di 32 byte. Usa la chiave esattamente come l'ha il tuo server.
Potatso non si connette con una chiave della lunghezza sbagliata, né con una password che non è in Base64. Per creare una nuova chiave per il tuo server, esegui openssl rand -base64 16 per 2022-blake3-aes-128-gcm, oppure openssl rand -base64 32 per le altre cifrature 2022.
Server con più utenti
Un server 2022 può condividere una porta tra più utenti (SIP023). Ogni utente ha la propria chiave. Per questi server, imposta la password sulla chiave del server e sulla tua chiave utente, separate da due punti:
server-key:user-keySolo 2022-blake3-aes-128-gcm e 2022-blake3-aes-256-gcm supportano i server con più utenti.
Plugin
Un plugin avvolge la connessione Shadowsocks per renderla più difficile da rilevare. Potatso li ha integrati, quindi non c'è nient'altro da installare.
| Plugin | Nomi del plugin | Supportato | UDP |
|---|---|---|---|
| Simple Obfs | obfs-local, simple-obfs, obfs |
✅ obfs=http e obfs=tls |
Inviato al server senza il plugin |
| v2ray-plugin | v2ray-plugin |
✅ WebSocket, con o senza TLS. La modalità QUIC non è supportata. | ❌ |
| gost-plugin | gost-plugin |
✅ WebSocket, con o senza TLS | ❌ |
| ShadowTLS | shadow-tls |
✅ Versioni 1, 2 e 3 | ❌ |
| Restls | restls |
✅ | ❌ |
| JLS | jls |
✅ | ❌ |
Potatso non importa un server che richiede un altro plugin:
- Cloak, xray-plugin e altri plugin sono programmi che il tuo dispositivo dovrebbe eseguire accanto a Potatso, cosa che iOS non consente.
- kcptun ed ech-tls-tunnel non sono ancora disponibili in Potatso.
Impostare un plugin
Nelle impostazioni del server, scegli il plugin in Plugin, poi inserisci le sue opzioni in Parametro plugin. Le opzioni sono coppie chiave=valore separate da punti e virgola, come in questo esempio di Simple Obfs:
obfs=tls;obfs-host=cdn.example.comUna chiave da sola, come tls, attiva quell'opzione. Ometti le opzioni che non ti servono; le tabelle qui sotto indicano il valore predefinito di ciascuna.
Quando importi un server, Potatso imposta per te il plugin e le sue opzioni:
- Un link
ss://le contiene nel parametroplugin, dopo il nome del plugin:simple-obfs;obfs=tls;obfs-host=cdn.example.com. - Una sottoscrizione Clash o Mihomo le contiene in
plugineplugin-opts. - Una configurazione SIP008 o un
config.jsondi shadowsocks-rust o shadowsocks-libev le contiene inplugineplugin_opts.
Sono le stesse opzioni in ogni forma. Se il tuo provider le elenca una per riga, come in plugin-opts di Clash, scrivi ciascuna come chiave=valore e uniscile con punti e virgola.
Opzioni dei plugin
Simple Obfs
| Opzione | Descrizione |
|---|---|
obfs |
Obbligatoria. http o tls. |
obfs-host |
L'intestazione Host (http) o il nome del server inviato nell'handshake TLS (tls). Se è vuota, Potatso usa l'indirizzo del server. |
obfs-uri |
Solo http. Il percorso della richiesta. Predefinito /. |
http-method |
Solo http. Il metodo della richiesta. Predefinito GET. |
v2ray-plugin
| Opzione | Descrizione |
|---|---|
mode |
websocket, il valore predefinito. La modalità QUIC non è supportata. |
tls |
Si connette tramite TLS. Disattivata per impostazione predefinita. |
host |
L'intestazione Host e il nome del server per TLS. Se è vuota, Potatso usa l'indirizzo del server. |
path |
Il percorso WebSocket. Predefinito /. |
mux |
Multiplexing. Disattivato per impostazione predefinita. Attivalo solo se il tuo server lo usa. |
skip-cert-verify |
Accetta qualsiasi certificato del server. Usala solo con un server di cui ti fidi. |
header |
Un'intestazione di richiesta aggiuntiva, come header=Nome:Valore. Ripetila per altre intestazioni. |
gost-plugin
| Opzione | Descrizione |
|---|---|
mode |
Obbligatoria. websocket. |
tls |
Si connette tramite TLS. Disattivata per impostazione predefinita. |
host |
L'intestazione Host e il nome del server per TLS. Predefinito bing.com, come in gost. |
path |
Il percorso WebSocket. Predefinito /. |
mux |
Multiplexing. Attivo per impostazione predefinita. |
skip-cert-verify |
Accetta qualsiasi certificato del server. Usala solo con un server di cui ti fidi. |
fingerprint |
L'impronta SHA-256 del certificato del server, per accettare solo quel certificato. |
header |
Un'intestazione di richiesta aggiuntiva, come header=Nome:Valore. Ripetila per altre intestazioni. |
ShadowTLS
| Opzione | Descrizione |
|---|---|
host |
Obbligatoria. Il nome del server del sito di copertura, come www.example.com. |
version |
Obbligatoria. 1, 2 o 3. |
password |
La password. Le versioni 2 e 3 la richiedono. |
alpn |
L'elenco ALPN, separato da virgole. Predefinito h2,http/1.1. |
skip-cert-verify |
Accetta qualsiasi certificato del sito di copertura. |
Restls
| Opzione | Descrizione |
|---|---|
host |
Obbligatoria. Il nome del server del sito di copertura. |
password |
Obbligatoria. La password. |
version-hint |
Obbligatoria. tls13 o tls12, in base alla configurazione del tuo server. |
restls-script |
Lo script dei record, se il tuo provider ne fornisce uno. |
JLS
| Opzione | Descrizione |
|---|---|
host |
Obbligatoria. Il nome del server del sito di copertura. |
username |
Obbligatoria. Il nome utente. |
password |
Obbligatoria. La password. |
alpn |
L'elenco ALPN, separato da virgole. Predefinito h2,http/1.1. |
Potatso non si connette a un server quando manca un'opzione obbligatoria o un valore non è valido.
UDP
UDP è attivo per impostazione predefinita per i server Shadowsocks e funziona con ogni cifratura supportata. Disattivalo nelle impostazioni del server se il tuo server non inoltra UDP.
UDP non viene inviato tramite un plugin, quindi con un plugin diverso da Simple Obfs il server trasporta solo TCP. Potatso non supporta UDP-over-TCP (udp-over-tcp o uot in un link o in una sottoscrizione) e non importa un server che lo richiede.
Funzioni supportate
| Funzione | Supportata |
|---|---|
Link ss:// SIP002 |
✅ Compresa la vecchia forma Base64 |
| Plugin SIP003 | Solo i plugin integrati |
| SIP003u (UDP tramite un plugin) | ❌ |
| Cifrature AEAD (SIP004) | ✅ |
| Configurazione online SIP008 | ✅ |
| Cifrature 2022 SIP022 | ✅ TCP e UDP |
| Intestazioni di identità multiutente SIP023 | ✅ Per le cifrature AES 2022 |
| Cifrature stream | ✅ Vedi Cifrature |
| UDP-over-TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |
Alcune funzioni di shadowsocks-rust sono impostazioni del suo programma client, sslocal, e Potatso svolge lo stesso compito a modo suo:
- Server locali SOCKS5, HTTP, tunnel, redir, DNS e TUN: Potatso cattura da sé il traffico del tuo dispositivo.
- Elenchi di controllo degli accessi (ACL): usa le regole del tuo profilo.
- Scegliere il più veloce tra più server: usa un gruppo proxy nel tuo profilo.
Link ss://
Un link ss:// contiene un intero server in una riga (SIP002):
ss://userinfo@host:port/?plugin=…#name| Parte | Descrizione |
|---|---|
userinfo |
La cifratura e la password come cipher:password, codificate in Base64 o con percent-encoding. Una cifratura 2022 deve usare la forma con percent-encoding. |
host |
Indirizzo del server. Metti un indirizzo IPv6 tra parentesi quadre, come [2001:db8::1]. |
port |
Porta del server. |
plugin |
Facoltativo. Il nome del plugin e le sue opzioni, separati da punti e virgola e con percent-encoding, come simple-obfs;obfs=tls;obfs-host=cdn.example.com. |
name |
Facoltativo. Il nome del server in Potatso. |
Potatso importa anche la vecchia forma, in cui tutto ciò che precede il # è codificato in Base64:
ss://base64(cipher:password@host:port)#namePotatso accetta Base64 standard e URL-safe, con o senza il padding =. Quando Potatso condivide un server, offre le forme Base64 e con percent-encoding di SIP002 e la vecchia forma.
Esempi
Ogni esempio mostra il link da importare. La password negli esempi AEAD è secret.
Un server semplice con aes-256-gcm:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#BasicUn server 2022 con la chiave di 16 byte MTIzNDU2Nzg5MDEyMzQ1Ng==:
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022Un server 2022 con più utenti, con la chiave del server e la chiave utente separate da due punti (%3A):
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-userSimple Obfs con TLS, usando cdn.example.com come nome del server:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#ObfsLa vecchia forma del server semplice:
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#LegacyUn server con un indirizzo IPv6:
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6