Guide

Arrêter les scrapers sans bloquer Google

Comment distinguer un robot que vous voulez d'un robot dont vous ne voulez pas, pourquoi la vérification par User-Agent est pire qu'inutile, et que faire de ceux qui se tiennent simplement mieux que vos règles.

Le problème n'est pas le scraping, c'est de les distinguer

Presque tous les sites veulent une partie du trafic automatisé. Les moteurs de recherche, les récupérateurs d'aperçus derrière les liens de messagerie et de réseaux sociaux, votre propre supervision, l'intégration d'un partenaire, un outil d'accessibilité. Presque tous les sites ont aussi du trafic automatisé dont ils ne veulent pas : scrapers de prix, miroirs de contenu, robots de stock, et de plus en plus des robots d'entraînement d'IA dont la valeur pour vous est une affaire d'opinion.

Les deux arrivent sous forme de requêtes HTTP émises par des logiciels. Ni l'un ni l'autre ne dira la vérité sur lui-même s'il n'en a pas envie. Tout se ramène donc à de la classification, et chaque erreur de classification coûte dans une direction différente.

Bloquez le mauvais et vous sortez de l'index — une erreur qu'on met des semaines à remarquer et plus longtemps à défaire. Laissez passer le mauvais et vos prix sont chez un concurrent dans l'heure. Aucun réglage n'est sûr dans les deux sens, et c'est pour cela que cela mérite d'être fait avec soin plutôt que vite.

Pourquoi la vérification par User-Agent échoue

Le User-Agent est une chaîne que le client choisit. C'est une déclaration, pas une preuve, et la traiter comme une preuve échoue dans les deux sens à la fois.

N'importe quoi peut se dire Googlebot, et les scrapers le font : c'est une ligne de configuration, et cela marche contre tout site qui vérifie la chaîne. Si votre règle est « autoriser Googlebot », vous avez écrit « autoriser tout ce qui dit Googlebot ».

Dans le même temps, vous bloquerez de vrais robots que vous vouliez garder, parce que vous ne pouvez pas les énumérer. Il existe des dizaines de récupérateurs légitimes dont vous n'avez jamais vu la chaîne, et il en naît un nouveau chaque mois.

La bonne vérification n'est pas une comparaison de chaînes. Pour les grands robots, c'est une résolution DNS inverse sur l'adresse émettrice, confirmant qu'elle résout dans le domaine de l'opérateur, suivie d'une résolution directe confirmant que ce nom pointe bien vers la même adresse. Plusieurs opérateurs publient aussi des listes de plages signées, à récupérer et mettre en cache.

Ce n'est pas difficile, mais il faut le faire pour chaque robot qui compte pour vous, le maintenir quand les plages changent, et le mettre en cache pour ne pas faire de DNS dans le chemin de la requête.

robots.txt est un panneau, pas une clôture

robots.txt indique aux robots bien élevés ce que vous préféreriez. Les moteurs de recherche le respectent parce que se faire prendre à l'ignorer leur coûterait plus que ne vaut le contenu. Un scraper n'a ni cette incitation ni cette réputation à protéger.

Pire, c'est un document public qui liste les chemins que vous jugez assez sensibles pour être mentionnés. Interdire /admin, /export ou /api/internal annonce leur existence. Écrivez-le comme une consigne aux robots que vous approuvez, pas comme un contrôle de sécurité.

Il vaut tout de même la peine d'être tenu à jour. Un robots.txt correct avec des directives de délai réduit la charge des robots qui le respectent — l'essentiel du volume sur la plupart des sites — et c'est le seul levier dont vous disposez sur les robots d'IA qui publient un jeton d'exclusion.

Ce qui les sépare vraiment

Classé selon la part de réponse que chacun apporte.

La vérification pour ceux qui peuvent l'être. DNS inverse puis direct, ou une liste de plages publiée, tranchent définitivement le cas des grands moteurs. Cela doit être une autorisation ferme, placée au-dessus de toute autre règle.

Les empreintes de transport pour les autres. Un scraper est un programme : curl, une bibliothèque Python, un navigateur headless, un client HTTP Go. Sa poignée de main TLS annonce lequel, via l'ensemble ordonné de suites de chiffrement et d'extensions résumé en JA3/JA3N. Un client qui se dit Chrome sous Windows tout en présentant une empreinte que Chrome ne produit pas vous a dit ce qu'il est.

