Analyse de logs serveur SEO : suivre Googlebot pas à pas
Référencement

Analyse de logs serveur SEO : suivre Googlebot pas à pas

Isoler Googlebot dans vos logs, le vérifier par DNS, lire les codes HTTP, mesurer le budget d'exploration et prioriser les corrections.

Mis à jour le 1er novembre 2026. Cet article regroupe désormais notre article « Crawl budget et logs serveur : le rôle réel de l’IA ». Nous avons ajouté les seuils de taille fixés par Google pour le budget d’exploration, le rapport « Statistiques sur l’exploration », les fichiers JSON des plages d’IP de Google à jour, l’effet des codes 5xx et 429 sur le rythme d’exploration et la distinction entre Googlebot et les robots d’IA.

Les logs serveur enregistrent chaque requête reçue par votre site. Pour le SEO, ils répondent à une question que la Search Console ne détaille pas URL par URL : Googlebot a-t-il demandé cette page, quand, et qu’a-t-il reçu ? Ce guide suppose le format « combined », le plus répandu sur Apache et Nginx.

Logs serveur et Search Console : deux vues complémentaires

La Search Console propose le rapport « Statistiques sur l’exploration », accessible depuis les paramètres de la propriété. Il n’existe que pour une propriété de domaine ou un préfixe d’URL racine. Il ventile l’exploration par code de réponse, type de fichier, objectif (découverte ou actualisation) et type de Googlebot. Il indique aussi l’état de l’hôte sur 90 jours : robots.txt, résolution DNS et connectivité du serveur.

Ces données sont agrégées. Les logs, eux, donnent chaque requête.

QuestionSource à utiliser
La page est-elle indexée, et pourquoi pas ?Rapport « Indexation des pages », inspection d’URL
Googlebot a-t-il demandé cette URL précise, et quand ?Logs serveur
Le serveur a-t-il eu des problèmes de disponibilité ?Statistiques sur l’exploration (état de l’hôte), puis logs
Quelles sections consomment l’exploration ?Logs serveur, regroupés par modèle d’URL
Robots.txt est-il lu correctement ?Rapport robots.txt de la Search Console

Pour la prise en main de l’outil, consultez notre guide de la Search Console.

Le budget d’exploration concerne-t-il votre site ?

Google décrit le budget d’exploration à partir de deux composantes. La limite de capacité correspond à la charge que votre serveur supporte : elle monte quand le site répond vite et baisse en cas d’erreurs ou de lenteur. La demande dépend du nombre d’URL connues, de leur popularité et de la fréquence de mise à jour.

Selon sa documentation, mise à jour le 22 juillet 2026, le guide sur le budget d’exploration vise trois profils : les sites de plus d’un million de pages uniques mises à jour environ une fois par semaine, ceux de plus de 10 000 pages mises à jour chaque jour, et les sites dont beaucoup d’URL sont classées « Détectée, actuellement non indexée ». Google précise que ces chiffres sont une estimation approximative.

Ce dernier cas concerne aussi les petits sites. Les logs montrent alors si Googlebot passe réellement sur ces URL.

Où trouver vos fichiers de logs

Hébergement avec panneau de contrôle

Dans cPanel, ouvrez la section Métriques, puis Accès brut (Raw Access). Les journaux du domaine s’y téléchargent, souvent compressés en .gz. Sur les autres panneaux, le chemin varie : demandez-le au support de votre hébergeur.

Serveur accessible en SSH

Repérez le fichier défini par la directive CustomLog (Apache) ou access_log (Nginx) :

# Contenu des dossiers de logs par défaut
ls -lh /var/log/apache2/ /var/log/nginx/

# Chemin réel défini dans la configuration
grep -rn "CustomLog\|access_log" /etc/apache2/ /etc/nginx/

Sur Debian, les hôtes virtuels d’Apache sont souvent journalisés dans other_vhosts_access.log, avec le nom de domaine et le port en début de ligne. Si un CDN répond à la place de votre serveur, ces requêtes n’apparaissent pas dans vos logs : récupérez les journaux du CDN. Enfin, la rotation supprime les anciens fichiers : archivez-les pour comparer des périodes.

Vérifier le format avant de lancer les commandes

66.249.66.1 - - [15/May/2026:14:25:10 +0200] "GET /produits/mon-produit HTTP/1.1" 200 15322 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Le User-Agent contient des espaces : filtrez-le avec une expression régulière, pas par numéro de colonne. Affichez une ligne avec head -n 1 access.log. Si elle commence par un nom de domaine et un port (format vhost_combined), ajoutez 1 à chaque numéro de champ.

Isoler et vérifier Googlebot

