Żądanie Wget HEAD?

52

Chcę wysłać HTTP HEADzapytanie za pomocą wget. Czy to możliwe?

Xiè Jìléi
źródło

Odpowiedzi:

59

Nie jest wget, ale możesz to zrobić dość łatwo, używając curl.

curl -I http://www.superuser.com/

Daje to wyjście:

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
źródło
Właśnie tego chcę.
Xiè Jìléi
1
-Ijest równoważne z --head.
Nicolas Marchildon,
1
Jeśli potrzebujesz certyfikatu z podpisem własnym https, możesz również dodać -klub--insecure
Mike Aski,
36

Próbować:

wget -S --spider www.example.com

Możesz także przekazać, -O /dev/nullaby uniemożliwić wgetzapisanie odpowiedzi HTTP na pliku.

Casual Coder
źródło
2
-Sbędzie pokazać nagłówków, ale to wykonuje GET, nie HEAD. Innymi słowy, pobierze cały adres URL.
Dan Dascalescu
9
wget -S --spider http://localhostlog utworzony na serwerze apache to127.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

Nie ma potrzeby zwijania się .

W przypadku Wget dodanie --spideroznacza, że ​​chcesz wysłać HEADzapytanie (w przeciwieństwie do GETlub POST).

Jest to świetny minimalistyczny sposób sprawdzania, czy adres URL odpowiada, czy nie. Możesz na przykład użyć tego podczas sprawdzania skryptów, a HEADoperacja zapewni, że nie obciążysz ani sieci, ani docelowego serwera WWW.

Informacje o bonusie: Jeśli Wget otrzyma błąd HTTP 500 z serwera podczas jego wykonywania HEAD, przejdzie do wykonania GETprzeciw temu samemu adresowi URL. Nie znam uzasadnienia tego projektu. To jest powód, dla którego można zobaczyć zarówno HEAD iGET prośba wykonywane na serwerze. Jeśli nic nie jest nie tak, HEADwykonywane jest tylko żądanie. Możesz wyłączyć tę funkcję z --triesopcją ograniczenia Wget do tylko jednej próby.

Podsumowując, polecam to do testowania, czy adres URL odpowiada:

# 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
to jest fajne
źródło
4

wget -S pobiera plik:

Content-Length: 2316, Length: 2316 (2.3K) [text / plain], Zapisywanie do: `index.html '

wget --spider dostaje nagłówki:

Tryb pająka włączony. Sprawdź, czy istnieje plik zdalny., Długość: nieokreślony [tekst / zwykły] Plik zdalny istnieje.

LanPartacz
źródło
-1

Chociaż nie wget, wiele perlinstalacji z lwpmodułem będzie miało HEADzainstalowane polecenie.

Rich Homolka
źródło