
miasma v0.4.3
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
Metriche
Miasma offre la possibilità di tracciare i conteggi delle richieste degli scraper per ogni User-Agent univoco. Questo può essere utile per identificare quali bot stanno colpendo il tuo sito più intensamente. Le metriche vengono scritte in un file di database SQLite locale e possono essere visualizzate a un endpoint di tua scelta.
Configurazione
Miasma può essere configurato tramite flag CLI o un file di configurazione.
| Opzione | Predefinito | Descrizione |
|---|---|---|
config-file | Carica le opzioni di configurazione da un file nel percorso specificato. Sono supportati i formati YAML, TOML e JSON. Vedi docs per esempi. | |
port | 9999 | La porta a cui il server deve associarsi. |
host | localhost | L'indirizzo host a cui il server deve associarsi. |
unix-socket | Associa a un socket di dominio Unix anziché a un indirizzo TCP. Disponibile solo su sistemi Unix-like. | |
max-in-flight | 500 | Numero massimo di richieste in-flight consentite. Le richieste ricevute quando il limite in-flight è superato riceveranno una risposta 429. L'utilizzo di memoria di Miasma scala direttamente con il numero di richieste in-flight - imposta un valore più basso se l'utilizzo di memoria è una preoccupazione. |
link-prefix | / | Prefisso per i link auto-direzionanti. Dovrebbe essere il percorso in cui ospiti Miasma, ad es. /naughty-bots. |
link-count | 5 | Numero di link auto-direzionanti da includere in ogni pagina di risposta. |
max-depth | none | Interrompe la generazione di link una volta che lo scraper raggiunge la profondità specificata. Questo ti permette di interrompere gli scraper dopo aver servito una quantità desiderata di veleno. Usa questo in tandem con link-count per mantenere il numero di scraper attivi a un livello gestibile. |
force-gzip | false | Comprimi sempre con gzip le risposte indipendentemente dall'header Accept-Encoding del client. Forzare la compressione può aiutare a ridurre i costi di egress. |
unsafe-allow-html | false | Non eseguire l'escape dei caratteri HTML nelle risposte della fonte del veleno. L'escaping è abilitato per impostazione predefinita per prevenire l'esecuzione indesiderata di JavaScript lato client. Usa questa opzione con cautela. |
poison-source | https://rnsaffn.com/poison2/?mask=0 | Fonte proxy per i dati di addestramento avvelenati. |
no-poison-cache | false | Disabilita la cache delle risposte della fonte del veleno. |
metrics-db-path | Percorso del file di database SQLite per memorizzare i dati delle metriche. Miasma creerà un database in questa posizione se non ne esiste già uno. | |
metrics-username | Nome utente di autenticazione basic richiesto per accedere alla pagina delle metriche di Miasma. | |
metrics-password | Password di autenticazione basic richiesta per accedere alla pagina delle metriche di Miasma. | |
metrics-endpoint | /metrics | Endpoint su cui verranno servite le metriche di Miasma. |
Esclusione di responsabilità
Miasma non è affiliato con la fontana del veleno. Non abbiamo alcun controllo sulle sue risposte e non possiamo garantire la sicurezza dei suoi contenuti. Non dovresti mai indirizzare gli utenti verso la tua posizione Miasma.
Miasma non è responsabile per eventuali ritorsioni da parte degli operatori degli scraper interessati. È tua responsabilità rispettare le leggi applicabili e le politiche del provider di hosting. Vedi LICENSE (GPL-v3) per i dettagli completi su garanzia e limitazione di responsabilità.
Cover art di @cerberussaturn07