
miasma v0.4.1
Atrapa a los scrapers web de IA en un pozo de veneno sin fin.
🌀 Miasma
Las empresas de IA no dejan de rastrear Internet a una escala enorme, engullendo todo su contenido para usarlo como datos de entrenamiento para sus próximos modelos. Si tienes un sitio web público, ya están robando tu trabajo.
Miasma está aquí para ayudarte a contraatacar. Levanta el servidor y apunta cualquier tráfico malicioso hacia él. Miasma enviará datos de entrenamiento envenenados desde la fuente de veneno junto con múltiples enlaces auto-referenciales. Es un buffet interminable de bazofia para las máquinas de bazofia.
Miasma es rapidísimo y tiene una huella de memoria mínima: no deberías tener que malgastar recursos de computación para defenderte de las sanguijuelas de Internet.
[!CAUTION] Existe un riesgo inherente al desplegar este software. Por favor, lee por completo configuración y descargo de responsabilidad antes de usarlo.
Uso
Puedes ejecutar Miasma localmente o con la imagen docker oficial.
Si deseas incorporar Miasma a un servidor Rust existente, también puedes usar Miasma como una librería.
Ejecutar Localmente
Instala con cargo (recomendado):
cargo install miasma
Alternativamente, descarga un binario precompilado desde releases.
También hay paquetes mantenidos por la comunidad disponibles para una variedad de gestores de paquetes:
Inicia Miasma con la configuración predeterminada:
miasma
Consulta todas las opciones de configuración disponibles:
miasma --help
Ejecutar con Docker
Ejecuta Miasma usando la imagen docker oficial:
docker run --rm -p 9999:9999 austinweeks/miasma:latest
Pasa las mismas opciones de configuración que usarías localmente:
docker run --rm -p 9999:9999 austinweeks/miasma:latest \
--link-prefix '/naughty-bots' \
--max-in-flight 30
O ejecútalo dentro de un clúster de docker compose:
services:
miasma:
image: austinweeks/miasma:latest
command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
ports:
- 9999:9999
Cómo Atrapar Rastreadores
Veamos un ejemplo de configuración de un servidor para atrapar rastreadores con Miasma. Elegiremos /naughty-bots como la ruta de nuestro servidor para dirigir el tráfico de los rastreadores. Usaremos Nginx como proxy inverso de nuestro servidor, pero se puede lograr el mismo resultado con muchas configuraciones diferentes.
Cuando terminemos, los rastreadores quedarán atrapados así:
Insertar Enlaces Ocultos
Dentro de nuestro sitio, incluiremos algunos enlaces ocultos que apunten a /naughty-bots.
<a
href="/naughty-bots/"
style="display: none;"
aria-hidden="true"
tabindex="-1"
>
Amazing high quality data here!
</a>
Los atributos style="display: none;", aria-hidden="true" y tabindex="-1" aseguran que los enlaces sean totalmente invisibles para los visitantes humanos y que los lectores de pantalla y la navegación con teclado los ignoren. Solo serán visibles únicamente para los rastreadores.
Configurar nuestro Proxy Nginx
Como nuestros enlaces ocultos apuntan a /naughty-bots/, configuraremos esta ruta para que envíe las peticiones por proxy a Miasma. Supongamos que estamos ejecutando Miasma en el puerto 9855.
También configuraremos una limitación de velocidad agresiva basada en el user agent del rastreador para ayudar a asegurarnos de no provocarnos un DDoS a nosotros mismos accidentalmente.
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/;
}
}
}
Esta configuración capturará todas las variaciones de la ruta /naughty-bots -> /naughty-bots, /naughty-bots/, /naughty-bots/12345, etc.
Ejecutar Miasma
Por último, iniciaremos Miasma y especificaremos /naughty-bots como prefijo de enlaces. Esto le indica a Miasma que comience los enlaces con /naughty-bots/, lo que asegura que los rastreadores sean enrutados correctamente a través de nuestro proxy Nginx de vuelta a Miasma.
Limitemos el número máximo de conexiones en vuelo a 50. Con 50 conexiones, podemos esperar un uso máximo de memoria de 50-60 MB. Ten en cuenta que cualquier petición que supere este límite recibirá inmediatamente una respuesta 429 en lugar de añadirse a una cola.
También forzaremos a Miasma a comprimir todas las respuestas con gzip independientemente de la cabecera Accept-Encoding de los rastreadores. Dado que las respuestas comprimidas con gzip son significativamente más pequeñas, esto nos ayudará a reducir los costes de salida de datos.
Aunque podríamos mantener a los rastreadores atrapados para siempre, usaremos las opciones de número de enlaces y profundidad máxima para dejar ir a los rastreadores después de que consuman ~100K páginas envenenadas. Con esta configuración, Miasma enviará alrededor de 250MB de datos totales por rastreador.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
¡A Disfrutar!
¡Despleguemos y observemos cómo los bots mal educados devoran con avidez nuestra interminable máquina de bazofia!
robots.txt
Asegúrate de proteger a los bots y motores de búsqueda que se portan bien de Miasma mediante tu robots.txt!
User-agent: *
Disallow: /naughty-bots
Métricas
Miasma ofrece la posibilidad de rastrear el número de peticiones de los rastreadores por User-Agent único. Esto puede ser útil para identificar qué bots están golpeando tu sitio con más intensidad. Las métricas se escriben en un archivo de base de datos SQLite local y se pueden ver en un endpoint de tu elección.
Configuración
Miasma se puede configurar mediante opciones de CLI o un archivo de configuración.
| Opción | Valor por defecto | Descripción |
|---|---|---|
config-file | Carga las opciones de configuración desde un archivo en la ruta especificada. Se admiten formatos YAML, TOML y JSON. Consulta docs para ver ejemplos. | |
port | 9999 | El puerto al que debe enlazarse el servidor. |
host | localhost | La dirección de host a la que debe enlazarse el servidor. |
unix-socket | Enlazar a un socket de dominio Unix en lugar de una dirección TCP. Solo disponible en sistemas tipo Unix. | |
max-in-flight | 500 | Número máximo de peticiones en vuelo permitidas. Las peticiones recibidas cuando se supera el límite en vuelo recibirán una respuesta 429. El uso de memoria de Miasma escala directamente con el número de peticiones en vuelo: establece un valor más bajo si el uso de memoria es una preocupación. |
link-prefix | / | Prefijo para los enlaces auto-directores. Esta debería ser la ruta donde alojas Miasma, p. ej. /naughty-bots. |
link-count | 5 | Número de enlaces auto-directores a incluir en cada página de respuesta. |
max-depth | none | Deja de generar enlaces una vez que el rastreador alcanza la profundidad especificada. Esto te permite cortar a los rastreadores después de servir una cantidad deseada de veneno. Úsalo junto con link-count para mantener el número de rastreadores activos en un nivel manejable. |
force-gzip | false | Comprime siempre las respuestas con gzip independientemente de la cabecera Accept-Encoding del cliente. Forzar la compresión puede ayudar a reducir los costes de salida de datos. |
unsafe-allow-html | false | No escapar los caracteres HTML en las respuestas de la fuente de veneno. El escape está habilitado por defecto para evitar la ejecución no intencionada de JavaScript en el lado del cliente. Usa esta opción con cuidado. |
poison-source | https://rnsaffn.com/poison2/?mask=0 | Fuente proxy para los datos de entrenamiento envenenados. |
no-poison-cache | false | Deshabilitar el almacenamiento en caché de las respuestas de la fuente de veneno. |
metrics-db-path | Ruta al archivo de base de datos SQLite para almacenar los datos de métricas. Miasma creará una base de datos en esta ubicación si aún no existe. | |
metrics-username | Nombre de usuario de autenticación básica requerido para acceder a la página de métricas de Miasma. | |
metrics-password | Contraseña de autenticación básica requerida para acceder a la página de métricas de Miasma. | |
metrics-endpoint | /metrics | Endpoint en el que se servirán las métricas de Miasma. |
Descargo de Responsabilidad
Miasma no está afiliado con la fuente de veneno. No tenemos control sobre sus respuestas y no podemos garantizar la seguridad de su contenido. Nunca debes dirigir a los usuarios hacia tu ubicación de Miasma.
Miasma no es responsable de ninguna represalia por parte de los operadores de los rastreadores afectados. Es tu responsabilidad cumplir con las leyes aplicables y las políticas de tu proveedor de alojamiento. Consulta LICENSE (GPL-v3) para ver la garantía completa y la limitación de responsabilidad.
Arte de portada por @cerberussaturn07