# Refuser l'entraînement des IA sans quitter Google : le robots.txt qui trie

> Le robots.txt a été inventé pour une seule question : as-tu le droit d'explorer ? Les robots d'IA en posent trois. Les jetons à bloquer, ceux à garder, un fichier testé avec le parseur de Google, et ce que mes journaux disent des robots qui empruntent un nom d'IA.


*Ou : Comment écrire une règle pour les robots honnêtes, et découvrir que les autres portent leur nom*

Le fichier robots.txt a été inventé pour répondre à une seule question : est-ce que tu as le droit d'explorer cette page ? Les robots d'intelligence artificielle en posent trois, très différentes. Puis-je l'indexer pour un moteur de recherche ? Puis-je m'en servir pour entraîner un modèle ? Puis-je la lire maintenant, parce qu'un humain me l'a demandé ? Une seule ligne `User-agent: *` ne sait pas distinguer ces trois demandes. Bonne nouvelle : les grands éditeurs ont fini par donner un nom différent à chacune, et un robots.txt bien écrit peut refuser l'entraînement sans toucher à la recherche. Moins bonne nouvelle : dans mes journaux, ceux qui portent ces noms avec le plus d'insistance ne sont pas toujours ceux qui les ont déposés.

[L'article d'hier sur llms.txt](/blog/llms-txt-faut-il-en-creer-un/) s'arrêtait sur la vraie question : qui a le droit de lire tes pages, et pour en faire quoi. Elle se règle ici.

## robots.txt et robots d'IA : trier l'indexation, l'entraînement et la lecture à la demande
{.subtitle}

### Trois métiers, un jeton pour chacun

Chaque éditeur documente ses robots sur une page officielle, et c'est la seule source qui compte : les listes de blogs se recopient entre elles, erreurs comprises. Voici ce que disent ces pages, relues le 12 octobre 2026.

| Éditeur | Indexation pour la recherche | Entraînement de modèles | Lecture à la demande d'un utilisateur |
|---|---|---|---|
| Google | `Googlebot` | `Google-Extended`, un jeton sans robot propre | (hors sujet ici) |
| OpenAI | `OAI-SearchBot` | `GPTBot` | `ChatGPT-User` |
| Anthropic | `Claude-SearchBot` | `ClaudeBot` | `Claude-User` |
| Perplexity | `PerplexityBot`, sans entraînement selon Perplexity | aucun jeton documenté | `Perplexity-User` |
| Apple | `Applebot` | `Applebot-Extended`, un jeton sans robot propre | (hors sujet ici) |
| Meta | `meta-externalagent` sert aux deux | `meta-externalagent` | `meta-externalfetcher` |
| Common Crawl | `CCBot` constitue une archive ouverte du web, que d'autres réutilisent | | |

Deux lignes demandent une explication. `Google-Extended` et `Applebot-Extended` ne visitent rien. Google le dit sans détour : Google-Extended n'a pas de chaîne d'agent propre, l'exploration se fait avec les robots habituels, et le jeton décide seulement si le contenu peut servir à entraîner les futurs modèles Gemini et à ancrer leurs réponses. Il n'a, toujours selon Google, aucun effet sur la présence dans la recherche ni sur le classement[^1]. Apple tient le même discours pour Applebot-Extended[^2]. Ce sont des interrupteurs d'usage, pas des visiteurs.

La troisième colonne est la plus délicate. OpenAI prévient que pour ChatGPT-User, les règles du robots.txt « may not apply », puisque c'est un utilisateur qui déclenche la visite[^3]. Perplexity écrit que son lecteur à la demande « generally ignores robots.txt rules », et Meta dit la même chose du sien[^4]. Anthropic, de son côté, affirme respecter le robots.txt pour ses trois robots, y compris l'extension non standard `Crawl-delay`[^5].

### Le fichier qui garde la recherche et ferme l'entraînement

```text
# Recherche et lecture à la demande : tout le monde passe.
User-agent: *
Allow: /

# Entraînement de modèles : non.
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: meta-externalagent
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /

Sitemap: https://benoit.gouthiere.be/sitemap.xml
```

Plusieurs lignes `User-agent` qui se suivent forment un seul groupe, qui partage les mêmes règles. Les robots de recherche n'ont pas de groupe à eux, ils tombent dans `*` et passent. Le nom du robot se compare sans tenir compte de la casse, comme l'exige la RFC 9309, qui a normalisé le format en 2022[^6].

