Keď test curl vypíše ako stav HTTP 000, nezískal konečný kód odpovede HTTP, ktorý by mohol uviesť. Web neodoslal skutočný stav HTTP s názvom 000.

Zaznamenajte aj chybu

Tento príklad pre shell POSIX vypíše konečné pole HTTP, pole CONNECT a návratový kód 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"

Nahraďte ukážkový koncový bod svojou HTTP proxy alebo kandidátom zo zoznamu HTTP proxy. Nechajte zapnuté show-error: chybová správa býva najužitočnejšia. Pole CONNECT je relevantné pri použití tunela; nie je to druhý konečný stav z webu.

Čítajte hodnoty spolu

  • Neúspešné pripojenie k proxy môže ponechať pole HTTP na hodnote 000.
  • Vypršanie časového limitu pred prijatím odpovede môže spôsobiť to isté.
  • Úspešná odpoveď CONNECT nasledovaná chybou TLS môže viesť k hodnotám connect=200 a http=000.
  • Úplná odpoveď webu, napríklad 403, je iný prípad: existuje skutočná odpoveď HTTP na preskúmanie.

Presný návratový kód a správa pomôžu zúžiť príčinu. Zistite, či chyba nastala pri hľadaní proxy, pripájaní k jej portu, vyjednávaní tunela alebo overovaní cieľa.

Neobmedzujte každý výsledok na samotnú kontrolu stavu

Skript, ktorý ukladá len http_code, zahadzuje chybu prenosu. Uložte aj výsledok procesu a chybovú správu zbavenú citlivých údajov. Naopak, curl môže úspešne dokončiť prenos, aj keď web vráti chybový stav, pokiaľ nepoužijete vhodnú voľbu fail. Odpoveď HTTP a výsledok behu klienta odpovedajú na rôzne otázky.

Nesnažte sa opraviť 000 vypnutím overovania TLS alebo pridaním náhodnej hlavičky. Najprv určte, ktorá operácia vôbec nedospela ku konečnej odpovedi.

Súvisiace články