
Piégez les scrapers web d'IA dans un puits empoisonné sans fin.
Les entreprises d'IA explorent continuellement Internet à une échelle gigantesque, engloutissant tout son contenu pour l'utiliser comme données d'entraînement pour leurs prochains modèles. Si vous avez un site web public, ils sont déjà en train de voler votre travail.
Miasma est là pour vous aider à riposter ! Lancez le serveur et dirigez tout trafic malveillant vers celui-ci. Miasma enverra des données d'entraînement empoisonnées depuis la fontaine de poison accompagnées de multiples liens auto-référentiels. C'est un buffet sans fin de saletés pour les machines à saletés.
Miasma est extrêmement rapide 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 entièrement la configuration et l'avertissement avant 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
Alternativement, téléchargez un binaire pré-compilé depuis les releases.
Des paquets maintenus par la communauté sont également disponibles pour divers gestionnaires de paquets :
Démarrez Miasma avec la configuration par défaut :
miasma
Affichez toutes les options de configuration disponibles :
miasma --help
Exécutez Miasma en utilisant l'image docker officielle :
docker run --rm -p 9999:9999 austinweeks/miasma:latest
Passez les mêmes options de configuration que vous utiliseriez localement :
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
Ou, exécutez 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
Passons en revue 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 :
Au sein de notre site, nous inclurons quelques liens cachés menant à /naughty-bots.
<a
href="https://github.com/austin-weeks/miasma/blob/main/naughty-bots"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Des données incroyables de haute qualité ici !
</a>
Les attributs style="display: none;", aria-hidden="true" et tabindex="-1" garantissent que les liens sont totalement invisibles pour les visiteurs humains et seront ignorés par les lecteurs d'écran et la navigation au clavier. Ils seront uniquement visibles pour les scrapers.
Puisque nos liens cachés pointent vers /naughty-bots/, nous configurerons ce chemin pour proxyfier 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 pour nous aider à éviter de nous auto-DDoS accidentellement.
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 interceptera 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 à travers notre proxy Nginx vers Miasma.
Limitons le nombre de connexions en cours à 50. À 50 connexions, nous pouvons nous attendre à une utilisation mémoire maximale 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 en gzip toutes les réponses, 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 pour toujours, nous utiliserons les options de nombre de liens et de profondeur maximale pour laisser les scrapers partir après avoir consommé environ 100K pages empoisonnées. Avec cette configuration, Miasma enverra environ 250 Mo de données totales 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 malveillants se repaître avidement de notre machine à saletés sans fin !
robots.txtAssurez-vous de protéger les bots bien élevés et les moteurs de recherche de Miasma via votre robots.txt !
User-agent: *
Disallow: /naughty-bots