Einen HTTP-Proxy mit curl testen
Prüfen Sie mit einem zeitlich begrenzten curl-Test Erreichbarkeit, HTTPS-Tunnel, Antwortstatus und Ausnahmeregeln, ohne den globalen Proxy Ihres Geräts zu ändern.
Ersetzen Sie 127.0.0.1:8080 durch einen Endpunkt Ihres Dienstes oder aus der HTTP-Proxy-Liste und führen Sie diesen Aufruf gegen ein unbedenkliches HTTPS-Ziel aus:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Die Loopback-Adresse bezeichnet einen Listener auf Ihrem eigenen Rechner. Der Befehl wählt ihn ausdrücklich aus, leert für diesen Aufruf die Ausnahmeliste von curl und erlaubt fünf Sekunden für den Verbindungsaufbau sowie fünfzehn Sekunden insgesamt. Die Proxy-Einstellungen von Browser und System bleiben unberührt.
Verwenden Sie die tatsächliche curl-Programmdatei, falls Ihre Shell curl als Alias für ein anderes Programm verwendet; curl --version zeigt die verwendete Build-Version. Benötigt der Listener selbst TLS, verwenden Sie das für ihn dokumentierte Proxy-URL-Schema.
Vier Ergebnisse statt nur einer Erfolgsmeldung lesen
- Verbindung zum ausgewählten Proxy: Adresse und Port sind erreichbar.
- CONNECT angenommen: Der Proxy hat einen Tunnel zum HTTPS-Ziel geöffnet.
- Zielzertifikat geprüft: TLS wurde mit den vorgesehenen Vertrauensprüfungen abgeschlossen.
- Antwort des Ziels erhalten: Prüfen Sie Status und Inhalt darauf, ob das Ergebnis den Anforderungen Ihrer Anwendung entspricht.
Auch auf einen funktionierenden Tunnel kann eine Antwort mit 403 oder 429 vom Ziel folgen. curl kann nach einer HTTP-Fehlerantwort ebenfalls erfolgreich beendet werden. Erfassen Sie deshalb sowohl den Antwortstatus als auch das Fehlerergebnis von curl. Eine TCP-Verbindung oder ein erfolgreicher CONNECT allein genügt nicht.
Ein kompaktes Ergebnis für wiederholte Vergleiche
In einer Unix-ähnlichen Shell können Sie den Antwortinhalt verwerfen und Tunnelstatus, Zielstatus, Gegenstelle und Laufzeit ausgeben:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect beschreibt die Tunnelantwort, http_code die endgültige HTTP-Antwort. remote_ip ist die Gegenstelle der curl-Verbindung und keine unabhängige Messung der Ausgangsadresse des Proxys. Ersetzen Sie /dev/null auf anderen Systemen oder behalten Sie den Antwortinhalt.
Schlägt der Test fehl, ermitteln Sie den gescheiterten Aufbau- oder Übertragungsschritt und vergleichen Sie dasselbe Ziel über eine direkte Verbindung, sofern dieser Weg erlaubt ist:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' umgeht Proxys. Scheitert die Zertifikatsprüfung auf beiden Wegen, deutet das auf ein gemeinsames Vertrauensproblem hin. Funktioniert die direkte Verbindung, während CONNECT abgelehnt wird, kommen Proxy-Authentifizierung oder Richtlinien infrage. Prüfen Sie die ausführliche Ausgabe vor dem Weitergeben, da sie identifizierende Informationen enthalten kann.
Speichern Sie Endpunkt, Ziel und Zeitstempel zusammen mit dem Ergebnis. Damit ist festgehalten, was bei dieser Anfrage funktioniert hat. Künftige Verfügbarkeit, Datenschutz und Leistung unter Last benötigen eigene Nachweise.