Volver a actualizaciones
Nuevo releaseSep 20, 2026

miasma v0.4.3

Atrapa a los scrapers web de IA en un pozo de veneno sin fin.

Compartir

🌀 Miasma

No AI crates.io downloads Docker Pulls GitHub commits since latest release

Rastreadores web quedándose atrapados en una nube de miasma venenoso.

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:

Packaging status

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í:

Diagrama de flujo que representa el ciclo de scrapers atrapados.

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ónPredeterminadoDescripción
config-fileCargar opciones de configuración desde un archivo en la ruta especificada. Se admiten formatos YAML, TOML y JSON. Ver docs para ejemplos.
port9999El puerto al que el servidor debe enlazarse.
hostlocalhostLa dirección de host a la que el servidor debe enlazarse.
unix-socketEnlazar a un socket de dominio Unix en lugar de una dirección TCP. Solo disponible en sistemas tipo Unix.
max-in-flight500Nú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-count5Número de enlaces autodirigidos a incluir en cada página de respuesta.
max-depthnoneDetener 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-gzipfalseSiempre 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-htmlfalseNo 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-sourcehttps://rnsaffn.com/poison2/?mask=0Fuente proxy para datos de entrenamiento envenenados.
no-poison-cachefalseDeshabilitar el caché de respuestas de la fuente de veneno.
metrics-db-pathRuta 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-usernameNombre de usuario de autenticación básica requerido para acceder a la página de métricas de Miasma.
metrics-passwordContraseña de autenticación básica requerida para acceder a la página de métricas de Miasma.
metrics-endpoint/metricsEndpoint 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

Categorías