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.