Какво означава HTTP 000 при тест на прокси с curl
000 не е HTTP статус, изпратен от сайт. Четете кода за завършване и грешката на curl заедно с показаното HTTP поле.
Когато тест с curl показва 000 като HTTP статус, curl не е получил окончателен код на HTTP отговор, който да съобщи. Сайтът не е изпратил реален HTTP статус с име 000.
Запишете и грешката
Този пример за POSIX обвивка извежда окончателното HTTP поле, полето CONNECT и кода за завършване на процеса 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"
Заменете примерната крайна точка със своето HTTP прокси или с кандидат от списъка с HTTP проксита. Оставете show-error включено: съобщението за грешка често е най-полезната част. Полето CONNECT е приложимо при използване на тунел; то не е втори окончателен статус от сайта.
Четете стойностите заедно
- Неуспешна връзка с проксито може да остави HTTP полето на 000.
- Изтичане на времето за изчакване преди получаване на отговор може да даде същия резултат.
- Успешен CONNECT отговор, последван от TLS грешка, може да покаже connect=200 и http=000.
- Пълен отговор от сайта, например 403, е различен случай: има действителен HTTP отговор за разглеждане.
Точният код за завършване и съобщението стесняват причините. Проверете дали грешката е възникнала при намиране на проксито, свързване с порта му, договаряне на тунела или проверка на местоназначението.
Не свеждайте всеки резултат само до проверка на статуса
Скрипт, който записва само http_code, губи транспортната грешка. Записвайте и резултата от процеса, както и съобщение за грешка с премахнати чувствителни данни. Обратно, curl може да завърши прехвърлянето успешно, въпреки че сайтът връща статус за грешка, освен ако не използвате подходяща опция fail. HTTP отговорът и резултатът от изпълнението на клиента отговарят на различни въпроси.
Не опитвайте да поправяте 000, като изключвате проверката на TLS или добавяте произволно заглавно поле. Първо установете коя операция така и не е стигнала до окончателен отговор.