Ein Trojan-Server wird durch ein Passwort und seine TLS-Einstellungen beschrieben, optional ergänzt um einen Transport, der die Verbindung trägt, etwa WebSocket oder gRPC. Trojan läuft immer innerhalb von TLS (oder REALITY), sodass die Verbindung für Beobachter wie ein gewöhnlicher HTTPS-Besuch aussieht. Potatso verbindet sich mit einem Server, wenn es dessen Transport und TLS-Einstellungen unterstützt. Prüfe anhand der Tabellen unten die Einstellungen deines Servers, wie dein Anbieter sie angibt oder wie sie in seinem trojan://-Link stehen.
Einen Trojan-Server kannst du von Hand, mit einem trojan://-Link oder per Import hinzufügen:
- eines Clash- oder Mihomo-Abonnements,
- einer Xray- oder V2Ray-Konfiguration,
- einer Surge-Konfiguration.
Potatso importiert Trojan-Server noch nicht aus einer sing-box-Konfiguration. Nutze stattdessen den trojan://-Link des Servers.
Transporte
| Transport | Link-type |
Unterstützt | Getestet mit |
|---|---|---|---|
| Nur TLS (kein Transport) | tcp oder keiner |
✅ | Xray, sing-box, trojan-go |
| WebSocket | ws |
✅ Mit oder ohne Early Data | Xray, sing-box, trojan-go |
| gRPC | grpc |
✅ | Xray, sing-box |
| HTTP/2 | http oder h2 |
✅ | sing-box |
| HTTP Upgrade | httpupgrade |
✅ | Xray, sing-box |
| XHTTP | xhttp |
❌ | |
| mKCP, QUIC | kcp, quic |
❌ |
Jeder Transport funktioniert mit UDP. Potatso importiert keinen Server, dessen Transport es nicht unterstützt.
Xray bietet HTTP/2 nicht mehr an: Xray-Server, die es nutzten, verwenden jetzt XHTTP, das Potatso noch nicht unterstützt.
TLS
| Einstellung | Clash-Schlüssel | Link-Parameter | Unterstützt |
|---|---|---|---|
| Servername (SNI) | sni |
sni, peer |
✅ Ohne Angabe verwendet Potatso die Adresse des Servers. |
| ALPN | alpn |
alpn |
✅ Ohne Angabe sendet Potatso h2, http/1.1, bei WebSocket und HTTP Upgrade http/1.1 und bei gRPC und HTTP/2 h2. |
| Zertifikatsprüfung überspringen | skip-cert-verify |
allowInsecure, insecure |
✅ |
| Zertifikat-Pinning (SHA-256) | fingerprint |
✅ | |
| Browser-Fingerabdruck | client-fingerprint |
fp |
✅ chrome, firefox, safari, ios, android, edge und random. Andere Namen verbinden mit einem Standard-Handshake. |
| REALITY | reality-opts |
security=reality, pbk, sid |
✅ Ohne Transport oder mit gRPC |
| Encrypted Client Hello (ECH) | ech-opts |
ech |
✅ Mit der ECH-Konfiguration im Link oder Abonnement |
| Eigenes CA-Zertifikat | ❌ | ||
| TLS-Clientzertifikat | certificate, private-key |
❌ |
Schaltest du die Zertifikatsprüfung aus, kann jeder zwischen dir und dem Server deinen Datenverkehr mitlesen. Pinne stattdessen das Zertifikat des Servers, wenn er ein selbstsigniertes nutzt: Setze den SHA-256 seines Zertifikats als Zertifikat-Pin.
Ein Browser-Fingerabdruck lässt den TLS-Handshake der Verbindung wie den dieses Browsers aussehen. Er ändert nicht, was der Server unterstützen muss.
REALITY
Ein REALITY-Server leiht sich das TLS-Zertifikat einer anderen Website und braucht daher kein eigenes. Setze den Reality-Public-Key und die Reality-Short-ID des Servers so, wie dein Anbieter sie angibt, und den Servernamen auf die Website, bei der sich der Server bedient. REALITY braucht einen Browser-Fingerabdruck: Haben dein Link oder deine Einstellungen keinen, verwendet Potatso chrome.
REALITY funktioniert ohne Transport und mit gRPC. Potatso importiert keinen REALITY-Server, der einen anderen Transport nutzt.
Multiplexing
Potatso kann mehrere Verbindungen über eine Trojan-Verbindung führen, mit dem Multiplexing von sing-box (smux, yamux oder h2mux), in einem Clash-Abonnement über smux festgelegt. Auf dem Server muss Multiplexing eingeschaltet sein. TCP und UDP funktionieren beide.
Das eigene Multiplexing von trojan-go (mux in einem trojan-go-Server) ist ein anderes Protokoll, das Potatso nicht unterstützt. Ein trojan-go-Server akzeptiert die Verbindungen von Potatso trotzdem auch ohne es.
UDP
Trojan trägt UDP über dieselbe TLS-Verbindung wie TCP. UDP ist wie in Clash standardmäßig aus. Schalte UDP-Relay in den Servereinstellungen ein, wenn dein Server UDP weiterleitet: Xray, sing-box und trojan-go tun das alle. Ein Clash-Abonnement schaltet es mit udp: true ein.
Funktionsunterstützung
| Funktion | Unterstützt |
|---|---|
Trojan-Protokoll: Passwort-Hash, CONNECT |
✅ |
Trojan UDP ASSOCIATE |
✅ |
Trojan ohne TLS (security=none) |
❌ |
| Mehrere Benutzer auf einem Server | ✅ Jeder mit eigenem Passwort |
| Transporte WebSocket, gRPC, HTTP/2 und HTTP Upgrade | ✅ Siehe Transporte |
| Transporte XHTTP, mKCP und QUIC | ❌ |
| REALITY | ✅ Ohne Transport oder mit gRPC |
| ECH | ✅ |
| Multiplexing von sing-box (smux, yamux, h2mux) | ✅ |
| Multiplexing von trojan-go | ❌ |
Shadowsocks-Verschlüsselung von trojan-go (ss-opts, encryption=ss;…) |
❌ |
| ShadowTLS, Restls oder JLS um Trojan | ❌ |
trojan://- und trojan-go://-Links |
✅ |
Jede unterstützte Funktion ist gegen mindestens einen echten Trojan-Server getestet: Xray, sing-box oder trojan-go.
Bei einem falschen Passwort antwortet ein Trojan-Server wie eine gewöhnliche Website (sein Fallback). Potatso kann dann nicht verbinden und zeigt keinen Passwortfehler an: Prüfe zuerst das Passwort, wenn ein Trojan-Server nie verbindet.
Potatso importiert keinen Server, der die Shadowsocks-Verschlüsselung von trojan-go, ShadowTLS, Restls oder JLS um Trojan nutzt, da es ohne sie verbinden würde und der Server nicht antworten würde.
Einige Funktionen von trojan-go sind Einstellungen seines eigenen Client-Programms, und Potatso erledigt dieselbe Aufgabe auf seine Weise:
- Routing: Nutze Regeln in deinem Profil.
- Lokale SOCKS5- und HTTP-Server sowie Weiterleitung: Potatso erfasst den Datenverkehr deines Geräts selbst.
trojan://-Links
Ein trojan://-Link enthält einen ganzen Server in einer Zeile:
trojan://password@host:port?parameters#name| Teil | Beschreibung |
|---|---|
password |
Das Passwort, prozentkodiert. Alles vor dem @ ist das Passwort, einschließlich jedes :. |
host |
Serveradresse. Setze eine IPv6-Adresse in eckige Klammern, etwa [2001:db8::1]. |
port |
Serverport. Fehlt er, verwendet Potatso 443. |
name |
Optional. Der Name des Servers in Potatso. |
Die Parameter folgen dem Format, das Xray und v2rayN verwenden:
| Parameter | Beschreibung |
|---|---|
security |
tls (der Standard) oder reality. |
type |
Der Transport: tcp, ws, grpc, http (HTTP/2) oder httpupgrade. |
sni, peer |
Der TLS-Servername. |
alpn |
Die ALPN-Liste, durch Kommas getrennt und prozentkodiert. |
fp |
Der Browser-Fingerabdruck. |
allowInsecure |
1 schaltet die Zertifikatsprüfung aus. |
host |
Der HTTP-Host für WebSocket, HTTP/2 und HTTP Upgrade. |
path |
Der Pfad für WebSocket, HTTP/2 und HTTP Upgrade. Ein WebSocket-Pfad wie /ws?ed=2048 schaltet Early Data ein. |
serviceName |
Der gRPC-Dienstname. |
pbk, sid |
Der REALITY-Public-Key und die Short-ID. |
ech |
Die ECH-Konfiguration, Base64-kodiert und prozentkodiert. |
Potatso importiert auch trojan-go://-Links mit type=original (kein Transport) oder type=ws. Einen mit einem encryption-Parameter importiert es nicht, da dieser die Shadowsocks-Verschlüsselung von trojan-go braucht.
Wenn Potatso einen Trojan-Server teilt, bietet es einen trojan://-Link mit denselben Parametern an.
Beispiele
Jedes Beispiel zeigt den Link zum Importieren. Das Passwort ist secret.
Ein einfacher Server:
trojan://secret@trojan.example.com:443?sni=trojan.example.com#BasicWebSocket über cdn.example.com:
trojan://secret@trojan.example.com:443?security=tls&type=ws&host=cdn.example.com&path=%2Fws#WebSocketgRPC mit dem Dienstnamen TrojanGun:
trojan://secret@trojan.example.com:443?security=tls&type=grpc&serviceName=TrojanGun#gRPCHTTP/2:
trojan://secret@trojan.example.com:443?security=tls&type=http&host=cdn.example.com&path=%2Fh2#HTTP2HTTP Upgrade:
trojan://secret@trojan.example.com:443?security=tls&type=httpupgrade&host=cdn.example.com&path=%2Fup#UpgradeREALITY, bei www.example.com bedient:
trojan://secret@trojan.example.com:443?security=reality&sni=www.example.com&pbk=Z84J2IelR9ch3k8VtlVhhs5ycBUlXA7wHBWcBrjqnAw&sid=0123abcd&fp=chrome#REALITY