Robots d'IA : visites de GPTBot et ClaudeBot mesurées et blocage avec robots.txt et nginx

Mention d'affiliation v3.1
Mention d'affiliation v3.2 (mobile)
Environnement de test Famille RHELAlmaLinux 9.8Nginx 1.28 + Apache 2.4Vérifié le 2026-10-18

Un robot d'IA est un bot qu'utilisent les entreprises d'IA pour collecter des pages web afin d'entraîner leurs modèles, d'alimenter la recherche IA et de répondre aux questions des utilisateurs. Pour voir à quelle fréquence ces bots visitent un serveur en configuration Nginx + Apache, j'ai comparé les UA de 14 jours de journaux d'accès du serveur d'origine aux plages d'IP publiées par chaque entreprise : les requêtes venant des plages officielles s'élevaient à 18 605, et j'ai résumé, d'après la documentation officielle, les réglages pour les bloquer ou les autoriser dans robots.txt et nginx.

La période va du 4 au 17 octobre 2026 ; les requêtes servies par le cache frontal sans atteindre le serveur d'origine et celles dont l'IP réelle n'a pas été enregistrée ne sont pas comptées.

1️⃣ Repérer les robots d'IA : UA du journal d'accès et plages d'IP publiées

Toutes les requêtes enregistrées comme GPTBot ne viennent pas d'OpenAI. L'UA est un texte que l'expéditeur écrit lui-même, donc n'importe qui peut envoyer des requêtes sous le nom de GPTBot ou de ClaudeBot.

Je compte donc d'abord les requêtes par nom de bot selon l'UA, puis je les compare aux plages d'IP publiées par chaque entreprise. Voici le décompte des noms de bots d'IA sur une journée de journaux.

grep -oiE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Bytespider|CCBot|Amazonbot|meta-externalagent)/' access.log-20261018 | sort | uniq -c | sort -rn
   2968 GPTBot/
   2084 ClaudeBot/
    622 meta-externalagent/
    535 Amazonbot/
    167 PerplexityBot/
     99 OAI-SearchBot/
     30 ChatGPT-User/
     21 Claude-User/
     17 Claude-SearchBot/
     12 Meta-ExternalAgent/
     10 Perplexity-User/
      7 CCBot/

En comptant avec [/] après le nom, on écarte le texte qui n'est pas un nom, comme l'adresse de contact claudebot@ dans l'UA de Claude-SearchBot, et les noms enregistrés avec une casse différente sont comptés à part. Ensuite, je vérifie dans la première colonne de quelles IP venaient les requêtes de GPTBot.

grep 'GPTBot/' access.log-20261018 | awk '{print $1}' | sort | uniq -c | sort -rn | head -5
   2524 74.7.x.x
    428 185.152.x.x
     12 34.53.x.x
      1 74.7.x.x
      1 172.182.x.x

Pour les requêtes passées par un CDN ou un proxy, la première colonne enregistre l'adresse du serveur intermédiaire : comparez ces lignes avec l'adresse de la colonne X-Forwarded-For en fin de ligne. OpenAI publie les plages d'IP de GPTBot dans un fichier JSON.

curl -s https://openai.com/gptbot.json -o gptbot.json

Pour vérifier si une IP figure dans le fichier de plages téléchargé, on utilise ipaddress, un module standard de Python.

# inrange.py — vérifie si une IP figure dans un fichier JSON de plages
import json, sys, ipaddress
nets = [ipaddress.ip_network(p.get('ipv4Prefix') or p.get('ipv6Prefix')) for p in json.load(open(sys.argv[1]))['prefixes']]
for a in sys.argv[2:]:
    ip = ipaddress.ip_address(a)
    print(a, 'IN' if any(ip in n for n in nets) else 'OUT')

Placez les IP à vérifier après le nom du fichier de plages.

python3 inrange.py gptbot.json 74.7.x.x 34.53.x.x
74.7.x.x IN
34.53.x.x OUT

