Запрос Wget HEAD?

Запрос Wget HEAD?

Я хотел бы отправить HTTP HEADзапрос с помощью wget. Это возможно?

решение1

Это не 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

решение2

Пытаться:

wget -S --spider www.example.com

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

решение3

Нет никакой необходимости взавиток.

В 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

Страница руководства Ubuntu 19.10: Wget

   --method=HTTP-Method
       For the purpose of RESTful scripting, Wget allows sending of other HTTP Methods
       without the need to explicitly set them using --header=Header-Line.  Wget will use
       whatever string is passed to it after --method as the HTTP Method to the server.

Использовал следующее в своем bash-скрипте и могу подтвердить, что все работает так, как и ожидалось!

wget --method=HEAD https://www.website.com/

Связанный контент