Wget HEAD-Anfrage?

Wget HEAD-Anfrage?

Ich möchte die HTTP HEADAnfrage per senden wget. Ist das möglich?

Antwort1

Es ist nicht wget, aber Sie können das ganz einfach mit curl tun.

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

Antwort2

Versuchen:

wget -S --spider www.example.com

Sie können auch -O /dev/nullverhindern, wgetdass die HTTP-Antwort in eine Datei geschrieben wird.

Antwort3

Es besteht keine Notwendigkeit fürLocke.

Bei Wget --spiderimpliziert das Hinzufügen, dass Sie eine Anfrage senden möchten HEAD(im Gegensatz zu GEToder POST).

Dies ist eine großartige minimalistische Methode, um zu prüfen, ob eine URL antwortet oder nicht. Sie können dies beispielsweise in Skriptprüfungen verwenden, und der HEADVorgang stellt sicher, dass weder das Netzwerk noch der Zielwebserver belastet werden.

Bonusinformationen: Wenn Wget beim Ausführen des einen HTTP-Fehler 500 vom Server erhält, führt es einen für dieselbe URL HEADaus . Ich kenne den Grund für dieses Design nicht. Aus diesem Grund sehen Sie möglicherweise sowohl einenGETHEAD Undeine GETAnfrage, die an den Server gestellt wird. Wenn alles in Ordnung ist, HEADwird nur eine Anfrage gestellt. Sie können diese Funktion deaktivieren, indem --triesSie Wget auf einen einzigen Versuch beschränken.

Alles in allem empfehle ich Folgendes zum 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

Antwort4

Ubuntu 19.10 Manpage: 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.

Habe Folgendes in meinem Bash-Skript verwendet und kann bestätigen, dass es wie erwartet funktioniert!

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

verwandte Informationen