Wget HEAD запрос?

52

Я хотел бы отправить HTTP HEADзапрос, используя wget. Является ли это возможным?

Xiè Jìléi
источник

Ответы:

59

Это не 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
SleighBoy
источник
Это именно то, что я хочу.
Xiè Jìléi 11.10.10
1
-Iэквивалентно --head.
Николас Марчилдон
1
Если вам нужен самозаверяющий сертификат на основе сертификатов https, вы также можете добавить -kили--insecure
Майк Аски
36

Пытаться:

wget -S --spider www.example.com

Вы также можете передать, -O /dev/nullчтобы предотвратить wgetзапись HTTP-ответа в файл.

Случайный кодер
источник
2
-Sбудет показывать заголовки, но он выполняет GET, а не HEAD. Другими словами, он будет получать весь URL.
Дан Даскалеску
9
wget -S --spider http://localhostжурнал, созданный на сервере Apache,127.0.0.1 - - [04/Mar/2014:15:36:32 +0100] "HEAD / HTTP/1.1" 200 314 "-" "Wget/1.13.4 (linux-gnu)"
Casual Coder
20

Там нет необходимости для завитка .

С 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
это весело
источник
4

wget -S получает файл:

Длина содержимого: 2316, длина: 2316 (2,3 КБ) [текст / обычный], сохранение в: `index.html '

wget --spider получает заголовки:

Режим паука включен. Проверьте, существует ли удаленный файл., Длина: не указано [текст / обычный] Удаленный файл существует.

LanPartacz
источник
-1

Хотя нет wget, во многих perlустановках с lwpмодулем будет установлена HEADкоманда.

Рич Гомолка
источник