Protokolle · 1 Min Lesezeit

Die HTTP CONNECT-Methode erklärt

CONNECT ist die HTTP-Methode, die HTTPS über einen Proxy ermöglicht. Anstatt eine Seite abzurufen, bittet sie den Proxy, einen Roh-Tunnel zu einem Ziel zu öffnen, damit verschlüsselter Verkehr unberührt hindurchfließen kann. Dieser Leitfaden erklärt, wie CONNECT funktioniert, Schritt für Schritt.

Warum CONNECT existiert

Ein gewöhnlicher HTTP-Proxy funktioniert, indem er Ihre Anfrage liest, die Ressource abruft und sie zurückgibt – er sieht und leitet die gesamte Anfrage und Antwort weiter. Das ist in Ordnung für einfaches HTTP, aber es funktioniert nicht bei HTTPS: Der ganze Sinn von TLS ist, dass kein Mittelsmann den Verkehr lesen kann, sodass der Proxy nicht einfach "die Seite abrufen" kann, ohne die Verschlüsselung zu brechen.

The CONNECT method solves this. Instead of asking the proxy to retrieve something, your client asks the proxy to open a raw TCP tunnel to a host and port and then get out of the way. Once the tunnel is open, your client performs the TLS handshake directly with the destination through the proxy, and the proxy blindly relays the encrypted bytes in both directions. The proxy never sees the plaintext — it only sees an opaque stream and, via the CONNECT line and TLS SNI, the destination hostname. This is how the s4m HTTP proxy on port 3128 carries HTTPS.

Wie der Tunnel eingerichtet wird

Der Fluss ist kurz und spezifisch:

  1. Ihr Client sendet CONNECT example.com:443 HTTP/1.1 an den Proxy, mit einem Host-Header und, falls erforderlich, Proxy-Authorization-Anmeldeinformationen.
  2. Der Proxy öffnet eine TCP-Verbindung zu example.com:443.
  3. Wenn das erfolgreich ist, antwortet der Proxy mit HTTP/1.1 200 Verbindung hergestellt. Ab diesem Moment ist die Verbindung ein reiner Tunnel — keine HTTP-Semantik mehr.
  4. Ihr Client führt jetzt den TLS-Handshake direkt mit example.com über diesen Tunnel aus, und alle nachfolgenden Anwendungsdaten sind Ende-zu-Ende-verschlüsselt.

Zwei Konsequenzen folgen. Erstens bleibt TLS wirklich Ende-zu-Ende: der Proxy authentifiziert nichts und liest nichts im Tunnel, sodass die Zertifikatsvalidierung zwischen Ihrem Client und dem echten Server erfolgt. Zweitens, da CONNECT nur einen TCP-Tunnel öffnet, können Proxys prinzipiell andere TLS-basierte oder beliebige Protokolle auf anderen Ports tunneln — genau aus diesem Grund beschränken Proxys normalerweise CONNECT auf Port 443 (und einige andere), um zu vermeiden, ein offenes Relay zu werden.

Siehe CONNECT mit curl

curl sendet automatisch eine CONNECT-Anfrage für eine https:// URL über einen HTTP-Proxy. Verwenden Sie -v, um die CONNECT-Anfrage und die Antwort '200 Connection Established' zu beobachten.

bash
# Verbose: watch the CONNECT handshake to the proxy, then TLS to the site
curl -v -x http://USER:PASS@proxy.s4m.online:3128 https://example.com 2>&1 \
  | grep -Ei 'CONNECT|Connection established|SSL connection|Proxy-Auth'

# You'll see, in order:
#   > CONNECT example.com:443 HTTP/1.1        (client asks for a tunnel)
#   < HTTP/1.1 200 Connection established     (proxy opened the tunnel)
#   * SSL connection using TLSv1.3 ...        (TLS is end-to-end, past proxy)

# Contrast: plain HTTP needs no tunnel; the proxy relays the request itself:
curl -v -x http://USER:PASS@proxy.s4m.online:3128 http://example.com 2>&1 \
  | grep -Ei 'GET http|absolute'
Share this page
FAQ

Fragen, beantwortet

Was macht die HTTP CONNECT-Methode?

Es fordert einen Proxy auf, einen rohen TCP-Tunnel zu einem Zielhost und -port zu öffnen, anstatt eine Ressource abzurufen. Sobald der Proxy mit 200 Connection Established antwortet, tunnelt der Client seinen eigenen TLS-Handshake und verschlüsselte Daten direkt zum Ziel, und der Proxy leitet nur die undurchsichtigen Bytes weiter. So funktioniert HTTPS über einen HTTP-Proxy.

Kann der Proxy meinen HTTPS-Verkehr während eines CONNECT-Tunnels lesen?

Nein. Nachdem der Tunnel geöffnet ist, wird TLS end-to-end zwischen Ihrem Client und dem Zielserver ausgehandelt, sodass der Proxy nur verschlüsselte Bytes sieht. Er kann den Ziel-Hostnamen und Port aus der CONNECT-Zeile und TLS SNI sehen, aber nicht den Inhalt — es sei denn, er führt eine TLS-Intercept mit einem Zertifikat durch, dem Ihr Gerät vertraut.

Warum beschränken Proxys CONNECT auf Port 443?

Da CONNECT einen beliebigen TCP-Tunnel öffnet, könnte ein uneingeschränkter Proxy jedes Protokoll zu jedem Port weiterleiten und zu einem offenen Relay für Missbrauch werden. Die Begrenzung von CONNECT auf 443 (und manchmal eine kurze Erlaubenliste) beschränkt es auf normales HTTPS und verhindert, dass der Proxy verwendet wird, um nicht verwandte Dienste zu tunneln.

Ein HTTP-Proxy, der HTTPS tunnelt

Der authentifizierte HTTP-Proxy von s4m auf Port 3128 verarbeitet CONNECT, sodass HTTPS Ende-zu-Ende verschlüsselt bleibt, neben SOCKS5 auf 1080. Abgerechnet nach Verbrauch, anonyme Konten, Krypto akzeptiert.

Menschen fanden diese Seite durch die Suche nach

Echte Suchphrasen, auf die diese Seite antwortet — die verlinkten öffnen die Seite, die sie ausführlich behandelt.