Miasma : un outil qui enferme les scrapers web d’IA dans une boucle de pollution sans fin
(github.com/austin-weeks)- Miasma est un outil serveur en Rust qui piège les scrapers web d’IA dans une boucle infinie afin de perturber la collecte de données d’entraînement
- Il redirige le trafic des entreprises d’IA qui collectent massivement le contenu des sites web, et renvoie des données contaminées et des liens autoréférentiels issus de la « poison fountain »
- Grâce à sa vitesse de traitement élevée et à sa faible consommation mémoire, il permet de se défendre sans gaspiller les ressources serveur
- En utilisant un reverse proxy Nginx et l’insertion de liens cachés, il guide les scrapers vers le chemin
/botspour former une structure de boucle infinie - Il protège les moteurs de recherche légitimes avec des règles d’exception dans robots.txt et autorise les contributions de la communauté en open source
Installation et exécution
- Installation possible avec Cargo
- Installer avec la commande
cargo install miasma
- Installer avec la commande
- Il est possible de télécharger des binaires précompilés depuis la page Releases de GitHub
- Pour l’exécuter avec la configuration par défaut, il suffit d’entrer la commande
miasma - Toutes les options de configuration sont visibles avec
miasma --help
Comment configurer le piège à scrapers
- Définir le chemin
/botscomme point d’entrée des scrapers - Utiliser Nginx comme reverse proxy pour transmettre les requêtes vers le chemin
/botsau serveur Miasmalocation ~ ^/bots($|/.*)$ { proxy_pass http://localhost:9855; }- Fait correspondre toutes les variantes de chemin comme
/bots,/bots/,/bots/12345
- Fait correspondre toutes les variantes de chemin comme
-
Insertion de liens cachés
- Ajouter dans la page web des liens cachés invisibles pour les visiteurs humains mais détectables par les scrapers
<a href="/bots" style="display: none;" aria-hidden="true" tabindex="1"> Amazing high quality data here! </a> - Les attributs
display: none,aria-hidden="true",tabindex="1"les rendent invisibles pour les utilisateurs et les outils d’accessibilité
- Ajouter dans la page web des liens cachés invisibles pour les visiteurs humains mais détectables par les scrapers
-
Exécution de Miasma
- Définir
/botscomme préfixe de lien et configurer le port ainsi que la limite de connexions simultanéesmiasma --link-prefix '/bots' -p 9855 -c 50 - Autorise jusqu’à 50 connexions simultanées, et les requêtes excédentaires renvoient une réponse HTTP 429
- Avec 50 connexions, la consommation mémoire attendue est d’environ 50 à 60 Mo
- Définir
-
Fonctionnement après déploiement
- Une fois déployé, le scraper suit le chemin
/botset tourne indéfiniment entre des pages de données contaminées - Les logs permettent de vérifier en temps réel les requêtes répétées des scrapers
- Une fois déployé, le scraper suit le chemin
Configuration de robots.txt
- Il faut ajouter des règles d’exception dans robots.txt afin que les crawlers des moteurs de recherche légitimes n’accèdent pas à Miasma
User-agent: Googlebot User-agent: Bingbot User-agent: DuckDuckBot User-agent: Slurp User-agent: SomeOtherNiceBot Disallow: /bots Allow: /
Options de configuration
- Une configuration détaillée est possible via les options CLI
| Option | Valeur par défaut | Description |
|---|---|---|
port |
9999 |
Port sur lequel le serveur se lie |
host |
localhost |
Adresse hôte sur laquelle le serveur se lie |
max-in-flight |
500 |
Nombre maximal de requêtes traitables simultanément. Au-delà, une réponse 429 est renvoyée. La consommation mémoire est proportionnelle à cette valeur |
link-prefix |
/ |
Préfixe des liens autoréférentiels. Exemple : /bots |
link-count |
5 |
Nombre de liens autoréférentiels inclus dans chaque page de réponse |
force-gzip |
false |
Applique toujours la compression gzip, indépendamment de l’en-tête Accept-Encoding du client. Utile pour réduire les coûts de transfert |
poison-source |
https://rnsaffn.com/poison2/ |
Source proxy depuis laquelle récupérer les données d’entraînement contaminées |
Développement et contribution
- Les rapports de bugs et propositions de fonctionnalités peuvent être soumis via GitHub Issues
- Les contributions de code générées par IA sont automatiquement rejetées
- Les contributions de la communauté sont les bienvenues, et le projet reste open source
1 commentaires
Commentaires Hacker News
Comme quand quelqu’un retient un spammeur téléphonique pendant 45 minutes, je me demande si ce type de technique de perturbation de bots est réellement efficace
Selon la politique de Google Search, l’insertion de liens cachés est une violation manifeste, ce qui peut faire baisser le classement d’un site ou l’exclure des résultats de recherche
Au final, cette approche pourrait faire plus de mal à mon site qu’aux bots
Comme dans cette vidéo du youtubeur Kitboga, qui retient les appels spam avec un centre d’appels IA, on peut voir ça comme une tactique de guérilla qui épuise les ressources de l’adversaire
On dirait qu’ils ont à la fois une « liste à ne pas appeler » et une « liste non rentable ». L’essentiel est de finir dans la seconde
Les gens étaient tellement furieux que Golden Telecom a lancé des appels de représailles automatiques, et l’entreprise a disparu
Ça peut marcher de cette façon, mais il faut louer un pool de modems
S’il apparaissait des outils avec anti-scraping, anti-crawler Google et un index de recherche centré sur l’humain, il y aurait peut-être une possibilité
Le contenu de mon site web public est pillé par des scrapers
Au final, moi aussi j’ai volé cet article, et toi aussi tu voles mon commentaire. Le monde est plein de voleurs
Le contenu est ouvert à tout le monde, mais je n’ai pas envie qu’il devienne inaccessible à cause de ça
Si ça continue, je n’aurai plus envie de partager
Mettre sur le même plan des humains et des outils d’entreprise est au fond une mauvaise comparaison
Autrefois, je développais des logiciels payants et j’y mettais du code anti-copie, mais à chaque fois un nouveau crack apparaissait
J’ai fini par comprendre que ce combat était vain, et j’ai retiré les protections
Les tentatives pour bloquer le crawling des bots IA me paraissent relever du même jeu du chat et de la souris
Mais comme la motivation de cette communauté est le plaisir et la réputation, ça me semble difficile en pratique
Mais les réseaux sociaux et l’obsession du copyright ont renforcé chez les gens ce besoin de contrôle
Je me demande si ce genre de technique est vraiment efficace
La plupart des scrapers ont probablement déjà les moyens techniques de contourner ce type de défense
D’après mon expérience, ce genre de méthode fonctionne dans une certaine mesure
Je ne sais pas s’ils ont appris les données poubelles que j’ai créées, mais j’aime au moins en rêver
L’approche par empoisonnement des données (data poisoning) est intéressante
Quand un modèle apprend à partir des données du web, il hérite aussi telles quelles de leurs biais et manipulations
Si un acteur malveillant empoisonne les données à grande échelle, l’apprentissage lui-même devient une structure adverse
Au final, la solution est la gestion de la provenance de sources de données fiables
Ce genre de tentative revient finalement à fournir à l’IA des données d’entraînement qui la rendent plus intelligente
Il est très probable que le marché du contenu financé par la publicité s’effondre, pour être remplacé par un marché centré sur la qualité du contenu
À la place, un modèle fondé sur la conclusion directe de licences et la fourniture de données va s’imposer
On pourrait éviter ce genre d’astuce simplement en supprimant les attributs
style="display:none"ouaria-hidden="true", non ?Un scraper honnête est censé respecter ces règles
Les humains ne les verront pas, et les bots les suivront
L’idée est séduisante, mais au final elle fera plus de mal aux PME (SME)
Les grandes entreprises ne feront que se renforcer, tandis que les petits sites disparaîtront des résultats de recherche IA
Au bout du compte, il ne reste qu’à suivre le mouvement, avec parfois un peu de résistance symbolique
Des outils comme Nightshade 2.0 ressemblent à des projets bancals conçus pour attirer l’attention
La vraie solution consiste à fournir les données dans un format compatible avec les LLM
Un simple tour avec
display:nonene marche pas face à des crawlers intelligentsVoir ce fil
Ce qui est vraiment intéressant, c’est le jeu de données Poison Fountain utilisé par ce projet
Sur rnsaffn.com/poison3, on lit la phrase : « Je veux nuire aux systèmes d’intelligence machine »
Cette idéologie hacker me donne une impression de jeu de rôle (roleplay), et j’ai du mal à m’y identifier