Когато тест с 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_code, губи транспортната грешка. Записвайте и резултата от процеса, както и съобщение за грешка с премахнати чувствителни данни. Обратно, curl може да завърши прехвърлянето успешно, въпреки че сайтът връща статус за грешка, освен ако не използвате подходяща опция fail. HTTP отговорът и резултатът от изпълнението на клиента отговарят на различни въпроси.

Не опитвайте да поправяте 000, като изключвате проверката на TLS или добавяте произволно заглавно поле. Първо установете коя операция така и не е стигнала до окончателен отговор.

Подобни статии