veilletech.fr
10 nov. Feed du jour
#09 WEB Article

Un piège .htaccess coupe 80 % du trafic des bots

Un lien que personne ne voit, et que seuls les robots suivent.

Un développeur affirme avoir réduit de plus de 80 % le trafic de robots sur son site avec un honeypot : un lien invisible, interdit par robots.txt, dont la visite écrit l'adresse IP du visiteur dans .htaccess. Il compte plus de 400 adresses bloquées en une semaine et un trafic retombé de 216 à environ 25 Go par jour. La méthode est brutale, sans appel, et ses limites sont connues.

3 min de lectureintermédiairevidéo 1:10
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Les limites, dites par l'auteur
  4. Comment s'y prendre
  5. À retenir

Ce qui se passe

Le site de l'auteur, OpenBenches.org, un recensement de bancs publics, a transféré plus de 2,5 To en un mois. Il y voit surtout des robots d'IA qui aspirent les données et les images. Sa réponse, qu'il appelle B6, est un piège minimal. Résultat annoncé après une semaine : plus de 400 adresses bloquées, un trafic quotidien passé d'un pic de 216 Go à environ 25 Go, soit plus de 80 % de moins, sans plainte d'utilisateur. Ce sont des mesures sur un seul site, par son auteur.

Le mécanisme

  1. Un dossier /honeypot/ contient un index.php.

  2. robots.txt l'interdit explicitement :

    TEXT
    User-agent: *
    Disallow: /honeypot/
  3. Chaque page du site porte un lien vers ce dossier, retiré de l'arbre d'accessibilité (aria-hidden), avec un texte impossible à cliquer (un joint de largeur nulle) et une règle CSS qui le masque et cache le curseur.

  4. Quand quelque chose ouvre ce dossier, le script lit l'adresse IP et l'agent utilisateur, et les inscrit dans un bloc délimité de .htaccess, avec la date.

  5. Ce bloc se place avant les autres règles de réécriture : une condition sur REMOTE_ADDR suivie d'une règle qui répond 402, avec un message en texte brut défini par ErrorDocument 402.

Un humain ne peut pas suivre ce lien, et un robot poli ne le suit pas. Celui qui l'ouvre ignore donc robots.txt, et c'est ce qui le désigne. L'auteur y voit un avantage sur les défis du type Anubis, longs à installer et gênants pour les vrais visiteurs. Il s'inspire librement du piège Blackhole de Jeff Starr, mais fonctionne aussi sur un site très mis en cache. Le code est publié sous AGPL v3 ; cette fiche ne le reproduit pas.

Les limites, dites par l'auteur

Une limite de plus, qui tient à la conception : pour écrire dans .htaccess, le processus web doit en avoir le droit. C'est un droit d'écriture sur la configuration du serveur, à n'accorder qu'en connaissance de cause.

Comment s'y prendre

  1. Cette version suppose Apache : .htaccess n'existe pas sous Nginx, où il faudrait un autre moyen de tenir la liste d'adresses.
  2. Essayez d'abord sur un site secondaire.
  3. Gardez les entrées horodatées et purgez-les régulièrement ; ajoutez une exception pour les robots dont vous avez besoin (moteurs de recherche, flux).

Source : shkspr.mobi, en anglais.