L'IP qui a envoyé 2 524 requêtes était dans les plages publiées, celle qui en a envoyé 12 était en dehors. Anthropic, Perplexity, Apple, Common Crawl, Google et Bing publient des fichiers de plages au même format, et pour Amazonbot j'ai vérifié si le DNS inverse se termine par crawl.amazonbot.amazon. C'est comme le contrôle aux frontières à l'aéroport, qui vérifie le passeport et non le nom sur la carte d'embarquement.

En comparant ainsi les 14 jours, 70 IP utilisaient tour à tour 23 noms de bots, dont GPTBot, ClaudeBot et Googlebot, et ont envoyé 48 041 requêtes, dont 57 % vers des URL cherchant des failles comme .php ou .env. Les 809 requêtes portant le nom Google-Extended venaient toutes aussi de ce groupe ; selon la documentation de Google, Google-Extended est un jeton réservé à robots.txt, sans UA dans les requêtes HTTP.

2️⃣ Visites par UA : 14 jours de mesures et évolution hebdomadaire

Le tableau ci-dessous donne les requêtes des 14 jours du 4 au 17 octobre. Pour les bots dotés de plages publiées, je n'ai compté que les requêtes venant de ces plages ; pour ceux que je n'ai pas comparés, j'ai compté par UA, sans le groupe d'usurpation.

BotSociétéRequêtes (14 jours)Méthode de vérificationGroupe d'usurpation
ClaudeBotAnthropic10,305Plages d'IP publiées2,387
PerplexityBotPerplexity3,406Plages d'IP publiées2,262
GPTBotOpenAI2,546Plages d'IP publiées2,328
OAI-SearchBotOpenAI1,399Plages d'IP publiées2,347
ChatGPT-UserOpenAI334Plages d'IP publiées2,409
ApplebotApple330Plages d'IP publiées2,372
CCBotCommon Crawl275Plages d'IP publiées2,275
Claude-UserAnthropic10Plages d'IP publiées2,192
Claude-SearchBotAnthropic0Plages d'IP publiées2,297
Perplexity-UserPerplexity0Plages d'IP publiées2,235
Meta-ExternalAgentMeta14,384UA2,339
BytespiderByteDance6,569UA2,336
AmazonbotAmazon3,493UA · DNS inverse2,379
Googlebot (comparaison)Google10,545Plages d'IP publiées3,951
bingbot (comparaison)Microsoft13,477Plages d'IP publiées1,551

Parmi les robots d'IA vérifiés via les plages publiées, ClaudeBot arrive en tête avec 10 305 requêtes, devant PerplexityBot (3 406) et GPTBot (2 546). Claude-SearchBot et Perplexity-User n'ont eu aucune requête depuis les plages publiées : toutes les requêtes à leur nom venaient du groupe d'usurpation.

Même après avoir écarté l'usurpation, restent les bots non comparés aux plages. Meta-ExternalAgent est le plus actif selon l'UA avec 14 384 requêtes, mais la documentation des robots de Meta que j'ai consultée ne contient pas de liste de plages d'IP : je l'ai donc compté uniquement par UA.

