Ein Shadowsocks-Server wird durch eine Verschlüsselung und ein Passwort beschrieben, optional ergänzt um ein Plug-in, das die Verbindung tarnt. Potatso verbindet sich mit einem Server, wenn es die Verschlüsselung und, falls vorhanden, das Plug-in unterstützt. Prüfe anhand der Tabellen unten die Einstellungen deines Servers, wie dein Anbieter sie angibt oder wie sie in seinem ss://-Link stehen.
Einen Shadowsocks-Server kannst du von Hand, mit einem ss://-Link oder per Import hinzufügen:
- eines Clash- oder Mihomo-Abonnements,
- einer SIP008-Online-Konfiguration aus einer Datei oder über einen Link,
- einer
config.jsonvon shadowsocks-rust oder shadowsocks-libev, - einer Surge-Konfiguration oder einer Xray- oder V2Ray-Konfiguration.
Verschlüsselungen
Bevorzuge eine 2022-Verschlüsselung, wenn dein Server sie anbietet, danach eine AEAD-Verschlüsselung. Stream-Verschlüsselungen haben bekannte Schwächen: Nutze sie nur mit Servern, die nichts anderes anbieten.
| Verschlüsselung | Art | Unterstützt |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ Mit Mehrbenutzer |
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 (auch als -cfb128 geschrieben) |
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 (auch als -cfb128 geschrieben) |
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 (auch als plain geschrieben) |
Keine Verschlüsselung | ✅ |
cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb, rc4-md5-6 |
Stream | ❌ Nur ShadowsocksR |
xchacha20, xsalsa20 |
Stream | ❌ |
Die Namen unterscheiden nicht zwischen Groß- und Kleinschreibung, AES-256-GCM funktioniert also genauso wie aes-256-gcm.
none sendet deinen Datenverkehr unverschlüsselt. Nutze es nur mit einem Plug-in, das die Verbindung selbst verschlüsselt, etwa v2ray-plugin mit TLS.
Jede unterstützte Verschlüsselung ist gegen mindestens einen echten Shadowsocks-Server getestet: shadowsocks-rust, sing-box oder den ursprünglichen Python-Server. Von den oben genannten AEAD-Verschlüsselungen bieten nur shadowsocks-rust-Server aes-*-ccm, aes-*-gcm-siv und sm4-* an, und nur wenige Anbieter nutzen sie.
2022-Schlüssel
Die 2022-Verschlüsselungen (SIP022) verwenden kein Passwort. Sie verwenden einen Schlüssel: zufällige Bytes, Base64-kodiert, in der Länge, die die Verschlüsselung braucht. 2022-blake3-aes-128-gcm braucht einen 16-Byte-Schlüssel und die anderen 2022-Verschlüsselungen einen 32-Byte-Schlüssel. Verwende den Schlüssel genau so, wie dein Server ihn hat.
Potatso verbindet nicht mit einem Schlüssel der falschen Länge oder mit einem Passwort, das nicht Base64 ist. Um einen neuen Schlüssel für deinen Server zu erzeugen, führe openssl rand -base64 16 für 2022-blake3-aes-128-gcm oder openssl rand -base64 32 für die anderen 2022-Verschlüsselungen aus.
Mehrbenutzer-Server
Ein 2022-Server kann einen Port auf mehrere Benutzer aufteilen (SIP023). Jeder Benutzer hat einen eigenen Schlüssel. Setze bei diesen Servern das Passwort auf den Serverschlüssel und deinen Benutzerschlüssel, getrennt durch einen Doppelpunkt:
server-key:user-keyNur 2022-blake3-aes-128-gcm und 2022-blake3-aes-256-gcm unterstützen Mehrbenutzer-Server.
Plug-ins
Ein Plug-in umhüllt die Shadowsocks-Verbindung, damit sie schwerer zu erkennen ist. Potatso hat diese Plug-ins eingebaut, du musst also nichts weiter installieren.
| Plug-in | Plug-in-Namen | Unterstützt | UDP |
|---|---|---|---|
| Simple Obfs | obfs-local, simple-obfs, obfs |
✅ obfs=http und obfs=tls |
Wird ohne das Plug-in an den Server gesendet |
| v2ray-plugin | v2ray-plugin |
✅ WebSocket, mit oder ohne TLS. Der QUIC-Modus wird nicht unterstützt. | ❌ |
| gost-plugin | gost-plugin |
✅ WebSocket, mit oder ohne TLS | ❌ |
| ShadowTLS | shadow-tls |
✅ Versionen 1, 2 und 3 | ❌ |
| Restls | restls |
✅ | ❌ |
| JLS | jls |
✅ | ❌ |
Potatso importiert keinen Server, der ein anderes Plug-in braucht:
- Cloak, xray-plugin und andere Plug-ins sind Programme, die dein Gerät neben Potatso ausführen müsste, was iOS nicht erlaubt.
- kcptun und ech-tls-tunnel sind in Potatso noch nicht verfügbar.
Ein Plug-in einstellen
Wähle in den Servereinstellungen das Plug-in unter Plug-in und gib seine Optionen unter Plug-in-Parameter ein. Optionen sind key=value-Paare, durch Semikolons getrennt, wie in diesem Simple-Obfs-Beispiel:
obfs=tls;obfs-host=cdn.example.comEin einzelner Schlüssel wie tls schaltet diese Option ein. Lass jede Option weg, die du nicht brauchst; die Tabellen unten nennen den jeweiligen Standard.
Beim Import eines Servers stellt Potatso das Plug-in und seine Optionen für dich ein:
- Ein
ss://-Link trägt sie im Parameterpluginnach dem Plug-in-Namen:simple-obfs;obfs=tls;obfs-host=cdn.example.com. - Ein Clash- oder Mihomo-Abonnement trägt sie in
pluginundplugin-opts. - Eine SIP008-Konfiguration oder eine
config.jsonvon shadowsocks-rust oder shadowsocks-libev trägt sie inpluginundplugin_opts.
Das sind in jeder Form dieselben Optionen. Listet dein Anbieter sie zeilenweise auf, wie in einem Clash-plugin-opts, schreibe jede als key=value und verbinde sie mit Semikolons.
Plug-in-Optionen
Simple Obfs
| Option | Beschreibung |
|---|---|
obfs |
Erforderlich. http oder tls. |
obfs-host |
Der Host-Header (http) oder der im TLS-Handshake gesendete Servername (tls). Ist er leer, verwendet Potatso die Adresse des Servers. |
obfs-uri |
Nur http. Der Anfragepfad. Standard /. |
http-method |
Nur http. Die Anfragemethode. Standard GET. |
v2ray-plugin
| Option | Beschreibung |
|---|---|
mode |
websocket, der Standard. Der QUIC-Modus wird nicht unterstützt. |
tls |
Verbindet über TLS. Standardmäßig aus. |
host |
Der Host-Header und der Servername für TLS. Ist er leer, verwendet Potatso die Adresse des Servers. |
path |
Der WebSocket-Pfad. Standard /. |
mux |
Multiplexing. Standardmäßig aus. Schalte es nur ein, wenn dein Server es nutzt. |
skip-cert-verify |
Akzeptiert jedes Serverzertifikat. Nutze es nur mit einem Server, dem du vertraust. |
header |
Ein zusätzlicher Anfrage-Header, als header=Name:Value. Wiederhole es für weitere Header. |
gost-plugin
| Option | Beschreibung |
|---|---|
mode |
Erforderlich. websocket. |
tls |
Verbindet über TLS. Standardmäßig aus. |
host |
Der Host-Header und der Servername für TLS. Standard bing.com, wie in gost. |
path |
Der WebSocket-Pfad. Standard /. |
mux |
Multiplexing. Standardmäßig an. |
skip-cert-verify |
Akzeptiert jedes Serverzertifikat. Nutze es nur mit einem Server, dem du vertraust. |
fingerprint |
Der SHA-256-Fingerabdruck des Serverzertifikats, um nur dieses Zertifikat zu akzeptieren. |
header |
Ein zusätzlicher Anfrage-Header, als header=Name:Value. Wiederhole es für weitere Header. |
ShadowTLS
| Option | Beschreibung |
|---|---|
host |
Erforderlich. Der Servername der Tarn-Website, etwa www.example.com. |
version |
Erforderlich. 1, 2 oder 3. |
password |
Das Passwort. Die Versionen 2 und 3 brauchen es. |
alpn |
Die ALPN-Liste, durch Kommas getrennt. Standard h2,http/1.1. |
skip-cert-verify |
Akzeptiert jedes Zertifikat der Tarn-Website. |
Restls
| Option | Beschreibung |
|---|---|
host |
Erforderlich. Der Servername der Tarn-Website. |
password |
Erforderlich. Das Passwort. |
version-hint |
Erforderlich. tls13 oder tls12, je nachdem, wie dein Server eingerichtet ist. |
restls-script |
Das Record-Skript, falls dein Anbieter eines angibt. |
JLS
| Option | Beschreibung |
|---|---|
host |
Erforderlich. Der Servername der Tarn-Website. |
username |
Erforderlich. Der Benutzername. |
password |
Erforderlich. Das Passwort. |
alpn |
Die ALPN-Liste, durch Kommas getrennt. Standard h2,http/1.1. |
Potatso verbindet nicht mit einem Server, wenn eine erforderliche Option fehlt oder ein Wert ungültig ist.
UDP
UDP ist bei Shadowsocks-Servern standardmäßig an und funktioniert mit jeder unterstützten Verschlüsselung. Schalte es in den Servereinstellungen aus, wenn dein Server UDP nicht weiterleitet.
UDP wird nicht durch ein Plug-in gesendet, daher trägt der Server mit einem anderen Plug-in als Simple Obfs nur TCP. Potatso unterstützt kein UDP-over-TCP (udp-over-tcp oder uot in einem Link oder Abonnement) und importiert keinen Server, der es verlangt.
Funktionsunterstützung
| Funktion | Unterstützt |
|---|---|
SIP002-ss://-Links |
✅ Einschließlich der älteren Base64-Form |
| SIP003-Plug-ins | Nur die integrierten Plug-ins |
| SIP003u (UDP über ein Plug-in) | ❌ |
| AEAD-Verschlüsselungen (SIP004) | ✅ |
| SIP008-Online-Konfiguration | ✅ |
| SIP022-2022-Verschlüsselungen | ✅ TCP und UDP |
| SIP023-Mehrbenutzer-Identitäts-Header | ✅ Für die AES-2022-Verschlüsselungen |
| Stream-Verschlüsselungen | ✅ Siehe Verschlüsselungen |
| UDP-over-TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |
Einige Funktionen von shadowsocks-rust sind Einstellungen seines eigenen Client-Programms sslocal, und Potatso erledigt dieselbe Aufgabe auf seine Weise:
- Lokale SOCKS5-, HTTP-, Tunnel-, Redir-, DNS- und TUN-Server: Potatso erfasst den Datenverkehr deines Geräts selbst.
- Zugriffskontrolllisten (ACL): Nutze Regeln in deinem Profil.
- Den schnellsten von mehreren Servern wählen: Nutze eine Proxy-Gruppe in deinem Profil.
ss://-Links
Ein ss://-Link enthält einen ganzen Server in einer Zeile (SIP002):
ss://userinfo@host:port/?plugin=…#name| Teil | Beschreibung |
|---|---|
userinfo |
Die Verschlüsselung und das Passwort als cipher:password, entweder Base64-kodiert oder prozentkodiert. Eine 2022-Verschlüsselung muss die prozentkodierte Form verwenden. |
host |
Serveradresse. Setze eine IPv6-Adresse in eckige Klammern, etwa [2001:db8::1]. |
port |
Serverport. |
plugin |
Optional. Der Plug-in-Name und seine Optionen, durch Semikolons getrennt und prozentkodiert, etwa simple-obfs;obfs=tls;obfs-host=cdn.example.com. |
name |
Optional. Der Name des Servers in Potatso. |
Potatso importiert auch die ältere Form, in der alles vor dem # Base64-kodiert ist:
ss://base64(cipher:password@host:port)#namePotatso akzeptiert Standard- und URL-sicheres Base64, mit oder ohne =-Auffüllung. Wenn Potatso einen Server teilt, bietet es die Base64- und prozentkodierten Formen von SIP002 sowie die ältere Form an.
Beispiele
Jedes Beispiel zeigt den Link zum Importieren. Das Passwort in den AEAD-Beispielen ist secret.
Ein einfacher Server mit aes-256-gcm:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#BasicEin 2022-Server mit dem 16-Byte-Schlüssel MTIzNDU2Nzg5MDEyMzQ1Ng==:
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022Ein 2022-Mehrbenutzer-Server, mit Serverschlüssel und Benutzerschlüssel, getrennt durch einen Doppelpunkt (%3A):
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-userSimple Obfs mit TLS, mit cdn.example.com als Servername:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#ObfsDie ältere Form des einfachen Servers:
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#LegacyEin Server mit einer IPv6-Adresse:
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6