Le comportement sur la session. Demander des ressources sans jamais les exécuter ; une cadence régulière à la milliseconde près ; un parcours du site qui suit le sitemap plutôt que la navigation ; aucun mouvement de souris sur une page à éléments interactifs. Aucun n'est concluant seul, ensemble ils s'en approchent.

La réputation pour le premier contact. Une adresse toute neuve n'a pas d'historique chez vous. Si elle a scrapé quelqu'un d'autre la semaine dernière, c'est le seul signal disponible à sa toute première requête.

Une application qui ne se retourne pas contre vous

Ce que vous faites d'un scraper confirmé compte autant que de l'avoir détecté.

Ne servez pas de CAPTCHA. Cela coûte à un scraper déterminé une fraction de centime via un service de résolution, et cela vous coûte les vrais utilisateurs qu'il attrape au passage.

Ne bloquez pas les moteurs par accident. Les robots vérifiés doivent être autorisés par une règle qui s'exécute avant tout scoring, pour qu'un bug dans le scoring ne vous coûte pas votre position. Vérifiez-le après chaque modification, pas avant.

Envisagez une voie lente plutôt qu'un mur. Servir un scraper délibérément lentement, ou depuis un cache périmé, vaut souvent mieux qu'un 403 : cela lui coûte du temps au lieu de lui dire de changer de tactique, et cela ne crée pas l'incident qu'on obtient en bloquant ce dont on avait besoin.

Limitez le débit là où c'est cher. Votre point d'entrée de recherche et votre API produit méritent des limites dont vos pages statiques n'ont pas besoin.

Surveillez ce que vous servez, pas seulement ce que vous bloquez. Un scraper qui a commencé à passer ressemble exactement à une semaine calme sur votre tableau de bord de blocages. Suivez le rapport bloqué / servi dans le temps et alertez sur le rapport.

Où se situe Karma

Karma vérifie lui-même les robots légitimes et les exclut de vos verdicts — et de votre facture, car vous faire payer l'identification de Googlebot reviendrait à vous facturer le travail propre du produit.

Tout le reste est noté à partir de signaux comportementaux et de transport, et le verdict part vers votre passerelle : c'est vous qui décidez si cela signifie un blocage, une voie lente ou du cache périmé. Vos listes d'autorisation et de refus priment toujours sur la plateforme, si bien qu'un partenaire dont vous dépendez peut être épinglé avant que vous n'activiez quoi que ce soit.

Le forfait gratuit Detect fait tourner la classification avec l'application désactivée. C'est ici particulièrement la bonne façon de commencer, car l'erreur coûteuse dans ce domaine consiste à découvrir que vos règles étaient fausses en voyant chuter le trafic de recherche trois semaines plus tard.

FAQ

Comment bloquer les scrapers sans bloquer Googlebot ?
Vérifiez les robots que vous voulez au lieu de croire leur User-Agent. Pour les grands moteurs, faites une résolution DNS inverse sur l'adresse émettrice, confirmez qu'elle résout dans le domaine de l'opérateur, puis que ce nom pointe bien vers la même adresse ; plusieurs publient aussi des listes de plages signées. Faites-en une autorisation ferme exécutée avant tout scoring, puis notez tout le reste sur le comportement et les empreintes de transport.
Puis-je identifier Googlebot à son User-Agent ?
Non, et s'y fier est pire que de ne rien faire. Le User-Agent est une chaîne que le client choisit : n'importe quel scraper peut se dire Googlebot en une ligne de configuration, et une règle qui autorise la chaîne autorise tous les scrapers qui la copient. C'est la vérification DNS inverse puis directe qui tranche réellement.
robots.txt arrête-t-il les scrapers ?
Non. Il exprime une préférence que les robots bien élevés respectent parce que leur réputation en dépend ; un scraper n'a pas de réputation à perdre et l'ignore. C'est aussi une liste publique des chemins que vous jugez sensibles, donc pas un contrôle de sécurité. Gardez-le exact pour les robots de confiance et appliquez séparément pour les autres.
Faut-il bloquer les robots d'IA ?
C'est une décision commerciale plutôt que de sécurité, et elle dépend de savoir si apparaître dans les réponses d'IA vous vaut plus que le contenu lui-même. Si vous choisissez de bloquer, robots.txt couvre ceux qui publient un jeton d'exclusion et le respectent, et la détection au niveau de la session couvre ceux qui ne le font pas — avec les mêmes signaux qui attrapent tout autre robot non déclaré.