Co oznacza HTTP 000 podczas testowania proxy za pomocą curl
000 nie jest statusem HTTP wysłanym przez stronę. Odczytaj kod zakończenia i błąd curl razem z wypisanym polem HTTP.
Gdy test curl wypisuje 000 jako status HTTP, oznacza to, że nie uzyskał końcowego kodu odpowiedzi HTTP, który mógłby podać. Strona nie wysłała rzeczywistego statusu HTTP o nazwie 000.
Zapisz także błąd
Ten przykład dla powłoki POSIX wypisuje końcowe pole HTTP, pole CONNECT oraz kod zakończenia procesu curl:
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"
Zastąp przykładowy punkt końcowy swoim proxy HTTP albo kandydatem z listy proxy HTTP. Pozostaw włączone show-error: komunikat błędu często jest najbardziej przydatny. Pole CONNECT ma znaczenie przy korzystaniu z tunelu; nie jest drugim końcowym statusem strony.
Odczytaj wartości łącznie
- Nieudane połączenie z proxy może pozostawić w polu HTTP wartość 000.
- Przekroczenie limitu czasu przed otrzymaniem odpowiedzi może dać taki sam wynik.
- Udana odpowiedź CONNECT, po której wystąpi błąd TLS, może dać connect=200 i http=000.
- Pełna odpowiedź strony, taka jak 403, to inna sytuacja: istnieje rzeczywista odpowiedź HTTP do zbadania.
Dokładny kod zakończenia i komunikat zawężają przyczynę. Sprawdź, czy problem wystąpił podczas odnajdywania proxy, łączenia z jego portem, negocjowania tunelu czy weryfikowania celu.
Nie sprowadzaj każdego wyniku do sprawdzenia statusu
Skrypt zapisujący tylko http_code odrzuca błąd transportu. Zapisuj też wynik procesu i komunikat błędu pozbawiony poufnych danych. Z drugiej strony curl może pomyślnie zakończyć transfer, mimo że strona zwróci status błędu, chyba że użyjesz odpowiedniej opcji fail. Odpowiedź HTTP i wynik wykonania klienta odpowiadają na różne pytania.
Nie próbuj naprawiać 000 przez wyłączenie weryfikacji TLS ani dodanie przypadkowego nagłówka. Najpierw ustal, która operacja nie dotarła do końcowej odpowiedzi.