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
Aucun commentaire pour le moment.