Wget HEAD Anfrage?


52

Ich möchte die HTTP HEADAnfrage über senden wget. Ist es möglich?

Antworten:


59

Es ist nicht wget, aber Sie können das ziemlich leicht tun, indem Sie Wellung verwenden.

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

Erzeugt diese Ausgabe:

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

Genau das will ich.
Xiè Jìléi

1
-Iist äquivalent zu --head.
Nicolas Marchildon

1
Wenn Sie ein selbstsigniertes Zertifikat benötigen https, können Sie auch hinzufügen -koder--insecure
Mike Aski

36

Versuchen:

wget -S --spider www.example.com

Sie können auch übergeben -O /dev/null, um zu verhindern, dass wgetHTTP-Antworten in eine Datei geschrieben werden.


2
-Swird zeigen , Header, aber es führt ein GET, nicht ein HEAD. Mit anderen Worten, es wird die gesamte URL abgerufen.
Dan Dascalescu

9
wget -S --spider http://localhostDas im Apache-Server erstellte Protokoll lautet127.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

Es ist keine Locke erforderlich .

Beim Hinzufügen von Wget müssen --spiderSie eine HEADAnforderung senden (im Gegensatz zu GEToder POST).

Dies ist eine großartige minimalistische Methode, um zu überprüfen, ob eine URL antwortet oder nicht. Sie können dies beispielsweise bei skriptbasierten Überprüfungen verwenden, und der HEADVorgang stellt sicher, dass weder das Netzwerk noch der Ziel-Webserver belastet werden.

Bonus-Informationen: Wenn Wget beim HEADAusführen des Befehls einen HTTP-Fehler 500 vom Server erhält, wird der Vorgang fortgesetzt , um einen GETVorgang für dieselbe URL auszuführen . Ich kenne die Gründe für diesen Entwurf nicht. Dies ist der Grund, warum möglicherweise sowohl eine HEAD als auch eine GETAnforderung für den Server ausgeführt wird. Wenn nichts falsch ist, wird nur eine HEADAnfrage ausgeführt. Sie können diese Funktion mit der --triesOption deaktivieren , Wget auf nur einen Versuch zu beschränken.

Alles in allem empfehle ich dies, um zu testen, ob eine URL antwortet:

# 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 Ruft die Datei ab:

Inhaltslänge: 2316, Länge: 2316 (2,3 KB) [text / plain], Speichern unter: `index.html '

wget --spider bekommt Überschriften:

Spinnenmodus aktiviert. Überprüfen Sie, ob die entfernte Datei existiert., Länge: nicht angegeben [text / plain] Die entfernte Datei existiert.


-1

Bei wgetvielen perlInstallationen mit lwpModul ist jedoch ein HEADBefehl installiert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.