Filtrer le User-Agent et les ressources statiques

grep -E '"[^"]*Googlebot[^"]*"$' access.log > googlebot_brut.log
awk '$7 !~ /\.(css|js|png|jpe?g|gif|ico|svg|webp|woff2?)(\?|$)/' googlebot_brut.log > googlebot_pages.log

La première commande ne cherche « Googlebot » que dans le User-Agent, en fin de ligne. La seconde écarte images, feuilles de style et scripts. Google indexant surtout la version mobile, la plupart des requêtes viennent de Googlebot smartphone.

Confirmer les IP par DNS

Un User-Agent se falsifie. Google recommande une double vérification : la résolution inverse de l’IP doit renvoyer un nom en googlebot.com, google.com ou googleusercontent.com, puis la résolution directe de ce nom doit renvoyer la même IP. La commande host est fournie par le paquet bind9-host sur Debian et Ubuntu.

awk '{print $1}' googlebot_pages.log | sort -u > ips.txt
: > ips_confirmees.txt

while read -r ip; do
  nom=$(host "$ip" | awk '/pointer/ {print $NF}' | sed 's/\.$//')
  case "$nom" in
    *.googlebot.com|*.google.com|*.googleusercontent.com)
      if host "$nom" | grep -qF "$ip"; then
        echo "$ip" >> ips_confirmees.txt
      fi ;;
  esac
done < ips.txt

awk 'NR == FNR { ok[$1]; next } $1 in ok' ips_confirmees.txt googlebot_pages.log > googlebot_verifie.log

Pour de gros volumes, Google publie des fichiers JSON de plages d’IP par catégorie : common-crawlers.json (dont Googlebot), special-crawlers.json, user-triggered-fetchers.json, user-triggered-fetchers-google.json et user-triggered-agents.json, sous https://developers.google.com/static/crawling/ipranges/. Utilisez ensuite googlebot_verifie.log pour toutes les analyses.

Googlebot et robots d’IA

Google-Extended n’est pas un robot distinct, mais un jeton robots.txt qui décide si le contenu collecté peut servir à Gemini : il n’apparaît pas dans vos logs. Les robots d’OpenAI (GPTBot, OAI-SearchBot, ChatGPT-User) ont leurs propres User-Agents et listes d’IP. Ne les comptez pas avec Googlebot.

Lire les codes HTTP dans les logs

CodeSignificationLecture pour le SEO
200Page servieUne URL stratégique qui n’obtient jamais de 200 mérite un contrôle.
301, 308Redirection permanenteUn problème si l’ancienne URL reçoit des hits répétés : un lien interne ou le sitemap pointe encore vers elle.
302, 303, 307Redirection temporaireVérifiez qu’elle est voulue.
304Non modifiéNormal : Googlebot réutilise sa copie. Google encourage la prise en charge du cache HTTP.
401, 403Accès refuséPrioritaire si Googlebot est visé : un pare-feu ou une protection anti-bot le bloque.
404, 410Page absenteÀ corriger sur une URL du sitemap ou d’un lien interne. Pour Google, un 404 est un signal fort de ne pas réexplorer.
429, 500 à 504Limitation ou erreur serveurGoogle réduit la capacité d’exploration sur tout le nom d’hôte. Répétés plusieurs jours sur une URL, ils peuvent la faire sortir de l’index.

Google admet un 500, 503 ou 429 pour ralentir l’exploration en urgence, quelques heures à un ou deux jours, pas davantage. Pour diagnostiquer ces erreurs côté serveur, voir l’analyse des logs Nginx et des erreurs 5xx.

# Répartition des codes de statut
awk '{print $9}' googlebot_verifie.log | sort | uniq -c | sort -rn

# URL en erreur, par fréquence
awk '$9 ~ /^[45]/ {print $9, $7}' googlebot_verifie.log | sort | uniq -c | sort -rn | head -n 20

# URL redirigées, par fréquence
awk '$9 ~ /^30[12378]$/ {print $9, $7}' googlebot_verifie.log | sort | uniq -c | sort -rn | head -n 20

Le format combined ne contient pas la cible d’une redirection. Lisez l’en-tête Location avec curl -sI https://votre-site.example/ancienne-url/.

Analyser une page non indexée

Indiquez le chemin exactement comme il apparaît dans les logs, slash final compris :

awk '$7 == "/mon-article/" {print $4, $9}' googlebot_verifie.log

