[Docker Apps/Linux Apps] Anubis : Protégez votre site web contre les scrapers IA
-
Si votre site web est devenu le buffet à volonté préféré des bots de sociétés IA, débarquant par milliers, se servant dans votre bande passante et repartant sans même dire vous laisser un mot sur l’oreiller, alors j’ai une solution pour vous ! Ça s’appelle Anubis et c’est un outil qui vérifie si vos visiteurs sont de vrais humains ou des aspirateurs à données déguisés.
Car oui, personne n’est épargné ! Par exemple, le bon vieux site kernel.org a dû mettre en place une protection contre ces scrapers qui menaçaient sa disponibilité et ce n’est pas un cas isolé. Codeberg, ScummVM, FreeCAD et même certains sites de l’ONU ont adopté la même solution pour rester en ligne face à cette nouvelle forme de DDoS “légitime”.
Bref, pendant que vous lisez ces lignes, une bataille fait rage avec d’un côté, les développeurs qui maintiennent des sites utiles à la communauté et de l’autre, des armées de robots envoyés par les géants de l’IA pour aspirer tout le contenu possible afin d’entraîner leurs modèles.
Bien sûr, Cloudflare et autres services similaires peuvent vous aider, mais ils créent une dépendance à des intermédiaires centralisés, contraires à l’esprit même du web. Et franchement, si vous hébergez un petit projet open-source, vous n’avez probablement pas envie de payer pour une protection contre un problème que vous avez pas créé.
Heureusement, Anubis est là et s’inspire d’une idée plutôt ancienne : Hashcash
Il s’agit d’une idée remontant aux années 2000 pour lutter contre le spam email. Le principe est simple et génial à la fois : imposer un petit coût “computationnel” à chaque requête. Grosso merdo, comme mettre un péage sur une route qui serait insignifiant pour un conducteur occasionnel, mais super ruineux pour une entreprise qui fait passer des milliers de camions par jour.Voici comment ça marche concrètement :
- Un visiteur arrive sur votre site protégé par Anubis
- Le serveur lui présente un challenge mathématique à savoir trouver un nombre qui, ajouté à une chaîne de caractères spécifique et passé dans une fonction SHA-256, donne un hash avec un certain nombre de zéros au début
- Le navigateur du visiteur calcule alors ce hash en parallèle grâce aux Web Workers (du JavaScript qui travaille en arrière-plan sans bloquer l’interface)
- Une fois trouvé, le résultat est envoyé au serveur qui vérifie sa validité
- Si c’est bon, un cookie spécial est généré pour autoriser les visites futures sans avoir à repasser le test
Pour un navigateur moderne sur un PC normal, ce calcul prend quelques secondes, ce qui en fait une petite friction acceptable. Mais pour un scraper industriel qui doit traiter des millions de pages… c’est une autre histoire. Et ce système est totalement configurable puisqu’il permet d’ajuster la difficulté (nombre de zéros requis, par défaut 4-5), d’utiliser un algorithme intentionnellement lent pour punir les bots identifiés, et de créer des règles personnalisées via des expressions régulières et un langage d’expression appelé CEL.
Voici par exemple une règle permettant d’autoriser les requêtes API tout en bloquant le reste :
- name: allow-api-requests action: ALLOW expression: all: - '"Accept" in headers' - 'headers["Accept"] == "application/json"' - 'path.startsWith("/api/")'
Ou encore, bloquer spécifiquement les bots d’Amazon :
- name: amazonbot user_agent_regex: Amazonbot action: DENY
La bonne nouvelle, c’est qu’Anubis est ridiculement simple à mettre en place. Un VPS basique avec Docker suffit amplement et l’outil consommera moins de 32 Mo de RAM en moyenne, autant dire rien du tout à l’échelle d’un serveur récent.
La méthode la plus simple pour mettre Anubis en place, c’est comme d’hab : Docker Compose. 5 lignes de config et vous êtes protégé :
services: anubis-nginx: image: ghcr.io/techarohq/anubis:latest environment: BIND: ":8080" DIFFICULTY: "4" TARGET: "http://nginx" SERVE_ROBOTS_TXT: "true" ports: - 8080:8080 nginx: image: nginx volumes: - "./www:/usr/share/nginx/html"
Et si vous préférez les packages natifs, sachez qu’Anubis est disponible pour Debian, Ubuntu, RHEL et autres distributions populaires. Les plus bidouilleurs peuvent même l’installer depuis les sources.
La configuration avec les serveurs web les plus courants est bien documentée :
- Nginx : ajoutez Anubis comme un upstream et redirigez tout le trafic à travers lui
- Apache : similaire à Nginx, avec quelques spécificités liées à Apache
- Et même Traefik ou Caddy pour les plus modernes d’entre vous
Une fois tout configuré, vérifiez quand même que tout fonctionne correctement en visitant votre site. Et si vous voyez la jolie page de challenge la première fois, puis accédez normalement au site après, c’est que tout est bon !
Si vous hésitez, sachez que avantages d’Anubis sont nombreux :
- C’est gratuit et open-source, contrairement aux solutions payantes qui vous factureront à la requête
- Ultra-léger, avec une consommation minimale de ressources
- Vous gardez le contrôle total : pas d’intermédiaire entre vous et vos visiteurs
- Personnalisable à l’extrême : ajustez précisément les règles selon vos besoins
- Respectueux de la vie privée : aucun partage de données avec des tiers
Mais il y a aussi des arguments plus émotionnels, et tout aussi valables :
- L’indépendance : vous restez maître de votre infrastructure
- La résistance : vous participez à un mouvement de défense du web ouvert
- La communauté : vous soutenez un projet porté par des valeurs éthiques
- La satisfaction intellectuelle : c’est quand même une solution élégante à un problème complexe, avouez-le
Par contre, sachez que :
- Anubis nécessite JavaScript côté client
- Et qu’il peut potentiellement bloquer certains bots ou utilisateurs légitimes si mal configuré
Mais comparé aux alternatives commerciales, le rapport bénéfice/contrainte penche largement en faveur d’Anubis.
Bref, si vous en avez marre de voir votre bande passante dévorée par des bots trop gourmands, c’est le moment d’agir. Quelques minutes de configuration aujourd’hui pourraient vous épargner des heures de maintenance demain.
Et si vous avez des questions sur l’installation ou la configuration, n’hésitez pas à consulter la documentation officielle. Et un grand merci à Lorenper pour le partage !
– Source :
-
undefined Violence marked this topic as a regular topic