Comment repérer les robots d’IA dans les journaux de son serveur ?
Le journal d’accès du serveur dit quels robots sont passés, sur quelles pages et avec quelle réponse. Quelques commandes suffisent à les compter, à repérer un refus et à relever les adresses qui se présentent sous le même nom. Le nom d’un robot est déclaré par le visiteur : seule la comparaison avec les adresses publiées par l’éditeur permet de s’y fier.
Que contient une ligne du journal, et quels champs lire ?
Une ligne dit qui a demandé quelle page, quand, et avec quelle réponse. Le format « combined » de nginx y range l’adresse, la requête, le statut, le référent et le user-agent. Le journal de cette page est fictif et suit ce format ; si le vôtre diffère, les numéros de champ sont à adapter.
$ grep -m 1 OAI-SearchBot journal-fictif.log
192.0.2.10 - - [24/Oct/2026:08:01:12 +0000] "GET / HTTP/1.1" 200 5120 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot"
- L’adresse du visiteur ouvre la ligne : c’est le champ 1 pour awk, d’après le format décrit par nginx. Les adresses de ce journal sont inventées.
- La requête est entre guillemets : méthode, chemin, protocole. Le chemin est le champ 7, parce que awk coupe aux espaces (format de nginx).
- Le statut suit la requête et forme le champ 9 : 200 pour une page servie, 403 pour un refus, que MDN décrit comme une requête comprise mais non traitée.
- Le user-agent ferme la ligne, entre guillemets, et porte le nom du robot. Il est déclaré par le visiteur, et Google écrit qu’il peut être usurpé.
Comment compter les visites de chaque robot ?
En extrayant le nom du robot de chaque ligne, puis en comptant les lignes identiques. La première commande ci-dessous donne le classement des robots, la deuxième les pages que l’un d’eux a demandées, la troisième le visiteur qui a lu robots.txt. Les noms cherchés sont ceux du tableau des robots documentés.
$ grep -o -E 'OAI-SearchBot|GPTBot|ChatGPT-User|PerplexityBot|Perplexity-User|ClaudeBot|Claude-User|Claude-SearchBot' journal-fictif.log | sort | uniq -c | sort -rn
5 GPTBot
4 OAI-SearchBot
3 PerplexityBot
2 ClaudeBot
1 ChatGPT-User
$ grep GPTBot journal-fictif.log | awk '{print $7, $9}'
/robots.txt 200
/ 200
/tarifs/ 200
/blog/ 200
/blog/ 200
$ grep 'GET /robots.txt' journal-fictif.log | awk '{print $1}'
192.0.2.11
- Le motif de la première commande liste les huit noms documentés par OpenAI, Perplexity et Anthropic, et l’option -o n’affiche que la partie qui correspond.
- Le tri, le comptage puis le tri inverse classent les robots du plus fréquent au moins fréquent. Un nom absent du motif n’apparaît pas : il suffit de l’ajouter.
- La deuxième commande extrait deux champs pour un seul robot : le chemin demandé, champ 7, et le statut, champ 9, selon le format de nginx.
- La troisième relève qui a demandé robots.txt. Lire ce fichier avant d’explorer est un indice de bonne conduite, pas une preuve que le robot en tient compte.
Comment savoir si un robot a été refusé ou a reçu une erreur ?
En comptant les statuts de ses visites, puis en regardant les lignes qui ne sont pas des succès. Un refus répété sur le même chemin se lit tout de suite dans le journal. La commande suivante regroupe les statuts reçus par deux robots, et la dernière isole les lignes de l’un d’eux.
$ grep -E 'GPTBot|ClaudeBot' journal-fictif.log | awk '{print $9}' | sort | uniq -c
6 200
1 403
$ grep ClaudeBot journal-fictif.log | awk '{print $1, $7, $9}'
203.0.113.30 / 200
203.0.113.30 /blog/ 403
- Le premier résultat dit que six visites ont été servies et une refusée. Le statut est le champ 9 de la ligne, d’après le format de nginx.
- La seconde commande montre où : le refus porte sur un seul chemin, alors que la page d’accueil a été servie au même visiteur.
- Pour la suite du diagnostic (règle de robots.txt, pare-feu, réseau de diffusion), voir les lieux où un robot est bloqué.
Comment vérifier qu’un visiteur est bien le robot annoncé ?
En comparant son adresse à celles que l’éditeur publie. Le user-agent est déclaré par le visiteur, et Google écrit qu’il peut être usurpé. Le journal fictif contient une visite qui se dit robot d’OpenAI depuis une adresse absente de la liste.
$ grep GPTBot journal-fictif.log | awk '{print $1}' | sort -u
192.0.2.11
203.0.113.99
$ grep GPTBot journal-fictif.log | awk '{print $1}' | sort -u | grep -v -x -F -f ips-publiees-fictives.txt
203.0.113.99
- La première commande liste les adresses qui se présentent sous le même nom : deux, ici.
- La seconde retire celles qui figurent dans le fichier ips-publiees-fictives.txt. L’option -F lit les lignes comme du texte, et -x exige la ligne entière, pour qu’une adresse n’en recouvre pas une autre.
- Reste une adresse : elle se présente comme le robot d’OpenAI sans figurer dans la liste. Elle est à traiter comme un visiteur non vérifié, non comme le robot annoncé.
- Cette liste est un fichier d’adresses, une par ligne, inventé pour l’exemple. Les fichiers réellement publiés par les éditeurs n’ont pas été ouverts pour cette page : leur structure n’est pas vérifiée, et il faut en tirer les adresses avant d’utiliser la commande.
Les éditeurs décrivent leurs propres moyens de vérification, et ils diffèrent :
- OpenAI et Perplexity publient des adresses IP pour leurs robots, dans des fichiers.
- Anthropic renvoie vers une liste : un robot dont l’adresse source y figure vient d’Anthropic. Elle déconseille le blocage par adresse.
- Google décrit une vérification en quatre temps : recherche DNS inverse, contrôle du nom de domaine, recherche directe, comparaison avec l’adresse du journal. Il publie aussi des plages d’adresses.
Que conclure de ce que l’on voit dans les journaux ?
Qu’un robot est passé, rien de plus. Une visite dit qu’une page a été demandée, pas qu’elle sera citée ou recommandée dans une réponse. Le journal sert à vérifier l’accès, et à constater l’effet d’un changement de configuration, mais jamais à mesurer une visibilité.
- Une visite n’est pas une citation : aucune source consultée ne relie les deux. La visibilité se mesure sur les réponses, pas sur le journal.
- Les robots lancés à la demande d’un utilisateur suivent des règles propres : OpenAI écrit que robots.txt peut ne pas s’appliquer à ces actions, et Perplexity que son robot de ce type ignore en général les règles de robots.txt.
- Un changement de robots.txt n’agit pas tout de suite : OpenAI indique environ 24 heures pour que ses systèmes s’adaptent. Comparer le journal avant et après ce délai.
- Conserver assez d’historique pour comparer des périodes comparables, et noter la date de chaque changement de configuration.
Le journal et la liste d’adresses de cette page sont fictifs, et les commandes y sont exécutées par les tests du site à chaque lancement : la sortie affichée est celle du journal fictif, pas celle d’un serveur réel. Rien ne dit ce qu’un robot fera des pages qu’il a lues.
Questions fréquentes
Où trouver le journal d’accès d’un serveur ?
Cela dépend du serveur. Avec nginx, la configuration par défaut écrit dans logs/access.log au format « combined », d’après la documentation de nginx. L’emplacement réel varie selon l’installation et l’hébergeur. (source)
Le user-agent suffit-il à identifier un robot ?
Non. Google écrit que la chaîne user-agent HTTP peut être usurpée, et décrit une vérification par l’adresse IP et par le nom de domaine inverse de la visite. (source)
Comment vérifier une visite qui se dit Googlebot ?
Par une recherche DNS inverse sur l’adresse du journal, puis en vérifiant que le nom appartient à googlebot.com, google.com ou googleusercontent.com, puis par une recherche directe qui doit redonner la même adresse. (source)
Peut-on bloquer un robot d’IA par son adresse IP ?
Anthropic déconseille cette méthode pour ses robots : bloquer leurs adresses peut ne pas fonctionner correctement ni de façon durable, et empêche en outre le robot de lire robots.txt. (source)
Ce qui a changé
- : Publication.
Sources
- Overview of OpenAI Crawlers (OpenAI), vérifiée le 23 octobre 2026
- Google’s common crawlers (Google Crawling Infrastructure), vérifiée le 23 octobre 2026
- Perplexity Crawlers (Perplexity), vérifiée le 23 octobre 2026
- Does Anthropic crawl data from the web, and how can site owners block the crawler? (Anthropic), vérifiée le 23 octobre 2026
- 403 Forbidden (MDN Web Docs), vérifiée le 23 octobre 2026
- Verify Requests from Google Crawlers and Fetchers (Google Search Central), vérifiée le 24 octobre 2026
- Module ngx_http_log_module (nginx), vérifiée le 24 octobre 2026
À lire aussi
- Rubrique : Agir (toutes les ressources)
- Comment vérifier l’accès des robots d’IA à votre site ?
- Quels sont les robots des IA, à quoi servent-ils et respectent-ils robots.txt ?
- Quel robots.txt copier pour tout ouvrir, n’ouvrir que la recherche ou fermer l’entraînement ?
- Quels points vérifier, dans quel ordre, pour auditer la visibilité d’un site dans les IA ?
- Glossaire : ClaudeBot, GPTBot, PerplexityBot, robots.txt, User-agent