Gibt ein curl-Test als HTTP-Status 000 aus, hat curl keinen abschließenden HTTP-Antwortcode erhalten, den es melden könnte. Die Website hat keinen tatsächlichen HTTP-Status namens 000 gesendet.

Auch die Fehlermeldung erfassen

Dieses Beispiel für eine POSIX-Shell gibt das abschließende HTTP-Feld, das CONNECT-Feld und den Exitcode des curl-Prozesses aus:

curl --proxy http://203.0.113.10:8080 --noproxy '' --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect}\n' https://example.com/
result=$?
printf 'curl_exit=%s\n' "$result"

Ersetzen Sie den Beispielendpunkt durch Ihren HTTP-Proxy oder einen Kandidaten aus der HTTP-Proxy-Liste. Lassen Sie show-error aktiviert: Die Fehlermeldung ist oft der nützlichste Teil. Das CONNECT-Feld ist beim Einsatz eines Tunnels relevant; es ist kein zweiter abschließender Status der Website.

Die Werte im Zusammenhang lesen

  • Scheitert die Verbindung zum Proxy, kann das HTTP-Feld auf 000 bleiben.
  • Ein Timeout vor dem Empfang einer Antwort kann dasselbe bewirken.
  • Auf eine erfolgreiche CONNECT-Antwort kann ein TLS-Fehler folgen; dann sind connect=200 und http=000 möglich.
  • Eine vollständig empfangene Website-Antwort wie 403 ist etwas anderes: Hier liegt eine tatsächliche HTTP-Antwort zur Untersuchung vor.

Der genaue Exitcode und die Meldung grenzen die Ursache ein. Prüfen Sie, ob der Fehler beim Ermitteln des Proxys, beim Verbinden mit seinem Port, beim Aushandeln des Tunnels oder beim Verifizieren des Ziels auftrat.

Nicht jedes Ergebnis auf eine Statusprüfung reduzieren

Ein Skript, das nur http_code speichert, verwirft den Transportfehler. Speichern Sie auch das Prozessergebnis und eine um sensible Angaben bereinigte Fehlermeldung. Umgekehrt kann curl eine Übertragung erfolgreich abschließen, obwohl die Website einen Fehlerstatus liefert, sofern Sie keine passende fail-Option verwenden. HTTP-Antwort und Ausführungsergebnis des Clients beantworten unterschiedliche Fragen.

Versuchen Sie nicht, 000 durch Abschalten der TLS-Prüfung oder einen beliebigen zusätzlichen Header zu beheben. Finden Sie zuerst heraus, welcher Vorgang keine abschließende Antwort erreicht hat.

Ähnliche Artikel