Wget HEAD Anfrage?

52

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

Xiè Jìléi
quelle

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
Schlittenjunge
quelle
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.

Casual Coder
quelle
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
Das macht Spaß
quelle
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.

LanPartacz
quelle
-1

Bei wgetvielen perlInstallationen mit lwpModul ist jedoch ein HEADBefehl installiert.

Reiche Homolka
quelle