Я хотел бы отправить запрос HTTP HEAD
с помощью wget
. Является ли это возможным?
5 ответов
Это не wget, но вы можете сделать это довольно легко, используя curl.
curl -I http://www.superuser.com/
Производит этот вывод:
HTTP/1.1 301 Moved Permanently
Content-Length: 144
Content-Type: text/html; charset=UTF-8
Location: http://superuser.com/
Date: Sat, 09 Oct 2010 19:11:50 GMT
Пытаться:
wget -S --spider www.example.com
Вы также можете передать -O /dev/null
чтобы wget
записывал HTTP-ответ в файл.
Там нет необходимости для завитка.
С Wget добавление --spider
подразумевает, что вы хотите отправить запрос HEAD
(в отличие от GET
или POST
).
Это отличный минималистичный способ проверить, отвечает URL или нет. Например, вы можете использовать это в проверках по сценарию, и операция HEAD
гарантирует, что вы не будете загружать ни сеть, ни целевой веб-сервер.
Дополнительная информация: Если Wget получает ошибку HTTP 500 от сервера при выполнении HEAD
он затем переходит к выполнению GET
того же URL-адреса. Я не знаю причины этого дизайна. По этой причине вы можете увидеть как HEAD
и GET
запрос, выполняемый на сервере. Если все в порядке, выполняется только запрос HEAD
. Вы можете отключить эту функцию с параметром --tries
чтобы ограничить Wget только одной попыткой.
В общем, я рекомендую это для тестирования, если URL отвечает:
# This works in Bash and derivatives
wget_output=$(wget --spider --tries 1 $URL 2>&1)
wget_exit_code=$?
if [ $wget_exit_code -ne 0 ]; then
# Something went wrong
echo "$URL is not responding"
echo "Output from wget: "
echo "$wget_output"
else
echo "Check succeeded: $URL is responding"
fi
wget -S
получает файл:
Длина содержимого: 2316, длина: 2316 (2,3 КБ) [текст / обычный], сохранение в: `index.html '
wget --spider
получает заголовки:
Режим паука включен. Проверьте, существует ли удаленный файл., Длина: не указано [текст / обычный] Удаленный файл существует.
Хотя это и не wget
, во многих установках perl
с модулем lwp
будет установлена команда HEAD
.