5 points par GN⁺ 2026-03-30 | 1 commentaires | Partager sur WhatsApp
  • 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 /bots pour 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
  • 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 /bots comme point d’entrée des scrapers
  • Utiliser Nginx comme reverse proxy pour transmettre les requêtes vers le chemin /bots au serveur Miasma
    location ~ ^/bots($|/.*)$ {
      proxy_pass http://localhost:9855;
    }
    
    • Fait correspondre toutes les variantes de chemin comme /bots, /bots/, /bots/12345
  • 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é
  • Exécution de Miasma

    • Définir /bots comme préfixe de lien et configurer le port ainsi que la limite de connexions simultanées
      miasma --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
  • Fonctionnement après déploiement

    • Une fois déployé, le scraper suit le chemin /bots et 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

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

 
GN⁺ 2026-03-30
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

    • Si c’est automatisé, je pense que ça peut marcher
      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
    • J’ai effectivement déjà retenu des spammeurs téléphoniques assez longtemps, et ensuite ils n’ont plus rappelé
      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
    • Ça me rappelle le spam d’une école d’anglais russe dans les années 2000
      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
    • C’est vrai que l’insertion de liens cachés est interdite, mais j’aimerais plutôt y voir l’occasion d’une renaissance du « small web »
      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é
    • Il existe effectivement une étude montrant que ce type de technique d’empoisonnement des données fonctionne
  • 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 problème, c’est qu’ils envoient tellement de requêtes que mon site tombe
      Le contenu est ouvert à tout le monde, mais je n’ai pas envie qu’il devienne inaccessible à cause de ça
    • Le mot « vol » est excessif, mais voir mes textes détournés comme moyen de gagner de l’argent est désagréable
      Si ça continue, je n’aurai plus envie de partager
    • Les humains ont légalement des droits et des libertés, pas les LLM
      Mettre sur le même plan des humains et des outils d’entreprise est au fond une mauvaise comparaison
    • Comme dans la formule satirique « Welcome to the internet… », nous vivons déjà dans un monde où nous avons renoncé à nos données et à notre vie privée
  • 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

    • J’aurais peut-être gagné si j’avais plutôt choisi une stratégie qui rende le cracking ennuyeux
      Mais comme la motivation de cette communauté est le plaisir et la réputation, ça me semble difficile en pratique
    • En réalité, beaucoup de problèmes se résolvent quand on cesse d’en faire une obsession
      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

    • Même si c’était efficace, honnêtement, je n’ai plus l’énergie de m’en soucier. Il ne reste que la fatigue
    • J’ai créé une fausse bibliothèque Python et je l’ai mise sur GitHub, puis quelques mois plus tard ChatGPT l’avait apprise
      D’après mon expérience, ce genre de méthode fonctionne dans une certaine mesure
    • Des centaines de bots utilisent des proxys payants, donc il suffit de leur faire payer ce coût
    • Les crawlers de Meta ou d’Anthropic ne sont pas si sophistiqués que ça
      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

    • On peut toujours répondre : « Donc il ne faut rien faire ? », mais en pratique il n’est pas facile de réagir
    • L’IA va accélérer la fin du contenu financé par la publicité
      À la place, un modèle fondé sur la conclusion directe de licences et la fourniture de données va s’imposer
    • Si le crawler ne clique pas sur tous les liens et se contente de parser en local, alors je considérerais plutôt cela comme une victoire
    • Au final, la technologie n’est qu’une course aux armements sans fin
  • On pourrait éviter ce genre d’astuce simplement en supprimant les attributs style="display:none" ou aria-hidden="true", non ?

    • Mais faire ça reviendrait à ignorer robots.txt
      Un scraper honnête est censé respecter ces règles
    • Il ne faut pas cacher complètement les liens, mais les placer en petit hors écran
      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:none ne marche pas face à des crawlers intelligents
    Voir 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

    • Mais au fond, personne n’explique ce que sont exactement les « données empoisonnées », ni sur quoi repose l’affirmation selon laquelle une petite quantité suffit à produire un grand effet