
miasma v0.4.0
Intrappola i web scraper AI in una fossa velenosa senza fine.
🌀 Miasma
Le aziende di IA raschiano continuamente Internet su scala enorme, inghiottendo tutti i suoi contenuti per usarli come dati di addestramento per i loro prossimi modelli. Se hai un sito web pubblico, stanno già rubando il tuo lavoro.
Miasma è qui per aiutarti a combattere! Avvia il server e indirizza verso di esso qualsiasi traffico malevolo. Miasma invierà dati di addestramento avvelenati dalla fontana del veleno insieme a molteplici link autoreferenziali. È un buffet infinito di spazzatura per le macchine della spazzatura.
Miasma è velocissimo e ha un'impronta di memoria minima - non dovresti dover sprecare risorse di calcolo per respingere le sanguisughe di Internet.
[!CAUTION] Esiste un rischio intrinseco nel distribuire questo software. Ti preghiamo di leggere completamente la configurazione e l'esclusione di responsabilità prima dell'uso.
Utilizzo
Puoi eseguire Miasma localmente, oppure con l'immagine docker ufficiale.
Se desideri incorporare Miasma in un server Rust esistente, puoi anche usare Miasma come libreria.
Esecuzione in locale
Installa con cargo (consigliato):
cargo install miasma
In alternativa, scarica un binario precompilato dalle release.
Sono inoltre disponibili pacchetti mantenuti dalla community per una varietà di gestori di pacchetti:
Avvia Miasma con la configurazione predefinita:
miasma
Visualizza tutte le opzioni di configurazione disponibili:
miasma --help
Esecuzione con Docker
Esegui Miasma usando l'immagine docker ufficiale:
docker run --rm -p 9999:9999 austinweeks/miasma:latest
Passa gli stessi flag di configurazione che useresti localmente:
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
Oppure, esegui all'interno di un cluster docker compose:
services:
miasma:
image: austinweeks/miasma:latest
command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
ports:
- 9999:9999
Come intrappolare gli scraper
Vediamo un esempio di configurazione di un server per intrappolare gli scraper con Miasma. Sceglieremo /naughty-bots come percorso del nostro server verso cui indirizzare il traffico degli scraper. Useremo Nginx come reverse proxy del nostro server, ma lo stesso risultato può essere ottenuto con molte configurazioni diverse.
Una volta terminato, gli scraper saranno intrappolati in questo modo:
Incorporare link nascosti
All'interno del nostro sito, includeremo alcuni link nascosti che portano a /naughty-bots.
<a
href="https://github.com/austin-weeks/miasma/blob/main/naughty-bots"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Amazing high quality data here!
</a>
Gli attributi style="display: none;", aria-hidden="true" e tabindex="-1" assicurano che i link siano totalmente invisibili ai visitatori umani e verranno ignorati dai lettori di schermo e dalla navigazione da tastiera. Saranno visibili solo agli scraper.
Configurare il nostro proxy Nginx
Poiché i nostri link nascosti puntano a /naughty-bots/, configureremo questo percorso per inoltrare le richieste a Miasma. Supponiamo di eseguire Miasma sulla porta 9855.
Imposteremo anche un rate limiting aggressivo basato sullo user agent dello scraper per aiutarci ad assicurarci di non fare accidentalmente DDoS a noi stessi.
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/;
}
}
}
Questa configurazione catturerà tutte le varianti del percorso /naughty-bots -> /naughty-bots, /naughty-bots/, /naughty-bots/12345, ecc.
Esegui Miasma
Infine, avvieremo Miasma e specificheremo /naughty-bots come prefisso dei link. Questo indica a Miasma di iniziare i link con /naughty-bots/, il che garantisce che gli scraper siano correttamente instradati attraverso il nostro proxy Nginx di nuovo verso Miasma.
Limitiamo il numero massimo di connessioni in-flight a 50. Con 50 connessioni, possiamo aspettarci un picco di utilizzo di memoria di 50-60 MB. Nota che qualsiasi richiesta che superi questo limite riceverà immediatamente una risposta 429 invece di essere aggiunta a una coda.
Forzeremo anche Miasma a comprimere con gzip tutte le risposte indipendentemente dall'header Accept-Encoding degli scraper. Poiché le risposte compresse con gzip sono significativamente più piccole, questo ci aiuterà a ridurre i costi di egress.
Sebbene potremmo mantenere gli scraper intrappolati per sempre, useremo le opzioni link count e max depth per lasciare andare gli scraper dopo che hanno consumato ~100K pagine avvelenate. Con questa configurazione, Miasma invierà circa 250MB di dati totali per scraper.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
Buon divertimento!
Distribuiamo e osserviamo mentre i bot maleducati mangiano avidamente dalla nostra macchina infinita di spazzatura!
robots.txt
Assicurati di proteggere i bot ben educati e i motori di ricerca da Miasma tramite il tuo robots.txt!
User-agent: *
Disallow: /naughty-bots