📊Requêtes hebdomadaires des robots d'IAPar semaine · d'après les journaux
GPTBot
OpenAI · collecte pour l'entraînement
08461,6922,5373,383
9/143,3837 jours
9/211907 jours
9/283567 jours
10/5127 jours
10/122,9596 jours (jusqu'au 17/10)
ClaudeBot
Anthropic · collecte pour l'entraînement
02,5545,1087,66310,217
9/146,9767 jours
9/2110,2177 jours
9/287,7097 jours
10/56,9307 jours
10/127,2896 jours (jusqu'au 17/10)
PerplexityBot
Perplexity · recherche
05531,1061,6592,212
9/141,0847 jours
9/212,1527 jours
9/285337 jours
10/52,2127 jours
10/121,4836 jours (jusqu'au 17/10)
Les chiffres sont des valeurs par UA tirées des journaux d'accès du serveur d'origine, de la semaine du 14 septembre à celle du 12 octobre, hors requêtes des IP du groupe d'usurpation, requêtes vers des URL cherchant des failles et requêtes ayant reçu une erreur comme 403 ou 429.

Semaine après semaine, GPTBot a oscillé entre 12 et 3 383 requêtes, tandis que ClaudeBot est resté entre 6 930 et 10 217 sur les cinq semaines.

3️⃣ Quelles URL ils récupèrent : types d'URL et codes de réponse

Les robots d'IA ne récupèrent pas que le texte des articles. Sur les 14 jours, 21 % des requêtes de Meta-ExternalAgent visaient des images, et depuis les plages publiées, GPTBot a demandé le flux RSS 476 fois et ClaudeBot le sitemap 314 fois.

Ils collectent aussi les URL des autres versions linguistiques : depuis les plages publiées, 1 111 requêtes de ClaudeBot et 436 de GPTBot concernaient des articles dans d'autres langues. Les codes de réponse se comptent directement sur une journée de journaux.

grep 'ClaudeBot/' access.log-20261018 | awk '{print $9}' | sort | uniq -c | sort -rn | head -4
   1357 200
    665 301
     31 304
     21 404

Même sur une journée, près d'un tiers sont des 301, et sur les 14 jours, 5 915 (57 %) des 10 305 requêtes de ClaudeBot venant des plages publiées étaient des 301. Parmi elles, 4 736 étaient des requêtes sans [/] final : WordPress a répondu par un 301 vers l'URL avec [/], et le même article a été demandé une seconde fois.

4️⃣ Réglages de robots.txt : jetons d'entraînement et de recherche

robots.txt convient aux bots d'entraînement et de recherche qui collectent automatiquement, mais pas aux bots qui récupèrent une page quand un utilisateur pose une question. Les documentations d'OpenAI et de Perplexity indiquent que les règles de robots.txt peuvent ne pas s'appliquer aux requêtes de ChatGPT-User et de Perplexity-User.

Chaque entreprise répartit ses jetons par usage et, selon la documentation d'OpenAI, bloquer un jeton n'affecte pas les réglages des autres. Voici les jetons relevés dans la documentation officielle de chaque entreprise.

Jeton robots.txtSociétéUsageSi bloqué (doc. officielle)
GPTBotOpenAICollecte pour l'entraînementSignal de ne pas utiliser pour l'entraînement
OAI-SearchBotOpenAIRecherche ChatGPTExclu des réponses de recherche ChatGPT (peut encore apparaître en lien de navigation)
ChatGPT-UserOpenAIRequête d'utilisateurLes règles de robots.txt peuvent ne pas s'appliquer
ClaudeBotAnthropicCollecte pour l'entraînementLes contenus ultérieurs sont exclus des données d'entraînement
Claude-SearchBotAnthropicAméliorer la qualité de la rechercheLa visibilité dans les résultats peut baisser
Claude-UserAnthropicRequête d'utilisateurNe récupère pas de pages pour les questions des utilisateurs
PerplexityBotPerplexityRecherche (pas d'entraînement)Exclu des résultats de recherche
Perplexity-UserPerplexityRequête d'utilisateurNe suit généralement pas robots.txt
Google-ExtendedGoogleEntraînement et ancrage de GeminiAucun effet sur la visibilité ni le classement dans Google
Applebot-ExtendedAppleEntraînement des modèles de fondationAucun effet sur la visibilité dans la recherche d'Apple
meta-externalagentMetaEntraînement de modèles d'IA, etc.Blocage par Disallow (exemple de la doc)

Google-Extended et Applebot-Extended ne sont pas des robots de collecte à part, mais des jetons utilisés uniquement dans robots.txt. La collecte est faite par les robots habituels de Google et d'Apple, et ces jetons décident seulement si le contenu collecté peut servir à entraîner des modèles d'IA.

Un robots.txt qui refuse seulement la collecte pour l'entraînement tout en gardant la visibilité dans la recherche IA ressemble à ceci ; les documentations d'OpenAI, de Perplexity et de Meta indiquent qu'un changement peut mettre jusqu'à 24 heures à s'appliquer.

# refuser la collecte pour l'entraînement
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: meta-externalagent
Disallow: /

# autoriser les bots de recherche IA
User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

Le robots.txt actuel du serveur Nginx + Apache ne contient aucune ligne visant des bots d'IA.

curl -s https://example.com/robots.txt
# s'applique à tous les robots des moteurs de recherche
User-agent: *

# bloquer les pages d'administration (sécurité)
Disallow: /wp-admin/

# autoriser les appels ajax de l'administration (indispensables au fonctionnement)
Allow: /wp-admin/admin-ajax.php

# ajout : bloquer les résultats de recherche spam (protection SEO)
Disallow: /search/
Disallow: /?s=

# indiquer le chemin du sitemap (indexation plus rapide)
Sitemap: https://example.com/sitemap_index.xml

Sans ligne visant les bots d'IA, les 2 546 requêtes de GPTBot venant des plages publiées sur 14 jours n'ont reçu aucun 403 : 2 090 ont été servies en 200 et 432 en 301. Sur la même période, les requêtes robots.txt restées dans les journaux d'origine depuis les plages publiées étaient de 36 pour Googlebot, 8 pour ClaudeBot et 6 pour OAI-SearchBot, et aucune pour GPTBot ni PerplexityBot. Quand le cache frontal répond, les requêtes robots.txt n'apparaissent pas non plus dans les journaux d'origine.

5️⃣ Bloquer les robots d'IA dans nginx et ses limites

Même bloquées dans robots.txt, les requêtes qui ne lisent pas les règles arrivent quand même jusqu'au serveur. Dans nginx, [map] met une variable à 1 quand l'UA contient le nom d'un bot.

# dans le bloc http — 1 si le nom d'un bot d'entraînement figure dans l'UA
map $http_user_agent $ai_train_bot {
    default        0;
    ~*GPTBot/      1;
    ~*ClaudeBot/   1;
    ~*Bytespider   1;
    ~*CCBot/       1;
}

Dans le bloc server, renvoyez 403 quand cette variable vaut 1.

# dans le bloc server
location / {
    if ($fake_searchbot) {
        return 403;
    }
    if ($ai_train_bot) {
        return 403;
    }
    # réglages existants ci-dessous
}

Le blocage par UA ne vérifie que le nom : les requêtes usurpées sont bloquées avec le vrai bot si elles portent le même nom, et passent dès qu'elles en changent. Les requêtes qui empruntent le nom d'un bot de recherche autorisé ne se filtrent qu'en les comparant aux plages d'IP publiées.

🧭 Le parcours d'une requête de robot d'IA
Schéma explicatif
📌 Requête
📥 Requête
📜 robots.txt
Règles que les robots automatiques lisent d'abord
GPTBot · ClaudeBotDisallow arrête la collecte
OAI-SearchBot · PerplexityBotDisallow l'exclut des réponses de recherche
ChatGPT-User · Perplexity-UserLes règles peuvent ne pas s'appliquer
Requêtes qui n'empruntent que le nom d'un botAucune garantie qu'elles suivent les règles
Requête→
🖥️ nginx
UA map · comparaison avec les plages d'IP publiées
Le nom est dans la UA map403 par UA
Absent de la UA mapPasse si dans les plages publiées
Absent de la UA mapPasse
Nom de bot autorisé + hors des plages403 par comparaison des plages
Réponse→
📤 Réponse
Code d'état
403Collecte pour l'entraînement refusée
200Visible dans la recherche IA
200Répond aux questions des utilisateurs
403En changeant de nom, le blocage par UA le laisse passer
Les robots d'entraînement suivent le Disallow de robots.txt, et en ajoutant leurs noms à la UA map de nginx, même les requêtes qui n'ont pas lu les règles sont rejetées en 403. Sur les 14 jours, il y a eu 2 546 requêtes de GPTBot venant des plages publiées.
Les robots de recherche se règlent à part des jetons d'entraînement ; si vous ne les bloquez pas, vos pages peuvent apparaître dans les réponses de la recherche ChatGPT et de Perplexity (selon la documentation officielle). Dans nginx, ne laissez passer que les requêtes venant des plages publiées.
Les bots de requête utilisateur récupèrent une page quand un utilisateur pose une question, et les documentations d'OpenAI et de Perplexity indiquent que les règles de robots.txt peuvent ne pas s'appliquer. Pour les bloquer, rejetez-les par leur nom dans nginx.
Les requêtes usurpées n'empruntent que le nom d'un bot : le blocage par UA ne les rejette que si le nom correspond, et si elles prennent le nom d'un bot de recherche autorisé, seule la comparaison des plages les filtre. Sur les 14 jours, 70 IP ont utilisé tour à tour 23 noms de bots.

Pour autoriser OAI-SearchBot tout en rejetant seulement les requêtes du même nom venues d'en dehors de ses plages, transformez les plages publiées en variable avec [geo] et comparez-les avec l'UA.

# dans le bloc http — plages publiées d'OAI-SearchBot (mettre tout searchbot.json ; seulement deux lignes ici)
geo $oai_search_net {
    default              0;
    104.210.140.128/28   1;
    135.234.64.0/24      1;
}

map $http_user_agent:$oai_search_net $fake_searchbot {
    default                  0;
    ~*OAI-SearchBot/.*:0$    1;
}

S'il y a un CDN ou un proxy devant, l'adresse que voit [geo] est celle du serveur intermédiaire : restaurez l'IP réelle avec real_ip avant de comparer. La documentation d'Anthropic indique que bloquer par adresse IP empêche aussi la lecture de robots.txt, si bien que le signal de refus risque de ne pas passer correctement.

Je n'ai pas mis cette configuration sur le serveur en production : j'ai seulement vérifié sa syntaxe avec un fichier de configuration de test.

nginx -t -p ./ -c nginx-test/nginx.conf
nginx: the configuration file ./nginx-test/nginx.conf syntax is ok
nginx: configuration file ./nginx-test/nginx.conf test is successful

Comme seule la syntaxe de l'exemple a été vérifiée, je n'ai pas contrôlé les réponses 403 ; d'après les 14 jours de journaux, 2 347 des 3 937 requêtes portant le nom OAI-SearchBot venaient du groupe d'usurpation hors des plages publiées.

6️⃣ Se faire payer par les robots d'IA : Pay per crawl et Web Bot Auth

Pay per crawl est une fonctionnalité de Cloudflare AI Crawl Control qui permet au propriétaire d'un site de fixer un prix par zone et de facturer chaque requête de robot d'IA. D'après la documentation officielle consultée le 18 octobre 2026, elle est en bêta privée, et Cloudflare traite le paiement en tant que Merchant of Record.

Les robots qui envoient leur intention de payer dans un en-tête de requête reçoivent une réponse 200, les autres une réponse [402 Payment Required] indiquant le prix. Si le même robot est bloqué par le WAF ou par Bot Management, la règle de blocage l'emporte sur la facturation.

Les robots qui veulent payer doivent prouver leur identité avec Web Bot Auth. Le bot signe ses requêtes avec une clé Ed25519 et publie sa clé publique à l'adresse [/.well-known/http-message-signatures-directory] pour que le destinataire vérifie la signature.

La signature passe par trois en-têtes, [Signature-Agent], [Signature-Input] et [Signature], et identifie le bot par une signature cryptographique plutôt que par des plages d'IP. Le format de journal d'accès par défaut du serveur d'origine n'enregistre pas les en-têtes de requête : je n'ai donc pas vérifié si les requêtes des robots d'IA de ces 14 jours étaient signées.

Les 18 605 requêtes de robots d'IA vérifiées via les plages d'IP publiées sur 14 jours représentaient 77 % des 24 022 requêtes de Googlebot et bingbot venant de leurs plages publiées sur la même période. Ajouter ou non des jetons d'entraînement à robots.txt se décide sur les chiffres sans usurpation, et ajouter la comparaison des plages au décompte hebdomadaire des journaux permet d'en suivre l'évolution.

🔢 FAQ & contenus recommandés

La documentation d'Anthropic indique qu'elle prend en charge l'extension non standard [Crawl-delay], écrite comme [Crawl-delay: 1] sous [User-agent: ClaudeBot]. Celle d'Apple précise qu'Applebot ne suit pas crawl-delay, mais ajuste automatiquement sa vitesse de collecte si le site ralentit ou renvoie des erreurs.

D'après la documentation d'Apple, les pages dotées de la balise meta nosnippet ne servent pas de contexte supplémentaire quand les modèles d'IA des produits Apple génèrent des réponses, et seul leur titre s'affiche dans les suggestions de recherche. Pour les fichiers qui ne peuvent pas porter de balise meta, comme les PDF ou les images, envoyez la même directive avec l'en-tête de réponse [X-Robots-Tag: applebot: nosnippet].

La documentation de Perplexity indique de créer une règle qui n'autorise que les requêtes dont l'UA contient PerplexityBot ou Perplexity-User et dont l'IP source figure dans les plages JSON publiées, et de l'appliquer avant les autres règles de blocage. Comme les plages changent régulièrement, elle recommande de les récupérer périodiquement depuis l'URL JSON pour mettre la règle à jour.

🤖 Contenus recommandés : robots d'IA 5 articles · 8 références
🗂️ WEB
📋 Recherche zéro clic 📄 Facteurs de classement de l'algorithme Google 📄 SEO JavaScript
📄 Mon adresse IP 📄 Configurer le CDN Cloudflare
📡 Robots d'OpenAI 📡 Robots d'Anthropic 📡 Robots de Perplexity 📡 Robots courants de Google 📡 Applebot 📡 Robots d'exploration de Meta 📡 Pay per crawl 📡 Web Bot Auth
Aucun résultat.
Documentation officielle des robots d'OpenAI (lien externe)
Doc. officielle · OpenAI
Overview of OpenAI Crawlers
Documentation officielle sur l'usage de GPTBot, OAI-SearchBot et ChatGPT-User, leurs jetons robots.txt et les URL JSON de leurs plages d'IP publiées.
Lire l'article →Contenu actuel
Documentation officielle des robots d'Anthropic (lien externe)
Doc. officielle · Anthropic
Does Anthropic crawl data from the web, and how can site owners block the crawler?
Documentation officielle sur l'usage de ClaudeBot, Claude-User et Claude-SearchBot, l'effet de leur blocage et la prise en charge de Crawl-delay.
Lire l'article →Contenu actuel
Documentation officielle des robots de Perplexity (lien externe)
Doc. officielle · Perplexity
Perplexity Crawlers
Documentation officielle sur l'usage de PerplexityBot et Perplexity-User, leurs plages d'IP publiées et les règles d'autorisation du pare-feu.
Lire l'article →Contenu actuel
Documentation officielle des robots courants de Google (lien externe)
Doc. officielle · Google
Google’s common crawlers
Documentation officielle expliquant pourquoi le jeton Google-Extended n'est utilisé que dans robots.txt, sans UA dans les requêtes HTTP, et ce qu'il couvre.
Lire l'article →Contenu actuel
Documentation officielle d'Applebot (lien externe)
Doc. officielle · Apple
About Applebot
Documentation officielle sur la différence entre Applebot et Applebot-Extended, la vérification par DNS inverse et le traitement de nosnippet.
Lire l'article →Contenu actuel
Documentation officielle des robots d'exploration de Meta (lien externe)
Doc. officielle · Meta
Robots d'exploration de Meta
Documentation officielle sur l'usage de Meta-ExternalAgent, Meta-WebIndexer et Meta-ExternalFetcher et leurs réglages robots.txt.
Lire l'article →Contenu actuel
Documentation officielle de Cloudflare Pay per crawl (lien externe)
Doc. officielle · Cloudflare
What is Pay Per Crawl?
Documentation officielle de la fonction qui renvoie aux requêtes des robots d'IA une réponse 402 avec un en-tête de prix, et ne répond en 200 qu'à celles qui comptent payer.
Lire l'article →Contenu actuel
Documentation officielle de Cloudflare Web Bot Auth (lien externe)
Doc. officielle · Cloudflare
Web Bot Auth
Documentation officielle sur la façon dont un bot prouve son identité en ajoutant une signature Ed25519 à ses en-têtes de requête, et sur l'enregistrement d'un répertoire de clés.
Lire l'article →Contenu actuel

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 10   +   10   =