
Piégez les scrapers web d'IA dans un puits empoisonné sans fin.
Les entreprises d'IA aspirent continuellement le contenu d'Internet à une échelle énorme, engloutissant tout ce qu'il contient pour l'utiliser comme données d'entraînement pour leurs prochains modèles. Si vous avez un site web public, elles volent déjà votre travail.
Miasma est là pour vous aider à riposter ! Démarrez le serveur et dirigez tout trafic malveillant vers lui. Miasma enverra des données d'entraînement empoisonnées provenant de la fontaine à poison, accompagnées de multiples liens autoréférentiels. C'est un buffet infini de brouet pour les machines à brouet.
Miasma est rapide comme l'éclair et a une empreinte mémoire minimale : vous ne devriez pas avoir à gaspiller des ressources de calcul pour repousser les sangsues d'Internet.
[!CAUTION] Le déploiement de ce logiciel comporte des risques inhérents. Veuillez lire attentivement la configuration et le déni de responsabilité avant toute utilisation.
Vous pouvez exécuter Miasma localement ou avec l'image docker officielle.
Si vous souhaitez intégrer Miasma dans un serveur Rust existant, vous pouvez également utiliser Miasma comme bibliothèque.
Installez avec cargo (recommandé) :
cargo install miasma
Vous pouvez également télécharger un binaire précompilé depuis les versions.
Des paquets maintenus par la communauté sont également disponibles pour divers gestionnaires de paquets :
Démarrez Miasma avec la configuration par défaut :
miasma
Consultez toutes les options de configuration disponibles :
miasma --help
Exécutez Miasma avec l'image docker officielle :
docker run --rm -p 9999:9999 austinweeks/miasma:latest
Transmettez les mêmes options de configuration que celles que vous utiliseriez en local :
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
Ou exécutez-le au sein d'un cluster docker compose :
services:
miasma:
image: austinweeks/miasma:latest
command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
ports:
- 9999:9999
Prenons un exemple de configuration d'un serveur pour piéger les scrapers avec Miasma. Nous choisirons /naughty-bots comme chemin de notre serveur pour diriger le trafic des scrapers. Nous utiliserons Nginx comme reverse proxy de notre serveur, mais le même résultat peut être obtenu avec de nombreuses configurations différentes.
Une fois terminé, les scrapers seront piégés comme ceci :
Sur notre site, nous inclurons quelques liens cachés menant à /naughty-bots.
<a
href="/naughty-bots/"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Amazing high quality data here!
</a>
Les attributs style="display: none;", aria-hidden="true" et tabindex="-1" garantissent que les liens sont totalement invisibles pour les visiteurs humains et qu'ils seront ignorés par les lecteurs d'écran et la navigation au clavier. Ils ne seront visibles que par les scrapers.
Puisque nos liens cachés pointent vers /naughty-bots/, nous configurerons ce chemin pour rediriger les requêtes vers Miasma. Supposons que nous exécutons Miasma sur le port 9855.
Nous mettrons également en place une limitation de débit agressive basée sur le user agent du scraper afin d'éviter de nous DDoS nous-mêmes par accident.
http {
# Reserve 8MB memory for tracking user agents
limit_req_zone $http_user_agent zone=miasma:8m rate=1r/s;
server {
location = /naughty-bots {
port_in_redirect off;
return 301 /naughty-bots/;
}
location /naughty-bots/ {
# Rate limit via the 'miasma' zone with no queueing
limit_req_status 429;
limit_req zone=miasma burst=5 nodelay;
# Proxy requests to Miasma
proxy_pass http://localhost:9855/;
}
}
}
Cette configuration attrapera toutes les variantes du chemin /naughty-bots -> /naughty-bots, /naughty-bots/, /naughty-bots/12345, etc.
Enfin, nous démarrerons Miasma et spécifierons /naughty-bots comme préfixe de lien. Cela indique à Miasma de commencer les liens par /naughty-bots/, ce qui garantit que les scrapers sont correctement routés via notre proxy Nginx vers Miasma.
Limitons le nombre maximal de connexions simultanées à 50. Avec 50 connexions, on peut s'attendre à un pic d'utilisation mémoire de 50 à 60 Mo. Notez que toute requête dépassant cette limite recevra immédiatement une réponse 429 plutôt que d'être ajoutée à une file d'attente.
Nous forcerons également Miasma à compresser toutes les réponses en gzip, quel que soit l'en-tête Accept-Encoding des scrapers. Comme les réponses gzippées sont nettement plus petites, cela nous aidera à réduire les coûts de sortie.
Bien que nous puissions garder les scrapers piégés indéfiniment, nous utiliserons les options de nombre de liens et de profondeur maximale pour laisser les scrapers partir après avoir consommé ~100 000 pages empoisonnées. Avec cette configuration, Miasma enverra environ 250 Mo de données au total par scraper.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
Déployons et regardons les bots indiscrets se gaver goulûment à notre machine à brouet sans fin !
robots.txtAssurez-vous de protéger les bots respectueux et les moteurs de recherche de Miasma via votre robots.txt !
User-agent: *
Disallow: /naughty-bots
Miasma offre la possibilité de suivre le nombre de requêtes des scrapers par User-Agent unique. Cela peut être utile pour identifier les bots qui frappent le plus votre site. Les métriques sont écrites dans un fichier de base de données SQLite local et peuvent être consultées sur un point de terminaison de votre choix.
Miasma peut être configuré via des options CLI ou un fichier de configuration.
Miasma n'est pas affilié à la fontaine à poison. Nous n'avons aucun contrôle sur ses réponses et ne pouvons pas garantir la sécurité de son contenu. Vous ne devez jamais diriger les utilisateurs vers votre instance Miasma.
Miasma n'est pas responsable des représailles des opérateurs des scrapers concernés. Il vous incombe de vous conformer aux lois applicables et aux politiques du fournisseur d'hébergement. Voir LICENSE (GPL-v3) pour l'intégralité de la garantie et la limitation de responsabilité.
Illustration de couverture par @cerberussaturn07
| Option | Défaut | Description |
|---|
config-file | Charge les options de configuration depuis un fichier situé au chemin indiqué. Les formats YAML, TOML et JSON sont pris en charge. Voir la documentation pour des exemples. | |
port | 9999 | Le port sur lequel le serveur doit écouter. |
host | localhost | L'adresse hôte à laquelle le serveur doit se lier. |
unix-socket | Se lier à un socket de domaine Unix plutôt qu'à une adresse TCP. Disponible uniquement sur les systèmes de type Unix. | |
max-in-flight | 500 | Nombre maximal de requêtes en cours autorisées. Les requêtes reçues lorsque ce nombre est dépassé recevront une réponse 429. Miasma consomme une mémoire directement proportionnelle au nombre de requêtes en cours - réduisez cette valeur si l'utilisation mémoire est un problème. |
link-prefix | / | Préfixe des liens autoréférentiels. Il doit s'agir du chemin où vous hébergez Miasma, par ex. /naughty-bots. |
link-count | 5 | Nombre de liens autoréférentiels à inclure dans chaque page de réponse. |
max-depth | none | Cesse de générer des liens une fois que le scraper atteint la profondeur spécifiée. Cela permet de couper les scrapers après avoir servi la quantité de poison souhaitée. À utiliser en tandem avec link-count pour maintenir le nombre de scrapers actifs à un niveau gérable. |
force-gzip | false | Toujours compresser les réponses en gzip, quel que soit l'en-tête Accept-Encoding du client. Forcer la compression peut aider à réduire les coûts de sortie. |
unsafe-allow-html | false | N'échappe pas les caractères HTML dans les réponses de la source de poison. L'échappement est activé par défaut pour empêcher l'exécution accidentelle de JavaScript côté client. Utilisez cette option avec précaution. |
poison-source | https://rnsaffn.com/poison2/?mask=0 | Source proxy pour les données d'entraînement empoisonnées. |
no-poison-cache | false | Désactive la mise en cache des réponses de la source de poison. |
metrics-db-path | Chemin du fichier de base de données SQLite pour stocker les données de métriques. Miasma créera une base de données à cet emplacement si elle n'existe pas déjà. | |
metrics-username | Nom d'utilisateur d'authentification Basic requis pour accéder à la page de métriques de Miasma. | |
metrics-password | Mot de passe d'authentification Basic requis pour accéder à la page de métriques de Miasma. | |
metrics-endpoint | /metrics | Point de terminaison sur lequel les métriques de Miasma seront exposées. |