SeAudit
Tous les articles
SEO technique·8 min·2026-09-16

GPTBot, ClaudeBot : vérifier qu'un bot IA est authentique en 2026

Usurper GPTBot prend 5 secondes de curl. Les 2 méthodes pour vérifier qu'un crawler IA est réel (DNS croisé, plages IP) et la grille autoriser/limiter/bloquer.

Illustration éditoriale minimaliste d'un bouclier géométrique abstrait filtrant des lignes de connexion entre des blocs rectangulaires neutres, symbolisant la vérification d'un robot d'indexation.

Un bot débarque sur ton site, se présente comme GPTBot, aspire vingt pages en trente secondes, puis disparaît. Tu le laisses passer parce que ton robots.txt autorise OpenAI et que bloquer un crawler IA, c'est perdre de la visibilité GEO. Sauf qu'usurper un user-agent prend cinq secondes de curl, et rien ne prouve que ce visiteur était vraiment GPTBot. Ça pouvait tout aussi bien être un concurrent qui aspire tes prix, un scraper qui revend ton contenu à un modèle tiers, ou un outil de veille qui contourne ton paywall en se faisant passer pour un robot que tu as choisi de laisser entrer.

Ce guide détaille comment distinguer un vrai crawler IA d'un usurpateur, avec les deux méthodes de vérification qui comptent réellement, un script prêt à copier, et la grille de décision pour savoir quoi faire une fois le diagnostic posé.

Le user-agent ne prouve rien : usurper GPTBot prend cinq secondes

curl -A "GPTBot" https://tonsite.fr/tarifs

Cette commande suffit à se faire passer pour GPTBot aux yeux de n'importe quel serveur qui ne vérifie que l'en-tête User-Agent. Aucune barrière technique n'empêche un script, un concurrent ou un scraper malveillant de déclarer le user-agent de son choix. C'est un problème de fond très différent du SEO classique : ignorer un Disallow dans ton robots.txt est déjà une violation de la convention pour un vrai bot, mais un usurpateur n'a même pas besoin de l'ignorer, il se contente de se faire passer pour un bot que tu as explicitement autorisé.

Les conséquences concrètes : un concurrent qui surveille tes prix en continu sans jamais apparaître dans tes outils d'analyse classiques (puisqu'il se fond dans le trafic "IA légitime" que tu as choisi de ne pas bloquer), un contenu premium aspiré et republié ailleurs, ou un pic de charge serveur attribué à tort à un vrai pic de crawl OpenAI alors qu'il s'agit d'un bot mal codé qui martèle tes pages sans respecter de délai.

Qui sont vraiment GPTBot, ClaudeBot et PerplexityBot

Avant de vérifier un crawler, il faut savoir ce que chaque bot est censé faire. Les opérateurs IA séparent en général leurs bots d'entraînement de leurs bots de citation en temps réel, une distinction déjà détaillée dans notre guide pour bloquer les crawlers d'entraînement IA :

BotOpérateurRôleRespecte robots.txt
GPTBotOpenAIEntraînement des modèlesOui
OAI-SearchBotOpenAIIndexation pour ChatGPT SearchOui
ChatGPT-UserOpenAIRequête déclenchée par un utilisateur en directOui
ClaudeBotAnthropicEntraînement des modèlesOui, reverse DNS parfois absent
Claude-SearchBotAnthropicCitation et rechercheOui
PerplexityBotPerplexityIndexation et citationComportement variable signalé
GooglebotGoogleRéférence historique, sert de témoin de comparaisonOui

Retiens surtout que le nom du bot dans le user-agent ne te dit rien sur sa légitimité tant que tu ne l'as pas vérifié par un des deux moyens ci-dessous.

Méthode 1 : la vérification DNS dans les deux sens

La méthode la plus fiable pour un trafic ponctuel combine une résolution DNS inverse et une confirmation dans l'autre sens :

  1. Résolution inverse. Tu pars de l'adresse IP du visiteur et tu cherches à quel nom d'hôte elle correspond.
  2. Validation du domaine. Ce nom d'hôte doit appartenir au domaine officiel de l'opérateur (openai.com pour GPTBot, anthropic.com pour ClaudeBot, googlebot.com pour Googlebot).
  3. Confirmation directe. Tu résous ce nom d'hôte à nouveau dans l'autre sens et tu vérifies qu'il retombe bien sur la même adresse IP de départ.
host 20.171.207.113
# => 113.207.171.20.in-addr.arpa domain name pointer crawl-xxxx.crawl.openai.com.

host crawl-xxxx.crawl.openai.com
# => crawl-xxxx.crawl.openai.com has address 20.171.207.113

Si les deux adresses IP correspondent et que le nom d'hôte appartient bien au domaine attendu, le bot est authentique. La confirmation dans les deux sens n'est pas un détail : une résolution inverse seule peut être falsifiée par quiconque contrôle la zone DNS inverse de son propre bloc IP, alors que la boucle complète (inverse puis direct) est beaucoup plus difficile à truquer.

Méthode 2 : les plages IP publiées

OpenAI, Anthropic et Perplexity publient des listes d'adresses IP (souvent au format CIDR ou JSON) correspondant à leurs crawlers officiels. Comparer l'IP source à ces listes est plus rapide qu'une résolution DNS à chaque requête, à condition de rafraîchir le fichier régulièrement puisque ces plages évoluent. C'est aussi la méthode de secours recommandée pour ClaudeBot, dont la résolution DNS inverse n'est pas toujours fiable selon les retours d'implémentation observés en 2026 : dans ce cas, la correspondance avec la plage IP publiée par Anthropic devient la vérification principale plutôt qu'un complément.

