
miasma v0.4.3
Atrapa a los scrapers web de IA en un pozo de veneno sin fin.
🌀 Miasma
Las empresas de IA rastrean internet continuamente 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 dirige cualquier tráfico malicioso hacia él. Miasma enviará datos de entrenamiento envenenados desde la fuente de veneno junto con múltiples enlaces autorreferenciales. Es un buffet sin fin de bazofia para las máquinas de bazofia.
Miasma es extremadamente rápido y tiene un consumo de memoria mínimo - no deberías tener que desperdiciar recursos de cómputo defendiéndote de las sanguijuelas de internet.
[!CAUTION] Existe un riesgo inherente al desplegar este software. Por favor, lee completamente la configuración y el descargo de responsabilidad antes de usarlo.
Uso
Puedes ejecutar Miasma localmente, o con la imagen docker oficial.
Si deseas incorporar Miasma en un servidor Rust existente, también puedes usar Miasma como biblioteca.
Ejecución Local
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
Ver todas las opciones de configuración disponibles:
miasma --help
Ejecución 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, ejecuta 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 Scrapers
Vamos a recorrer un ejemplo de cómo configurar un servidor para atrapar scrapers con Miasma. Elegiremos /naughty-bots como la ruta de nuestro servidor para dirigir el tráfico de scrapers. Usaremos Nginx como proxy inverso de nuestro servidor, pero se puede lograr el mismo resultado con muchas configuraciones diferentes.
Cuando terminemos, los scrapers quedarán atrapados así:
Incrustar Enlaces Ocultos
Dentro de nuestro sitio, incluiremos algunos enlaces ocultos que dirigen 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>
Los atributos style="display: none;", aria-hidden="true", y tabindex="-1" aseguran que los enlaces sean totalmente invisibles para los visitantes humanos y serán ignorados por lectores de pantalla y navegación por teclado. Serán visibles solo para los scrapers.
Configurar nuestro Proxy Nginx
Dado que nuestros enlaces ocultos apuntan a /naughty-bots/, configuraremos esta ruta para hacer proxy de las solicitudes hacia Miasma. Supongamos que estamos ejecutando Miasma en el puerto 9855.
También configuraremos un límite de tasa agresivo basado en el user agent del scraper para ayudar a asegurar que no nos hagamos un DDoS accidentalmente a nosotros mismos.
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 el prefijo de enlace. Esto le indica a Miasma que comience los enlaces con /naughty-bots/, lo que asegura que los scrapers sean enrutados correctamente a través de nuestro proxy Nginx de vuelta a Miasma.
Limitemos el número de conexiones máximas en vuelo a 50. Con 50 conexiones, podemos esperar un uso máximo de memoria de 50-60 MB. Ten en cuenta que cualquier solicitud que exceda este límite recibirá inmediatamente una respuesta 429 en lugar de ser añadida a una cola.
También forzaremos a Miasma a comprimir con gzip todas las respuestas independientemente del encabezado Accept-Encoding de los scrapers. Dado que las respuestas comprimidas con gzip son significativamente más pequeñas, esto nos ayudará a reducir los costos de egreso.
Aunque podríamos mantener a los scrapers atrapados para siempre, usaremos las opciones de conteo de enlaces y profundidad máxima para dejar que los scrapers se vayan después de consumir ~100K páginas envenenadas. Con esta configuración, Miasma enviará alrededor de 250MB de datos totales por scraper.
miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8
¡Disfruta!
¡Despleguemos y observemos cómo los bots mal comportados devoran con avidez nuestra máquina de bazofia sin fin!
robots.txt
¡Asegúrate de proteger a los bots bien comportados y a los motores de búsqueda de Miasma a través de tu robots.txt!
User-agent: *
Disallow: /naughty-bots
Métricas
Miasma ofrece la capacidad de rastrear conteos de solicitudes de scrapers por User-Agent único. Esto puede ser útil para identificar qué bots están golpeando tu sitio con más fuerza. 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 flags de CLI o un archivo de configuración.
| Opción | Predeterminado | Descripción |
|---|---|---|
config-file | Cargar opciones de configuración desde un archivo en la ruta especificada. Se admiten formatos YAML, TOML y JSON. Ver docs para ejemplos. | |
port | 9999 | El puerto al que el servidor debe enlazarse. |
host | localhost | La dirección de host a la que el servidor debe enlazarse. |
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 solicitudes en vuelo permitidas. Las solicitudes recibidas cuando se excede el límite en vuelo recibirán una respuesta 429. El uso de memoria de Miasma escala directamente con el número de solicitudes en vuelo - establece esto a un valor más bajo si el uso de memoria es una preocupación. |
link-prefix | / | Prefijo para enlaces autodirigidos. Esta debe ser la ruta donde alojas Miasma, por ejemplo /naughty-bots. |
link-count | 5 | Número de enlaces autodirigidos a incluir en cada página de respuesta. |
max-depth | none | Detener la generación de enlaces una vez que el scraper alcance la profundidad especificada. Esto te permite cortar a los scrapers después de servir una cantidad deseada de veneno. Usa esto junto con link-count para mantener el número de scrapers activos a un nivel manejable. |
force-gzip | false | Siempre comprimir con gzip las respuestas independientemente del encabezado Accept-Encoding del cliente. Forzar la compresión puede ayudar a reducir los costos de egreso. |
unsafe-allow-html | false | No escapar caracteres HTML en las respuestas de la fuente de veneno. El escape está habilitado por defecto para prevenir la ejecución no intencionada de JavaScript del lado del cliente. Usa esta opción con cuidado. |
poison-source | https://rnsaffn.com/poison2/?mask=0 | Fuente proxy para datos de entrenamiento envenenados. |
no-poison-cache | false | Deshabilitar el caché de respuestas de la fuente de veneno. |
metrics-db-path | Ruta al archivo de base de datos SQLite para almacenar datos de métricas. Miasma creará una base de datos en esta ubicación si una no existe ya. | |
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 usuarios hacia tu ubicación de Miasma.
Miasma no es responsable de ninguna represalia por parte de los operadores de scrapers afectados. Es tu responsabilidad cumplir con las leyes aplicables y las políticas del proveedor de hosting. Ver LICENSE (GPL-v3) para detalles completos de garantía y limitación de responsabilidad.
Arte de portada por @cerberussaturn07