Comment bloquer les crawlers d'IA sur votre serveur
Dernière mise à jour:
Les entreprises d'IA parcourent le web pour entraîner leurs modèles, alimenter la recherche par IA et récupérer des pages quand un utilisateur pose une question à leur sujet. Sur un petit serveur, la charge seule peut poser problème, et beaucoup de propriétaires de sites ne veulent pas que leur contenu serve à l'entraînement.
Il existe quatre outils, et ils donnent le meilleur d'eux-mêmes ensemble : robots.txt pour les crawlers qui le respectent, des règles sur le user agent dans le serveur web pour ceux qui s'annoncent, le DNS inverse ou les listes d'IP publiées pour distinguer un vrai crawler d'un faux, et la limitation de débit pour tout le reste. Les commandes sont pour nginx et Apache sur Debian, Ubuntu et la famille RHEL.
Savoir à quels crawlers vous avez affaire
Les principaux, en octobre 2026, d'après la documentation de chaque opérateur. Certains sont des crawlers ; d'autres ne sont que des jetons robots.txt qui contrôlent l'usage des données collectées par un autre crawler.
| Nom | Opérateur | Ce qu'il fait |
|---|---|---|
GPTBot | OpenAI | Collecte du contenu susceptible de servir à entraîner les modèles d'OpenAI. Liste d'IP publiée. |
OAI-SearchBot, ChatGPT-User | OpenAI | La recherche de ChatGPT, et les pages récupérées à la demande d'un utilisateur. OpenAI indique que robots.txt peut ne pas s'appliquer à ChatGPT-User. |
ClaudeBot, Claude-SearchBot, Claude-User | Anthropic | Entraînement, recherche, et pages récupérées pour un utilisateur. Anthropic indique qu'ils respectent robots.txt. Liste d'IP publiée. |
Google-Extended | Uniquement un jeton robots.txt, sans user agent propre : il contrôle l'usage pour l'entraînement et le grounding de Gemini. Il n'a pas d'effet sur la recherche Google. | |
Applebot-Extended | Apple | Uniquement un jeton robots.txt : il contrôle l'usage de ce que collecte Applebot pour l'entraînement des modèles d'Apple. |
CCBot | Common Crawl | Construit le jeu de données Common Crawl, très utilisé pour entraîner des modèles. Vérifiable par DNS inverse. |
meta-externalagent | Meta | Collecte pour des usages comme l'entraînement de modèles d'IA. |
PerplexityBot, Perplexity-User | Perplexity | La recherche de Perplexity, et les pages récupérées pour un utilisateur. Perplexity indique que Perplexity-User ignore en général robots.txt. |
Décidez selon l'usage. Bloquer les crawlers d'entraînement tient votre contenu à l'écart des futurs jeux d'entraînement ; bloquer aussi la recherche par IA et les récupérations pour un utilisateur retire votre site de ces réponses, et des visites qu'elles amènent. Pour voir lesquels atteignent votre serveur, comptez les user agents dans le log d'accès :
sudo awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Leur demander de rester à l'écart avec robots.txt
Placez un robots.txt à la racine de chaque hôte que vous voulez couvrir (chaque sous-domaine a le sien). Plusieurs lignes User-agent peuvent partager une même règle :
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: meta-externalagent
Disallow: /Cette liste bloque l'entraînement et laisse la recherche tranquille. Ajoutez OAI-SearchBot, Claude-SearchBot et PerplexityBot pour rester aussi en dehors de la recherche par IA. Gardez en dessous vos règles existantes pour les autres crawlers, et n'écrivez jamais User-agent: * avec Disallow: /, sauf si vous voulez aussi disparaître de Google et de Bing.
Ce que robots.txt ne peut pas faire
- C'est une demande. Les crawlers qui le respectent s'arrêtent ; les autres non, et rien ne vous dit lesquels sont lesquels.
- Les récupérations déclenchées par un utilisateur peuvent ne pas l'appliquer, de l'aveu même de leurs opérateurs.
- Les modifications prennent du temps : les opérateurs mettent le fichier en cache, souvent jusqu'à une journée.
- Un scraper qui cache son nom ou se fait passer pour un navigateur n'est pas concerné du tout.
Bloquer par user agent dans nginx ou Apache
Le serveur web peut refuser les crawlers qui s'annoncent. Cela les arrête même s'ils ignorent robots.txt, tant qu'ils gardent leur nom.
nginx
Le map va dans le contexte http : les fichiers de /etc/nginx/conf.d/ y sont inclus par les paquets de Debian, d'Ubuntu et de la famille RHEL.
sudo tee /etc/nginx/conf.d/ai-crawlers.conf > /dev/null <<'EOF'
map $http_user_agent $ai_crawler {
default 0;
~*(GPTBot|ClaudeBot|CCBot|meta-externalagent|PerplexityBot) 1;
}
EOFAjoutez ensuite ceci dans chaque bloc server qui doit les refuser, dans /etc/nginx/sites-available/ sur Debian et Ubuntu ou /etc/nginx/conf.d/ sur la famille RHEL :
if ($ai_crawler) {
return 403;
}Testez la configuration, rechargez et vérifiez : le premier curl doit afficher 403, le second 200 (remplacez example.com par votre site).
sudo nginx -t && sudo systemctl reload nginx
curl -s -o /dev/null -w "%{http_code}\n" -A "GPTBot/1.2" https://example.com/
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/Attention: Gardez des motifs exacts. Un motif comme bot ou Google bloque aussi Googlebot et Bingbot, et votre site sort des moteurs de recherche. Google-Extended et Applebot-Extended ne sont pas des user agents : leur place est uniquement dans robots.txt.
Apache
Avec mod_rewrite, dans chaque <VirtualHost> (celui du port 80 comme celui du port 443) ou dans le .htaccess du site. Les règles de réécriture de la configuration principale ne s'appliquent pas aux virtual hosts.
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|ClaudeBot|CCBot|meta-externalagent|PerplexityBot) [NC]
RewriteRule ^ - [F]sudo a2enmod rewrite
sudo apachectl configtest && sudo systemctl reload apache2sudo apachectl configtest && sudo systemctl reload httpdRemarque: Dans .htaccess, les règles demandent AllowOverride FileInfo (ou All) pour ce répertoire. Sur un hébergement mutualisé, c'est généralement déjà le cas.
Vérifier les vrais robots par DNS inverse
N'importe qui peut envoyer User-Agent: Googlebot. Les scrapers le font pour passer les règles qui autorisent les moteurs de recherche. Un vrai crawler se confirme par un DNS inverse confirmé dans le sens direct : l'adresse se résout en un nom dans le domaine de l'opérateur, et ce nom se résout à son tour vers la même adresse.
sudo apt install -y bind9-hostsudo dnf install -y bind-utilsip=66.249.66.1
name=$(host "$ip" | awk '/pointer/ {print $NF; exit}' | sed 's/\.$//')
echo "$name"
host "$name" | awk '{print $NF}' | grep -qxF "$ip" && echo "confirmed" || echo "NOT confirmed"- Googlebot :
googlebot.comougoogle.com. Bingbot :search.msn.com. Applebot :applebot.apple.com. CCBot :crawl.commoncrawl.org. - Un nom dans un autre domaine, ou qui ne se résout pas vers l'adresse de départ, est un faux.
OpenAI, Anthropic, Perplexity et Common Crawl publient plutôt les plages d'adresses de leurs crawlers en JSON (les liens se trouvent dans la documentation de chaque opérateur). Ce script vérifie une adresse par rapport à une telle liste :
python3 - 20.171.207.10 https://openai.com/gptbot.json <<'EOF'
import ipaddress, json, sys, urllib.request
ip = ipaddress.ip_address(sys.argv[1])
req = urllib.request.Request(sys.argv[2], headers={"User-Agent": "Mozilla/5.0"})
prefixes = json.load(urllib.request.urlopen(req))["prefixes"]
nets = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix")) for p in prefixes]
print("in the list" if any(ip in n for n in nets) else "NOT in the list")
EOFCes mêmes listes JSON peuvent être chargées dans un bloc geo de nginx ou dans le pare-feu, si vous voulez n'autoriser que les vrais crawlers qui utilisent un nom donné.
Limiter le débit des crawlers
Une limitation de débit fonctionne quel que soit le nom que se donne un crawler, et protège le serveur de ceux qui crawlent trop vite. Dans nginx, cette configuration limite chaque adresse dont le user agent ressemble à un robot à 30 requêtes par minute, avec une courte rafale ; les autres visiteurs ne sont pas comptés, car une clé vide n'est pas limitée.
sudo tee /etc/nginx/conf.d/bot-limit.conf > /dev/null <<'EOF'
map $http_user_agent $bot_key {
default "";
~*(bot|crawler|spider|scraper) $binary_remote_addr;
}
limit_req_zone $bot_key zone=bots:10m rate=30r/m;
limit_req_status 429;
EOFPuis, dans les blocs server ou location des pages dynamiques, et rechargez comme plus haut :
limit_req zone=bots burst=10 nodelay;Attention: Derrière un CDN ou un proxy, chaque requête vient de l'adresse du proxy : configurez d'abord set_real_ip_from et real_ip_header, sinon la limite s'applique à tous les visiteurs ensemble. Les moteurs de recherche ralentissent quand ils reçoivent des 429 : gardez donc un débit généreux.
Apache n'a pas de limite de requêtes par adresse en natif (mod_ratelimit limite la bande passante). Les options habituelles sont mod_evasive, une jail fail2ban sur le log d'accès, ou nginx ou un CDN placé devant.
Quand un crawler ignore tout
Si un crawler ignore robots.txt et change de user agent, bloquez au pare-feu les adresses qu'il utilise (remplacez la plage d'exemple) :
sudo ufw insert 1 deny from 198.51.100.0/24sudo firewall-cmd --permanent --zone=drop --add-source=198.51.100.0/24
sudo firewall-cmd --reloadComment InfraFence gère les crawlers d'IA
La gestion des robots d'InfraFence lit les logs d'accès du serveur web et reconnaît environ 1 500 robots grâce à des listes publiques mises à jour chaque jour. Les crawlers d'IA forment une catégorie à part.
- Pour chaque catégorie, ou pour un robot précis, vous choisissez : autoriser, journaliser seulement ou bloquer. Les modifications arrivent sur vos serveurs en quelques secondes.
- Chaque robot est accompagné d'une explication en langage clair : qui l'exploite, à quoi il sert (entraînement, recherche, assistant, agent) et s'il déclare respecter robots.txt.
- Quand un robot réglé sur bloquer apparaît dans le log, son adresse est bannie au pare-feu. Le bannissement part du log : la requête qui l'a révélé a donc déjà reçu sa réponse.
- Les robots qui se présentent comme un moteur de recherche ou un autre crawler connu, comme Googlebot, Bingbot ou Applebot, sont vérifiés par DNS inverse confirmé dans le sens direct, et les faux sont signalés comme usurpés.
- Les requêtes qui ressemblent à un robot sans correspondre à aucun robot connu sont signalées comme robots inconnus.
Les crawlers d'IA sont reconnus à leur user agent. Un scraper qui cache son nom est laissé au pare-feu web, qui attribue un score à chaque visiteur selon ce qu'il fait. InfraFence ne modifie pas votre robots.txt : les étapes ci-dessus restent utiles à côté.
Questions
- Bloquer les crawlers d'IA nuit-il à mon référencement Google ?
- Pas si vous bloquez les bons noms. Selon Google,
Google-Extendeddans robots.txt n'a pas d'effet sur la recherche Google. BloquerGooglebot, ou un motif qui lui correspond, en a un. - robots.txt suffit-il ?
- Pour les crawlers qui le respectent, oui. Il ne fait rien contre ceux qui l'ignorent ou cachent leur nom : c'est pour cela qu'existent les règles sur le user agent et la limitation de débit.
- Faut-il bloquer aussi les crawlers de recherche par IA ?
- Cela dépend de votre envie d'apparaître dans les réponses des IA. Les bloquer tient votre contenu à l'écart de ces réponses et vous prive des visites qu'elles amènent. Beaucoup de sites bloquent les crawlers d'entraînement et autorisent la recherche.
Essayez gratuitement sur 1 serveur
Starter est gratuit pour un serveur, avec la protection complète et le blocage automatique. Sans carte bancaire.
Installez l'agent en root, avec votre jeton à la place de <TOKEN> :
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>Le jeton se crée dans le tableau de bord, dans Serveurs › Ajouter un serveur.
