Un serveur Shadowsocks se décrit par un chiffrement et un mot de passe, et éventuellement un plug-in qui déguise la connexion. Potatso se connecte à un serveur lorsqu’il prend en charge le chiffrement et, le cas échéant, le plug-in. 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 ss://.
Vous pouvez ajouter un serveur Shadowsocks à la main, avec un lien ss://, ou en important :
- un abonnement Clash ou Mihomo,
- une configuration en ligne SIP008, depuis un fichier ou un lien,
- un
config.jsonshadowsocks-rust ou shadowsocks-libev, - une configuration Surge, ou une configuration Xray ou V2Ray.
Chiffrements
Préférez un chiffrement 2022 si votre serveur en propose un, puis un chiffrement AEAD. Les chiffrements de flux ont des faiblesses connues : ne les utilisez qu’avec des serveurs qui n’offrent rien d’autre.
| Chiffrement | Type | Pris en charge |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ Avec multi-utilisateur |
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 |
Flux | ✅ |
aes-128-cfb, aes-192-cfb, aes-256-cfb (aussi écrit -cfb128) |
Flux | ✅ |
aes-128-cfb1, aes-192-cfb1, aes-256-cfb1 |
Flux | ✅ |
aes-128-cfb8, aes-192-cfb8, aes-256-cfb8 |
Flux | ✅ |
aes-128-ofb, aes-192-ofb, aes-256-ofb |
Flux | ✅ |
camellia-128-ctr, camellia-192-ctr, camellia-256-ctr |
Flux | ✅ |
camellia-128-cfb, camellia-192-cfb, camellia-256-cfb (aussi écrit -cfb128) |
Flux | ✅ |
camellia-128-cfb1, camellia-192-cfb1, camellia-256-cfb1 |
Flux | ✅ |
camellia-128-cfb8, camellia-192-cfb8, camellia-256-cfb8 |
Flux | ✅ |
camellia-128-ofb, camellia-192-ofb, camellia-256-ofb |
Flux | ✅ |
chacha20-ietf, chacha20, salsa20 |
Flux | ✅ |
bf-cfb, rc4-md5, rc4, table |
Flux | ✅ |
none (aussi écrit plain) |
Sans chiffrement | ✅ |
cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb, rc4-md5-6 |
Flux | ❌ ShadowsocksR uniquement |
xchacha20, xsalsa20 |
Flux | ❌ |
Les noms ne sont pas sensibles à la casse : AES-256-GCM fonctionne donc comme aes-256-gcm.
none envoie votre trafic sans chiffrement. Ne l’utilisez qu’avec un plug-in qui chiffre lui-même la connexion, comme v2ray-plugin avec TLS.
Chaque chiffrement pris en charge est testé avec au moins un vrai serveur Shadowsocks : shadowsocks-rust, sing-box ou le serveur Python d’origine. Parmi les chiffrements AEAD ci-dessus, seuls les serveurs shadowsocks-rust proposent aes-*-ccm, aes-*-gcm-siv et sm4-*, et peu de fournisseurs les utilisent.
Clés 2022
Les chiffrements 2022 (SIP022) n’utilisent pas de mot de passe. Ils utilisent une clé : des octets aléatoires, encodés en Base64, de la longueur dont le chiffrement a besoin. 2022-blake3-aes-128-gcm demande une clé de 16 octets et les autres chiffrements 2022 une clé de 32 octets. Utilisez la clé exactement telle que votre serveur l’a.
Potatso ne se connecte pas avec une clé de mauvaise longueur, ni avec un mot de passe qui n’est pas en Base64. Pour créer une nouvelle clé pour votre serveur, exécutez openssl rand -base64 16 pour 2022-blake3-aes-128-gcm, ou openssl rand -base64 32 pour les autres chiffrements 2022.
Serveurs multi-utilisateurs
Un serveur 2022 peut partager un port entre plusieurs utilisateurs (SIP023). Chaque utilisateur a sa propre clé. Pour ces serveurs, réglez le mot de passe sur la clé du serveur et votre clé d’utilisateur, séparées par deux-points :
server-key:user-keySeuls 2022-blake3-aes-128-gcm et 2022-blake3-aes-256-gcm prennent en charge les serveurs multi-utilisateurs.
Plug-ins
Un plug-in enveloppe la connexion Shadowsocks pour la rendre plus difficile à détecter. Potatso intègre ces plug-ins : il n’y a rien d’autre à installer.
| Plug-in | Noms du plug-in | Pris en charge | UDP |
|---|---|---|---|
| Simple Obfs | obfs-local, simple-obfs, obfs |
✅ obfs=http et obfs=tls |
Envoyé au serveur sans le plug-in |
| v2ray-plugin | v2ray-plugin |
✅ WebSocket, avec ou sans TLS. Le mode QUIC n’est pas pris en charge. | ❌ |
| gost-plugin | gost-plugin |
✅ WebSocket, avec ou sans TLS | ❌ |
| ShadowTLS | shadow-tls |
✅ Versions 1, 2 et 3 | ❌ |
| Restls | restls |
✅ | ❌ |
| JLS | jls |
✅ | ❌ |
Potatso n’importe pas un serveur qui exige un autre plug-in :
- Cloak, xray-plugin et les autres plug-ins sont des programmes que votre appareil devrait exécuter à côté de Potatso, ce qu’iOS n’autorise pas.
- kcptun et ech-tls-tunnel ne sont pas encore disponibles dans Potatso.
Définir un plug-in
Dans les réglages du serveur, choisissez le plug-in sous Plug-in, puis saisissez ses options dans Paramètre du plug-in. Les options sont des paires clé=valeur séparées par des points-virgules, comme dans cet exemple Simple Obfs :
obfs=tls;obfs-host=cdn.example.comUne clé seule, comme tls, active cette option. Omettez toute option dont vous n’avez pas besoin ; les tableaux ci-dessous donnent chaque valeur par défaut.
Quand vous importez un serveur, Potatso définit le plug-in et ses options pour vous :
- Un lien
ss://les transporte dans son paramètreplugin, après le nom du plug-in :simple-obfs;obfs=tls;obfs-host=cdn.example.com. - Un abonnement Clash ou Mihomo les transporte dans
pluginetplugin-opts. - Une configuration SIP008 ou un
config.jsonshadowsocks-rust ou shadowsocks-libev les transporte danspluginetplugin_opts.
Ce sont les mêmes options sous toutes les formes. Si votre fournisseur les liste une par ligne, comme dans un plugin-opts Clash, écrivez chacune sous la forme clé=valeur et joignez-les par des points-virgules.
Options des plug-ins
Simple Obfs
| Option | Description |
|---|---|
obfs |
Obligatoire. http ou tls. |
obfs-host |
L’en-tête Host (http) ou le nom du serveur envoyé lors de la négociation TLS (tls). Vide, Potatso utilise l’adresse du serveur. |
obfs-uri |
http uniquement. Le chemin de la requête. Par défaut /. |
http-method |
http uniquement. La méthode de la requête. Par défaut GET. |
v2ray-plugin
| Option | Description |
|---|---|
mode |
websocket, la valeur par défaut. Le mode QUIC n’est pas pris en charge. |
tls |
Se connecte via TLS. Désactivé par défaut. |
host |
L’en-tête Host, et le nom du serveur pour TLS. Vide, Potatso utilise l’adresse du serveur. |
path |
Le chemin WebSocket. Par défaut /. |
mux |
Multiplexage. Désactivé par défaut. Activez-le uniquement si votre serveur l’utilise. |
skip-cert-verify |
Accepte n’importe quel certificat de serveur. À utiliser uniquement avec un serveur de confiance. |
header |
Un en-tête de requête supplémentaire, sous la forme header=Nom:Valeur. Répétez-le pour d’autres en-têtes. |
gost-plugin
| Option | Description |
|---|---|
mode |
Obligatoire. websocket. |
tls |
Se connecte via TLS. Désactivé par défaut. |
host |
L’en-tête Host, et le nom du serveur pour TLS. Par défaut bing.com, comme dans gost. |
path |
Le chemin WebSocket. Par défaut /. |
mux |
Multiplexage. Activé par défaut. |
skip-cert-verify |
Accepte n’importe quel certificat de serveur. À utiliser uniquement avec un serveur de confiance. |
fingerprint |
L’empreinte SHA-256 du certificat du serveur, pour n’accepter que ce certificat. |
header |
Un en-tête de requête supplémentaire, sous la forme header=Nom:Valeur. Répétez-le pour d’autres en-têtes. |
ShadowTLS
| Option | Description |
|---|---|
host |
Obligatoire. Le nom du serveur du site de couverture, comme www.example.com. |
version |
Obligatoire. 1, 2 ou 3. |
password |
Le mot de passe. Les versions 2 et 3 en ont besoin. |
alpn |
La liste ALPN, séparée par des virgules. Par défaut h2,http/1.1. |
skip-cert-verify |
Accepte n’importe quel certificat du site de couverture. |
Restls
| Option | Description |
|---|---|
host |
Obligatoire. Le nom du serveur du site de couverture. |
password |
Obligatoire. Le mot de passe. |
version-hint |
Obligatoire. tls13 ou tls12, selon la configuration de votre serveur. |
restls-script |
Le script d’enregistrements, si votre fournisseur en donne un. |
JLS
| Option | Description |
|---|---|
host |
Obligatoire. Le nom du serveur du site de couverture. |
username |
Obligatoire. Le nom d’utilisateur. |
password |
Obligatoire. Le mot de passe. |
alpn |
La liste ALPN, séparée par des virgules. Par défaut h2,http/1.1. |
Potatso ne se connecte pas à un serveur quand une option obligatoire manque ou qu’une valeur n’est pas valide.
UDP
L’UDP est activé par défaut pour les serveurs Shadowsocks et fonctionne avec tous les chiffrements pris en charge. Désactivez-le dans les réglages du serveur si votre serveur ne relaie pas l’UDP.
L’UDP n’est pas envoyé via un plug-in : avec un plug-in autre que Simple Obfs, le serveur ne transporte donc que du TCP. Potatso ne prend pas en charge l’UDP sur TCP (udp-over-tcp ou uot dans un lien ou un abonnement) et n’importe pas un serveur qui l’exige.
Fonctionnalités prises en charge
| Fonctionnalité | Pris en charge |
|---|---|
Liens ss:// SIP002 |
✅ Y compris l’ancienne forme Base64 |
| Plug-ins SIP003 | Uniquement les plug-ins intégrés |
| SIP003u (UDP via un plug-in) | ❌ |
| Chiffrements AEAD (SIP004) | ✅ |
| Configuration en ligne SIP008 | ✅ |
| Chiffrements 2022 SIP022 | ✅ TCP et UDP |
| En-têtes d’identité multi-utilisateurs SIP023 | ✅ Pour les chiffrements AES 2022 |
| Chiffrements de flux | ✅ Voir Chiffrements |
| UDP sur TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |
Certaines fonctionnalités de shadowsocks-rust sont des réglages de son propre programme client, sslocal, et Potatso fait le même travail à sa façon :
- Serveurs locaux SOCKS5, HTTP, tunnel, redir, DNS et TUN : Potatso capture lui-même le trafic de votre appareil.
- Listes de contrôle d’accès (ACL) : utilisez les règles de votre profil.
- Choisir le plus rapide de plusieurs serveurs : utilisez un groupe de proxys dans votre profil.
Liens ss://
Un lien ss:// contient un serveur entier sur une ligne (SIP002) :
ss://userinfo@host:port/?plugin=…#name| Partie | Description |
|---|---|
userinfo |
Le chiffrement et le mot de passe sous la forme chiffrement:mot de passe, encodés en Base64 ou en pourcentage. Un chiffrement 2022 doit utiliser la forme encodée en pourcentage. |
host |
Adresse du serveur. Placez une adresse IPv6 entre crochets, comme [2001:db8::1]. |
port |
Port du serveur. |
plugin |
Facultatif. Le nom du plug-in et ses options, séparés par des points-virgules et encodés en pourcentage, comme simple-obfs;obfs=tls;obfs-host=cdn.example.com. |
name |
Facultatif. Le nom du serveur dans Potatso. |
Potatso importe aussi l’ancienne forme, où tout ce qui précède le # est encodé en Base64 :
ss://base64(cipher:password@host:port)#namePotatso accepte le Base64 standard et le Base64 compatible URL, avec ou sans remplissage =. Quand Potatso partage un serveur, il propose les formes Base64 et encodée en pourcentage de SIP002 ainsi que l’ancienne forme.
Exemples
Chaque exemple montre le lien à importer. Le mot de passe dans les exemples AEAD est secret.
Un serveur de base avec aes-256-gcm :
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#BasicUn serveur 2022 avec la clé de 16 octets MTIzNDU2Nzg5MDEyMzQ1Ng== :
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022Un serveur 2022 multi-utilisateurs, avec la clé du serveur et la clé de l’utilisateur séparées par deux-points (%3A) :
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-userSimple Obfs avec TLS, en utilisant cdn.example.com comme nom de serveur :
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#ObfsL’ancienne forme du serveur de base :
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#LegacyUn serveur avec une adresse IPv6 :
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6