En pratique, la combinaison la plus robuste reste : IP dans la plage publiée ET résolution DNS croisée cohérente quand elle est disponible. Un seul des deux signaux positifs suffit rarement à trancher pour un trafic à fort enjeu (zone de prix, contenu payant, formulaires).

Un script pour ne plus le faire à la main

Vérifier manuellement chaque requête n'a aucun sens à l'échelle d'un site qui reçoit plusieurs centaines de passages de bots par jour. Voici la logique à automatiser dans ton middleware ou ton reverse proxy :

#!/usr/bin/env bash
# verify-ai-bot.sh <IP> <USER_AGENT>
IP="$1"
UA="$2"

HOSTNAME=$(host "$IP" | awk '/pointer/ {print $NF}' | sed 's/.$//')

if [[ -z "$HOSTNAME" ]]; then
  echo "SPOOF_SUSPECTED: aucune resolution inverse pour $IP (UA: $UA)"
  exit 1
fi

case "$UA" in
  *GPTBot*|*OAI-SearchBot*|*ChatGPT-User*) EXPECTED="openai.com" ;;
  *ClaudeBot*|*Claude-SearchBot*) EXPECTED="anthropic.com" ;;
  *PerplexityBot*) EXPECTED="perplexity.com" ;;
  *) echo "UNKNOWN_BOT: $UA"; exit 2 ;;
esac

if [[ "$HOSTNAME" != *"$EXPECTED" ]]; then
  echo "SPOOF_CONFIRMED: $HOSTNAME n'appartient pas a $EXPECTED (UA: $UA)"
  exit 1
fi

FORWARD_IP=$(host "$HOSTNAME" | awk '/has address/ {print $NF}')
if [[ "$FORWARD_IP" != "$IP" ]]; then
  echo "SPOOF_CONFIRMED: la confirmation directe ne correspond pas (UA: $UA)"
  exit 1
fi

echo "VERIFIED: $UA depuis $IP ($HOSTNAME)"

Journalise le résultat (VERIFIED, SPOOF_SUSPECTED, SPOOF_CONFIRMED) avec l'IP, le user-agent et l'URL demandée. C'est ce journal qui te permettra de répondre à la question qui compte vraiment : qui aspire réellement ton site sous couvert d'un nom de bot connu.

Autoriser, limiter ou bloquer : la grille de décision

Résultat de la vérificationAction recommandée
Bot de citation vérifié (OAI-SearchBot, Claude-SearchBot, PerplexityBot confirmé)Laisser passer, c'est ta visibilité GEO
Bot d'entraînement vérifié (GPTBot, ClaudeBot confirmé)Décision stratégique propre à ton contenu, voir notre guide sur le blocage des crawlers d'entraînement
User-agent IA connu mais échec de la double vérificationBloquer ou limiter fortement, et journaliser pour investigation
Volume anormal même vérifiéRate-limiter par IP plutôt que bloquer, pour ne pas perdre la citation

Les règles d'autorisation dans robots.txt que nous détaillons dans notre guide robots.txt 2026 ne sont qu'une déclaration d'intention : elles indiquent ce qu'un bot respectueux doit faire, pas ce qu'un usurpateur va faire. La vérification technique en amont, elle, s'applique à tout le trafic, respectueux ou non.

Ce qu'on trouve en pratique sur un audit

Sur un audit récent mené par SeAudit pour un site e-commerce de taille moyenne, l'analyse des logs sur trente jours a fait remonter 1 240 requêtes affichant un user-agent GPTBot. Après passage au script de vérification ci-dessus, seules 890 d'entre elles (72 %) ont validé la double résolution DNS. Les 350 restantes provenaient d'un unique bloc d'adresses IP non documenté, concentré sur les pages de tarification et de comparatif produit, un schéma typique de surveillance concurrentielle plutôt que d'un vrai passage OpenAI. Ce type d'écart ne se voit dans aucun outil analytics classique tant que personne n'a vérifié la légitimité du user-agent déclaré.

Erreurs courantes

  • Faire confiance au user-agent seul. C'est la faille la plus répandue, et la plus simple à corriger.
  • Vérifier une fois puis ne plus surveiller. Les plages IP publiées changent ; un script qui tournait il y a six mois peut travailler avec une liste obsolète aujourd'hui.
  • Bloquer tous les bots par prudence. Tu perds alors aussi les bots de citation légitimes, donc ta visibilité dans les réponses IA.
  • Ne pas journaliser assez de champs. IP, user-agent, URL et horodatage sont le minimum pour pouvoir enquêter a posteriori sur un pic suspect.

À retenir

Un nom de bot dans le user-agent est une déclaration, pas une preuve. La seule façon de savoir si GPTBot, ClaudeBot ou PerplexityBot est réellement en train de visiter ton site est de croiser une résolution DNS dans les deux sens avec les plages IP publiées par chaque opérateur, puis de journaliser le résultat pour distinguer le vrai trafic IA du trafic usurpé. Envie de savoir où ton propre site se situe sur ces sujets techniques, obtiens ton score /100 en quelques minutes.

Reste visible dans l'IA et sur Google : 1 quick-win par semaine.

Chaque semaine, 1 article SEO + GEO tactique + 1 quick-win à appliquer cette semaine sur ton site. Pas de blabla, pas de cross-sell agressif.

Aucun spam. Désinscription en 1 clic. RGPD ✓