curl ile proxy testinde HTTP 000 ne anlama gelir?
000, bir sitenin gönderdiği HTTP durumu değildir. curl çıkış kodunu ve hata iletisini yazdırılan HTTP alanıyla birlikte okuyun.
Bir curl testi HTTP durumu olarak 000 yazdırıyorsa, bildirebileceği nihai bir HTTP yanıt kodu almamıştır. Site, 000 adlı gerçek bir HTTP durumu göndermemiştir.
Hatayı da kaydedin
Bu POSIX kabuğu örneği nihai HTTP alanını, CONNECT alanını ve curl sürecinin çıkış kodunu yazdırır:
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"
Örnekteki uç noktayı kendi HTTP proxy’nizle veya HTTP proxy listesinden bir adayla değiştirin. show-error açık kalsın: hata iletisi çoğu zaman en yararlı kısımdır. CONNECT alanı tünel kullanıldığında anlamlıdır; sitenin ikinci bir nihai durumu değildir.
Değerleri birlikte okuyun
- Proxy’ye bağlantı başarısız olursa HTTP alanı 000 olarak kalabilir.
- Yanıt alınmadan önce zaman aşımı olması aynı sonucu doğurabilir.
- Başarılı bir CONNECT yanıtını TLS hatası izlerse connect=200 ve http=000 görülebilir.
- Sitenin 403 gibi tamamlanmış bir yanıtı farklıdır: incelenecek gerçek bir HTTP yanıtı vardır.
Tam çıkış kodu ve ileti, nedeni daraltmaya yardımcı olur. Hatanın proxy bulunurken, portuna bağlanılırken, tünel kurulumu görüşülürken veya hedef doğrulanırken oluşup oluşmadığını kontrol edin.
Her sonucu yalnızca durum kontrolüne indirgemeyin
Yalnızca http_code kaydeden bir betik aktarım hatasını atar. Süreç sonucunu ve hassas bilgilerden arındırılmış hata iletisini de kaydedin. Tersine, uygun bir fail seçeneği kullanmadığınız sürece site hata durumu döndürse bile curl aktarımı başarıyla tamamlayabilir. HTTP yanıtı ile istemcinin yürütme sonucu farklı soruları yanıtlar.
TLS doğrulamasını kapatarak veya rastgele bir başlık ekleyerek 000 değerini düzeltmeye çalışmayın. Önce hangi işlemin nihai bir yanıta ulaşamadığını belirleyin.