Pour vérifier Googlebot, effectuer une résolution DNS inversée, puis confirmer par une résolution DNS directe. Cette recommandation, formulée en ces termes dans la documentation officielle de Google consacrée à la vérification de Googlebot, résume la seule méthode fiable pour distinguer le robot d’indexation légitime d’un imposteur qui se contente de recopier sa chaîne de user-agent dans ses en-têtes HTTP.
Repérer dans les logs serveur des milliers de requêtes portant l’en-tête Googlebot/2.1 ne dit rien de leur provenance réelle. N’importe quel script écrit en quelques minutes peut envoyer ce même user-agent depuis une adresse IP qui n’appartient à aucune plage Google, dans l’espoir de forcer l’accès à des sections normalement filtrées ou de moissonner du contenu sans se faire bloquer par un pare-feu applicatif.
Pourquoi le user-agent ne prouve rien
Le protocole HTTP laisse le client entièrement libre de la valeur qu’il place dans l’en-tête User-Agent. Aucune vérification cryptographique n’accompagne ce champ : il s’agit d’une simple déclaration, au même titre qu’un visiteur qui inscrirait n’importe quel nom sur un registre d’accueil. Se fier uniquement à cette chaîne pour accorder un traitement de faveur — bypass de cache, accès prioritaire, exemption de limitation de débit — revient à ouvrir une porte sur simple déclaration verbale.
Certains robots malveillants exploitent précisément cette confiance : en se faisant passer pour Googlebot, ils espèrent que les protections anti-scraping, souvent configurées pour laisser passer les moteurs de recherche légitimes, les laisseront eux aussi filer sans contrôle.
La méthode en deux résolutions

La vérification recommandée par Google se déroule en deux temps distincts, tous deux nécessaires :
- Une résolution DNS inversée sur l’adresse IP source de la requête, avec
gethostbyaddr()en PHP ou la commandehosten bash, qui doit renvoyer un nom de domaine se terminant par.googlebot.comou.google.com. - Une résolution DNS directe sur ce nom de domaine obtenu, avec
gethostbyname()ou de nouveauhost, qui doit renvoyer exactement l’adresse IP de départ.
Si l’une des deux étapes échoue ou ne correspond pas, l’adresse n’appartient pas à Google, quel que soit le user-agent affiché. Cette double étape empêche un attaquant de configurer un simple enregistrement PTR mensonger sur son propre serveur DNS : la résolution directe, elle, révèle l’incohérence.
Scripter la vérification en bash
Sur un accès SSH à l’hébergement, la vérification manuelle d’une adresse suspecte tient en deux commandes :
host 66.249.66.1
# renvoie un nom du type crawl-66-249-66-1.googlebot.com
host crawl-66-249-66-1.googlebot.com
# doit renvoyer exactement 66.249.66.1
Pour un traitement automatisé sur un volume de logs plus important, un script shell parcourant les adresses distinctes ayant envoyé le user-agent Googlebot évite d’examiner chaque ligne à la main :
for ip in $(grep 'Googlebot' access.log | awk '{print $1}' | sort -u); do
host_name=$(host "$ip" | awk '/pointer/ {print $NF}' | sed 's/\.$//')
if [[ "$host_name" == *.googlebot.com || "$host_name" == *.google.com ]]; then
resolved=$(host "$host_name" | awk '/has address/ {print $NF}')
[[ "$resolved" == "$ip" ]] && echo "$ip : confirmé" || echo "$ip : SUSPECT"
else
echo "$ip : SUSPECT (pas de PTR Google)"
fi
done
Que faire des adresses non confirmées
Une adresse qui échoue à cette vérification n’est pas nécessairement malveillante : elle peut appartenir à un outil d’audit SEO tiers configuré pour imiter Googlebot, une pratique fréquente mais discutable. Elle mérite en tout cas un traitement différent de celui réservé au vrai robot, sans excès de sévérité immédiate — un ralentissement du débit autorisé suffit souvent avant d’envisager un blocage complet.
Un en-tête HTTP se déclare ; une résolution DNS se vérifie. Ne jamais confondre les deux quand un accès privilégié est en jeu.
En résumé
La vérification en deux résolutions DNS reste la seule preuve solide qu’une requête provient réellement d’un serveur Google. Elle demande peu de ressources, s’automatise facilement dans un script shell existant, et évite de traiter comme prioritaire un robot qui n’a de Googlebot que le nom qu’il a bien voulu se donner.