Anubis expliqué : politiques et preuve de travail pour les sites auto-hébergés
Analyse technique du classement des requêtes, des défis de calcul dans le navigateur, des politiques, du déploiement, des mesures, de l’accessibilité et des faux positifs.
Positionnement et signal actuel
Anubis est un proxy de protection libre placé devant le serveur d’origine. Il impose un coût de calcul aux clients automatisés à grand volume et laisse passer les visiteurs conformes aux règles. Lors de la collecte, le dépôt comptait 20 826 stars, environ 23 commits sur 30 jours et la version v1.25.0. Son succès répond à la collecte de données pour l’IA, mais les mainteneurs présentent aussi cette solution comme une mesure à forte friction.
Usages et fonctions
Il peut protéger documentation, forge de code, services personnels ou communautés dont le processeur, la bande passante et les connexions de base sont saturés par des robots. Les politiques ordonnées autorisent, refusent, défient ou pondèrent une requête, avec des règles pour robots connus et chemins locaux. Le client validé reçoit un justificatif signé. Les métriques Prometheus exposent défis, échecs, règles et trafic.
Parcours d’une requête et calcul
La requête traverse les politiques dans l’ordre. ALLOW la transmet, DENY la refuse, CHALLENGE lance la vérification et WEIGH change la difficulté suivante. Le navigateur cherche un résultat répondant à une cible ; le serveur le vérifie à faible coût puis émet un justificatif temporaire. Le coût cumulé se déplace vers les collecteurs, mais ce mécanisme ne prouve pas l’identité du visiteur et une automatisation capable peut résoudre le défi.
Pile technique et intégration
Le service principal est écrit en Go, l’interface du défi utilise Preact et les règles sont en YAML. Le justificatif repose sur signatures et JWT ; les clés Ed25519 et sessions sont documentées. Anubis se place entre nginx, Caddy, HAProxy, Traefik ou un ingress Kubernetes et l’origine, sous forme d’image, paquet ou service. Les en-têtes de proxy fiables, l’adresse réelle du client et l’URL cible doivent être configurés précisément.