Antwortkörper eines fehlgeschlagenen Proxy-CONNECT mit curl untersuchen
Sende ein korrekt aufgebautes diagnostisches CONNECT direkt an einen HTTP-Proxy und speichere HTTP-Fehler-Header und -Body getrennt.
Ein Proxy, der CONNECT ablehnt, kann ein HTTP-Fehlerdokument zurückgeben, das seine Richtlinie oder den Fehlschlag der weiteren Verbindung erläutert. Für eine autorisierte Diagnose gegen einen gewöhnlichen HTTP-Proxy kann curl diese Anfrage direkt senden und die Antwort speichern:
curl --proxy '' --http1.1 --max-time 10 \
--request CONNECT \
--request-target service.example:443 \
--header 'Host: service.example:443' \
--dump-header tunnel.headers \
--output tunnel.body \
http://proxy.example:8080/
Die endgültige URL adressiert den Proxy-Listener. Für einen erlaubten Vergleich öffentlicher Proxys bietet die HTTP-Proxy-Liste Kandidaten für diese Listener-URL. --request liefert das Methoden-Token; --request-target liefert die CONNECT-Authority. Getrennt gehalten ergibt das CONNECT service.example:443 HTTP/1.1.
Die leere Proxy-Option verhindert, dass curl diese Diagnose über einen anderen geerbten Proxy leitet. Der Befehl lässt --fail bewusst weg, damit ein HTTP-Fehlerdokument erhalten bleibt.
Ein unauthentifizierter Versuch kann bei 407 stoppen, bevor er den untersuchten Fehler erreicht. Verwende die vorgesehene Authentifizierung des Proxys, wenn du eine authentifizierte Anfrage nachvollziehst.
Dies dient dem Untersuchen von Fehlerantworten. Gibt der Proxy 2xx zurück, wird die Verbindung ein Tunnel statt einer gewöhnlichen HTTP-Body-Übertragung. Diese Diagnose mit eigener Methode startet den TLS-Austausch des Ziels nicht und kann auf einem akzeptierten offenen Tunnel ihr Zeitlimit erreichen.
Verwende für einen tatsächlichen HTTPS-Abruf den normalen --proxy-Anfrageablauf. Bewahre den Diagnosestatus und -body zusammen mit ihrem konkreten Proxy und Ziel auf.