J'aimerais envoyer la demande HTTP HEAD
en utilisant wget
. C'est possible?
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
Essayer:
wget -S --spider www.example.com
Vous pouvez également passer -O /dev/null
pour empêcher wget
d'écrire une réponse HTTP dans un fichier.
Il n'y a aucun besoin de curl .
Avec Wget, l'ajout de --spider
implique que vous souhaitiez envoyer une demande HEAD
(par opposition à GET
ou POST
).
C'est une excellente façon minimaliste de vérifier si une URL répond ou non. Vous pouvez par exemple utiliser ceci dans des contrôles par script, et l'opération HEAD
veillera à ce que vous ne fassiez aucune charge sur le réseau ni sur le serveur Web cible.
Informations sur le bonus: Si Wget obtient une erreur HTTP 500 du serveur lorsqu’il exécute HEAD
, il passera ensuite à exécuter une GET
avec la même URL. Je ne connais pas le raisonnement pour cette conception. C'est la raison pour laquelle une requête HEAD
et GET
est exécutée sur le serveur. Si rien ne va pas, seule une requête HEAD
est effectuée. Vous pouvez désactiver cette fonctionnalité avec l'option --tries
pour 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
wget -S
récupère 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.