Suivez cet ordre :

  1. Lisez le motif d’exclusion dans le rapport « Indexation des pages ».
  2. Aucune ligne dans les logs : Googlebot ne demande pas l’URL. Renforcez le maillage interne et le sitemap.
  3. Des réponses 3xx, 4xx ou 5xx : corrigez-les en premier.
  4. Des hits réguliers en 200 : le crawl n’est plus en cause. Cherchez une balise noindex, une canonical vers une autre URL ou un contenu jugé faible.
  5. Le budget d’exploration ne devient un chantier que si les logs montrent un gaspillage mesurable sur des URL sans valeur.

Ce qui consomme le budget, et les fausses pistes

Plusieurs situations dépensent des requêtes sur des URL sans valeur :

# Requêtes par première section du chemin
awk '{sub(/\?.*/, "", $7); split($7, p, "/"); print "/" p[2]}' googlebot_verifie.log | sort | uniq -c | sort -rn | head -n 20

# Requêtes portant des paramètres
awk '$7 ~ /\?/' googlebot_verifie.log | wc -l

Certaines pratiques ne pilotent pas l’exploration :

Pour rédiger un fichier propre, notre générateur de robots.txt évite de bloquer des ressources CSS ou JavaScript. Pour contrôler une page, utilisez le vérificateur d’indexation Google.

Regrouper les URL par modèles

Sur un gros volume, ramenez chaque URL à un modèle :

import re

def modele_url(url: str) -> str:
    """Remplace les identifiants numériques du chemin par {id}."""
    chemin = url.split("?", 1)[0]
    return re.sub(r"/\d+(?=/|-|$)", "/{id}", chemin)

print(modele_url("/produit/123-chaussure?couleur=bleu"))
# /produit/{id}-chaussure

Les paramètres disparaissent : comptez les facettes avant d’appliquer la fonction.

Prioriser les corrections

PrioritéSignal dans les logsCause probableAction
Haute5xx ou 429 répétésPanne, surcharge, limitation trop stricteComparer avec le dernier déploiement, alerter l’hébergeur
Haute401 ou 403 pour GooglebotPare-feu, protection anti-botAutoriser les IP confirmées
Haute404 sur des URL du sitemapSitemap obsolète, lien casséCorriger ; 301 si un équivalent existe
MoyenneChaîne de redirectionsLien interne vers une ancienne adressePointer vers la destination finale
MoyenneBeaucoup d’URL avec ?Facettes, suiviLien supprimé, robots.txt ou canonical selon l’objectif
BassePages du sitemap absentes des logsMaillage faibleLiens depuis des pages déjà explorées
BasseGooglebot non confirmé par DNSUsurpationIgnorer ; bloquer l’IP si elle gêne

Croisez ensuite le volume avec la valeur de la page : une page stratégique peu explorée et un groupe sans valeur très exploré passent en premier. Pour sortir une URL de l’index, laissez-la explorable avec un noindex ou un code 410. Une canonical indique la version à retenir sans réduire l’exploration.

Le rôle de l’IA et ses limites

Filtrer, compter et comparer au sitemap sont des opérations exactes : un script suffit. Une IA générative aide à écrire une expression régulière, à expliquer un User-Agent inconnu ou à rédiger une synthèse à partir de chiffres déjà calculés. Elle ne doit pas calculer de totaux sur des lignes brutes. Le machine learning se justifie pour détecter des anomalies de volume ou regrouper les URL d’un site à structure inconnue. Les adresses IP des visiteurs sont des données personnelles : anonymisez-les avant tout envoi à un service d’IA.

Questions fréquentes

Faut-il vérifier chaque ligne Googlebot par DNS ?

Non. Vérifiez chaque IP unique une fois par analyse, puis gardez les lignes des IP confirmées. Pour de gros volumes, comparez les IP aux fichiers JSON publiés par Google.

Le budget d’exploration concerne-t-il un petit site ?

Rarement. Google le réserve aux sites très grands ou très changeants, mais cite aussi les sites avec beaucoup d’URL « Détectée, actuellement non indexée ». Dans ce cas, vérifiez d’abord dans les logs si Googlebot passe sur ces URL.

Les logs suffisent-ils à expliquer l’indexation ?

Non. Ils montrent les requêtes reçues, pas le statut d’indexation. Croisez-les avec le rapport « Indexation des pages » et l’inspection d’URL.

Peut-on bloquer GPTBot sans gêner Googlebot ?

Oui. Ce sont des robots distincts, avec des jetons robots.txt différents. Un Disallow pour GPTBot ne touche pas Googlebot. Pour l’usage de vos contenus par Gemini, le jeton concerné est Google-Extended.

Sources

Agence web PrestaShop & WordPress

Agence web spécialisée PrestaShop et WordPress : création, maintenance, sécurité, performance et référencement. Nos tutoriels sont issus de nos interventions sur de vraies boutiques.

L'agence Genisoft → LinkedIn →