Protocols

Auswahl zwischen HTTP-, HTTPS-, SOCKS4- und SOCKS5-Proxys

3 min read Published Updated 540 words

Die vier als „Proxy“ bezeichneten Protokolle haben außer dem Namen wenig gemeinsam. HTTP-Proxys parsen Schicht 7 und schreiben Header um; SOCKS-Proxys lesen Ihren Datenverkehr überhaupt nicht. Diese Unterscheidung bestimmt, welcher Proxy fürs Browsen, Scraping und reines Tunneln geeignet ist.

HTTP-Proxy

Ein HTTP-Proxy erwartet HTTP-Semantik. Er öffnet die Anfrage, liest die URL, kann Header wie Via oder X-Forwarded-For anhängen und lehnt alles ab, was keine gültige HTTP-Anfrage ist. Browser, curl und die meisten Scraping-Bibliotheken verwenden standardmäßig HTTP-Proxys, da die Konfiguration im Wesentlichen kostenlos ist – setzen Sie eine einzelne Umgebungsvariable oder übergeben Sie ein Flag.

Der Preis dieser Einfachheit ist die Sichtbarkeit. Der Proxy sieht die vollständige URL inklusive Pfad und Query-String, und bei unverschlüsseltem HTTP auch den Body. Caching-Proxys können Antworten umschreiben; transparente Proxys können Cookies entfernen. Behandeln Sie jeden HTTP-Proxy als voll privilegierten Mittelsmann und senden Sie niemals Anmeldedaten über Klartext.

HTTPS-Proxy und die CONNECT-Methode

„HTTPS-Proxy“ ist eine etwas irreführende Bezeichnung. Gemeint ist ein HTTP-Proxy, der zusätzlich die CONNECT-Methode implementiert. CONNECT weist den Proxy an, einen rohen TCP-Tunnel zu einem Zielhost zu öffnen und Bytes in beide Richtungen zu transportieren; Client und Ziel handeln dann TLS aus, als wäre der Proxy nicht vorhanden. Der Proxy sieht Zielhost und -port sowie das Datenvolumen, aber nicht die Nutzlast.

Ein „HTTPS-fähiger“ Proxy ist also ein Proxy, der TLS-Tunneling unterstützt, nicht ein Proxy, der selbst über TLS läuft. Die Verbindung von Ihrem Rechner zum Proxy kann unabhängig voneinander als Klartext oder verschlüsselt erfolgen. Wenn Ihnen der Schutz dieser Verbindung wichtig ist, verwenden Sie eine SOCKS5-over-TLS-Implementierung oder einen kostenpflichtigen kommerziellen Proxy, der seinen TLS-Endpunkt veröffentlicht.

SOCKS4

SOCKS4 ist das Minimum von 1994: nur TCP, nur IPv4, kein UDP, kein IPv6, keine Authentifizierung, keine Hostnamenauflösung am Proxy. Der Handshake besteht aus sechs Bytes plus einem Ein-Byte-Antwortcode. Es überlebt im Einsatz, weil das Protokoll so klein ist, dass fast jedes TCP-fähige Tool es korrekt implementieren kann. Wenn ein Verzeichnis SOCKS4 anbietet, erwarten Sie rohes TCP-Forwarding an eine IPv4-Adresse – und sonst nichts.

SOCKS5

SOCKS5, definiert in RFC 1928 (1996), ist die Version, die die meisten modernen Tools sprechen. Es fügt UDP-Forwarding, IPv6-Adressen, GSSAPI-Authentifizierung und die Möglichkeit hinzu, Hostnamen am Proxy statt am Client aufzulösen. Da SOCKS5 keine Annahmen über die darüberliegende Anwendungsschicht trifft, ist es die flexibelste Wahl für Nicht-HTTP-Workloads: SSH, IRC, BitTorrent, benutzerdefinierte RPCs.

Leistung und Overhead

SOCKS-Proxys haben einen geringeren Overhead pro Anfrage, da sie nichts parsen. HTTP- und HTTPS-Proxys zahlen für das vollständige Parsen jeder Anfrage bei jeder Verbindung. Für eine einzelne langlebige TLS-Sitzung innerhalb von CONNECT ist der Unterschied vernachlässigbar. Bei Tausenden von kurzen Anfragen, bei denen der Proxy jedes Mal eine neue Verbindung öffnet, gewinnt SOCKS5 messbar – typischerweise 2–5 ms pro Anfrage für den Parsing-Pfad.

Anonymität in der Praxis

Ein HTTP-Proxy, der Ihre Header nicht entfernt, kann Ihre Client-IP über Via, X-Forwarded-For oder Forwarded preisgeben. SOCKS-Proxys haben keine derartigen Header, da sie kein Konzept von Headern haben. Das ist weniger eine Anonymitätsfunktion als vielmehr das Fehlen einer Angriffsfläche für Lecks. Innerhalb von CONNECT-getunneltem HTTPS sieht das Ziel nur den TLS-Handshake, sodass ein HTTP-Level-Leck am Proxy irrelevant ist.

Port-Konventionen

Sie werden in diesem Verzeichnis Folgendes sehen: 80, 8080, 3128, 8888 für HTTP; 443 für Endpunkte, die CONNECT explizit unterstützen; 1080 für SOCKS. Viele Anbieter legen nicht standardmäßige hohe Ports (über 10.000) frei, um einfachem Port-Scanning zu entgehen. Die Portnummer sagt nichts über die Qualität aus – sie signalisiert nur, was der Betreiber freizugeben gewählt hat.