Je ne voulais pas le croire sur parole. J'ai testé ce fichier avec grobotstxt 1.0.3, un portage en Go du parseur que Googlebot utilise en production, sous Go 1.27.1. GPTBot, ClaudeBot, CCBot, meta-externalagent et les deux jetons « Extended » sont refusés sur `/blog/`, `gptbot` écrit en minuscules aussi. Googlebot, Bingbot, Applebot, OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User et PerplexityBot passent.

Le même test révèle le piège classique : un robot qui a son propre groupe ignore entièrement le groupe `*`. Si ton `*` interdit `/brouillons/` et que tu ajoutes un groupe `OAI-SearchBot` avec `Allow: /` pour lui faire une fleur, OAI-SearchBot peut désormais lire tes brouillons. Chaque groupe nommé doit répéter les interdictions communes. À l'intérieur d'un groupe, en revanche, la règle la plus longue l'emporte : `Disallow: /` suivi de `Allow: /blog/` laisse passer le blog et rien d'autre.

### Ce que robots.txt ne fait pas

La RFC 9309 le dit en une phrase : ces règles « are not a form of access authorization »[^6]. Le robots.txt est une demande polie, publiée à la racine du site, que les robots honnêtes lisent et que les autres ignorent. Il ne protège rien. Pire, il publie la liste de ce que tu préférerais qu'on ne regarde pas.

**DevOps Dave :** J'ai bloqué GPTBot dans le robots.txt. Mes fichiers de configuration sont à l'abri.

**Security Sarah :** Tes fichiers de configuration sont à l'abri parce qu'ils ne sont pas dans le dossier public. Le robots.txt n'y est pour rien.

**DevOps Dave :** Et ceux qui les cherchent quand même ?

**Security Sarah :** Ils ne lisent pas le robots.txt. Certains s'appellent GPTBot, mais ils ne sont pas GPTBot.

### Ce que racontent mes journaux

Le robots.txt de ce site, au moment où j'écris, tient en trois lignes : `User-agent: *`, `Allow: /` et l'adresse du sitemap. Il laisse donc passer tout le monde, robots d'entraînement compris. Conséquence honnête : mes journaux ne peuvent pas dire qui respecterait une interdiction, puisqu'il n'y en a aucune. Ils disent autre chose, mesuré sur les journaux du serveur, du 14 décembre 2025 au 12 octobre 2026, avec [la méthode décrite dans l'article sur la mesure d'audience](/blog/analytics-sans-javascript-journaux-serveur/).

Qui lit le fichier, d'abord. Les requêtes qui s'annoncent ClaudeBot l'ont demandé 1 888 fois sur 7 045, celles d'OAI-SearchBot 1 018 fois sur 1 942. Les requêtes qui s'annoncent GPTBot, elles, ne l'ont jamais demandé, pas plus que meta-externalagent. Je n'en tire aucune conclusion : rien ne dit que ces robots ne lisent pas le fichier sous un autre nom, et OpenAI ne documente pas ce détail.

Qui porte un nom qui n'est pas le sien, ensuite. Et là, le journal devient franchement drôle.

| Agent annoncé | Requêtes | En erreur | Ce qu'il cherchait |
|---|---|---|---|
| `GPTBot`, depuis des adresses hors des plages d'OpenAI | 138 | 130 | fichiers de configuration et de clés |
| `anthropic-ai`, un nom absent de la documentation d'Anthropic | 1 158 | 1 158 | idem, en août 2026 |
| `Google-Extended`, un jeton qui n'a pas d'agent | 97 | 95 | idem, hors des plages de Google |

Les vraies requêtes de GPTBot, celles qui viennent des plages d'adresses publiées par OpenAI, sont 3 090, et presque toutes ont reçu une page. Les 138 autres viennent de 14 adresses hors de ces plages et visent des fichiers qu'aucun site sérieux ne publie. Quant à `Google-Extended`, Google affirme qu'aucun robot ne s'annonce sous ce nom : chaque requête qui le porte est donc un mensonge, par définition. Aucune de ses 8 adresses ne figure dans les plages que Google publie pour ses robots[^7]. Le détail piquant est ailleurs : leur nom inverse se termine en `googleusercontent.com`, l'un des trois domaines que Google cite pour vérifier ses robots. Un contrôle qui se contenterait de ce suffixe les laisserait passer. Le motif exact, `bc.googleusercontent.com`, ne correspond pourtant à aucun de ceux que Google documente, et la comparaison avec les plages d'adresses tranche sans ambiguïté.

La leçon est double. Le nom d'un robot d'IA est devenu un déguisement à la mode chez les scanners de vulnérabilités, probablement parce que beaucoup de sites laissent passer ces noms sans réfléchir. Et un robots.txt, aussi bien écrit soit-il, ne parle qu'aux robots qui l'écoutent. Pour les autres, il faut un pare-feu, des listes d'adresses vérifiées, et surtout rien de secret dans le dossier servi.

