Wget demande HEAD?

52

Je voudrais envoyer la HTTP HEADdemande en utilisant wget. C'est possible?

Xiè Jìléi
la source

Réponses:

59

Ce n'est pas wget, mais vous pouvez le faire assez facilement en utilisant curl.

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

Produit cette sortie:

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
la source
C'est exactement ce que je veux.
Xiè Jìléi
1
-Iest équivalent à --head.
Nicolas Marchildon
1
Si vous avez besoin d'un certificat auto-signé https, vous pouvez également ajouter -kou--insecure
Mike Aski
36

Essayer:

wget -S --spider www.example.com

Vous pouvez également passer -O /dev/nullpour empêcher wgetd'écrire une réponse HTTP dans un fichier.

Codeur occasionnel
la source
2
-Sva montrer en- têtes, mais il exécute un GET, pas HEAD. En d'autres termes, il récupérera l'URL complète.
Dan Dascalescu
9
wget -S --spider http://localhostLe journal créé dans le serveur apache est127.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

Il n'y a pas besoin de curl .

Avec Wget, ajouter --spiderimplique que vous souhaitiez envoyer une HEADdemande (par opposition à GETou POST).

C'est une excellente façon minimaliste de vérifier si une URL répond ou non. Vous pouvez par exemple l'utiliser dans des contrôles par script, et l' HEADopération vous assurera de ne pas surcharger le réseau ni le serveur Web cible.

Informations sur le bonus: Si Wget obtient une erreur HTTP 500 du serveur lorsqu’il le fait, HEADil le fera ensuite pour utiliser GETla même URL. Je ne connais pas le raisonnement pour cette conception. C'est la raison pour laquelle une requête HEAD et une GETrequête peuvent être exécutées sur le serveur. Si rien ne va pas, seule une HEADrequête est effectuée. Vous pouvez désactiver cette fonctionnalité avec l' --triesoption de limiter Wget à une seule tentative.

En tout et pour tout, je le recommande pour tester si une URL répond:

# 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
C'est marrant
la source
4

wget -S obtient le fichier:

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

wget --spider obtient les en-têtes:

Mode Spider activé. Vérifier si le fichier distant existe., Longueur: non spécifié [text / plain] Le fichier distant existe.

LanPartacz
la source
-1

Bien que non wget, de nombreuses perlinstallations avec lwpmodule auront une HEADcommande installée.

Rich Homolka
la source