Reste le cas de Bytespider, qui s'annonce comme le robot de ByteDance : 21 625 requêtes sur la période, plus que tous les robots d'OpenAI réunis, et 876 lectures du robots.txt. Je n'ai pas trouvé de page officielle de ByteDance qui décrive ce robot et ce qu'il fait des pages lues. C'est pour cette raison qu'il n'apparaît pas dans le fichier d'exemple : je ne range pas un robot dans la colonne « entraînement » sur la foi d'un blog.

Bloquer l'entraînement ou non relève d'une décision éditoriale, pas technique. Le fichier qui la traduit, lui, tient en une dizaine de lignes, et il se teste comme du code. C'est encore la partie la plus facile de l'histoire : écrire une règle pour des robots qui la lisent. Les autres, eux, n'ont jamais eu besoin d'invitation.

---

[^1]: La [liste des robots courants de Google](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers), mise à jour le 14 juillet 2026, précise : « Google-Extended doesn't have a separate HTTP request user agent string. Crawling is done with existing Google user agent strings. » Et plus loin : « Google-Extended does not impact a site's inclusion in Google Search nor is it used as a ranking signal in Google Search. »

[^2]: La [page d'Apple sur Applebot](https://support.apple.com/en-us/119829) écrit qu'Applebot-Extended « does not crawl webpages » et qu'il sert seulement à déterminer comment utiliser les données lues par Applebot. Les pages qui l'interdisent restent dans les résultats de recherche d'Apple.

[^3]: La [documentation d'OpenAI sur ses robots](https://developers.openai.com/api/docs/bots) décrit OAI-SearchBot pour la recherche dans ChatGPT, GPTBot pour l'entraînement de ses modèles, et ChatGPT-User pour les visites déclenchées par un utilisateur, avec cette réserve : « Because these actions are initiated by a user, robots.txt rules may not apply ». Chaque réglage est indépendant des autres, et OpenAI publie les plages d'adresses de chacun, dont [celles de GPTBot](https://openai.com/gptbot.json).

[^4]: La [documentation de Perplexity](https://docs.perplexity.ai/docs/resources/perplexity-crawlers) affirme que PerplexityBot « is not used to crawl content for AI foundation models » et que Perplexity-User « generally ignores robots.txt rules ». La [page de Meta sur ses robots](https://developers.facebook.com/documentation/sharing/webmasters/web-crawlers) attribue à meta-externalagent l'entraînement de modèles et l'indexation, et indique que meta-externalfetcher, déclenché par un utilisateur, peut contourner le robots.txt.

[^5]: La [page d'aide d'Anthropic sur l'exploration du web](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler) décrit ClaudeBot, Claude-User et Claude-SearchBot, et précise que les robots d'Anthropic respectent le robots.txt ainsi que l'extension non standard Crawl-delay. Interdire ClaudeBot signale que les contenus futurs du site doivent être exclus des données d'entraînement.

[^6]: La [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html), publiée en septembre 2022, impose la comparaison du nom de robot sans tenir compte de la casse, retient la règle la plus spécifique, celle qui compte le plus d'octets, et rappelle que ces règles « are not a form of access authorization ». Elle demande aussi aux robots de ne pas garder une copie du fichier plus de 24 heures.

[^7]: Google publie les [plages d'adresses de ses robots courants](https://developers.google.com/static/crawling/ipranges/common-crawlers.json), avec des fichiers voisins pour ses robots spéciaux et ses lecteurs à la demande. Les 8 adresses qui s'annonçaient `Google-Extended` dans mon journal n'apparaissent dans aucun de ces fichiers, consultés le 12 octobre 2026. La [page de Google sur la vérification de ses robots](https://developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests) propose deux méthodes, une recherche DNS inverse pour les contrôles ponctuels et la comparaison avec ces listes pour les contrôles en masse. Elle donne aussi la forme exacte des noms inverses : `crawl-….googlebot.com` pour les robots courants, `….gae.googleusercontent.com` ou `google-proxy-….google.com` pour les lecteurs à la demande. Un contrôle qui se contenterait du suffixe `googleusercontent.com` laisserait passer ces faux robots, dont les noms inverses se terminent en `bc.googleusercontent.com`. La [page de Common Crawl sur CCBot](https://commoncrawl.org/ccbot) signale le même phénomène de son côté : l'organisation se dit « aware of crawlers falsely identifying themselves as CCBot ».



