⏱️ Lectura: 14 min

Si en las últimas semanas intentaste entrar al GitLab de VideoLAN, al wiki de GNOME o a alguno de los foros de SourceHut, probablemente te encontraste con una pantalla curiosa: un anubis egipcio acompañado del mensaje «¡Asegurándonos de que no eres un robot!» y una barra de progreso que tarda unos segundos en completarse antes de dejarte pasar. No es un CAPTCHA, no te pide marcar semáforos ni resolver acertijos visuales. Es Anubis proof of work, una herramienta que está reescribiendo cómo el ecosistema open source se defiende del scraping masivo de las empresas de IA.

📑 En este artículo
  1. Qué pasó: el caso VideoLAN y la oleada de adopción
  2. Qué es Anubis y por qué nació
  3. Cómo funciona por dentro
  4. La crisis del scraping de IA: por qué ahora
  5. Cómo desplegarlo: instalación paso a paso
    1. Linux (Ubuntu/Debian)
    2. macOS (con Homebrew)
    3. Windows
  6. Limitaciones, críticas y trade-offs
  7. Qué viene después
  8. Preguntas frecuentes
    1. ¿Anubis bloquea a Google y otros buscadores?
    2. ¿Cuánto tarda el desafío para un usuario humano?
    3. ¿Funciona contra empresas de IA grandes como OpenAI o Anthropic?
    4. ¿Es legal frenar scrapers de esta forma?
    5. ¿Cómo afecta al SEO?
    6. ¿Hay alternativas sin proof of work?
  9. Referencias

Lo que parecía una molestia menor para visitantes humanos se ha convertido en la última línea de defensa de proyectos que llevan años entregando recursos a la web pública y que, de pronto, ven sus servidores caerse bajo el peso de millones de peticiones automatizadas. Detrás de Anubis hay una idea vieja —el proof of work propuesto por Adam Back en 1997 para frenar el spam de correo electrónico— resucitada en 2026 para un problema nuevo: scrapers que ignoran robots.txt, rotan IPs de proveedores residenciales y consumen ancho de banda como si nadie pagara la factura.

Qué pasó: el caso VideoLAN y la oleada de adopción

El detonante visible en las últimas semanas fue VideoLAN, los desarrolladores de VLC, anunciando que el código de dav2d —su nuevo decodificador AV2 escrito en Rust— quedaría detrás de Anubis. La razón fue pragmática: el equipo reportó que su instancia de GitLab estaba siendo bombardeada por bots que clonaban repositorios completos varias veces al día, agotando workers, saturando la base de datos y dejando inaccesible el código incluso para sus propios contribuyentes.

VideoLAN no fue el primero ni el último. En los meses previos, GNOME desplegó Anubis en su wiki y en GitLab tras un patrón similar de tráfico abusivo. SourceHut, el forge minimalista de Drew DeVault, lo adoptó después de meses publicando estadísticas en las que el tráfico de bots superaba diez veces al humano. Wikis de proyectos pequeños como NixOS Foundation, ScummVM y varias instancias de Codeberg fueron sumándose. Hoy, según el repositorio oficial del proyecto, Anubis se ejecuta en cientos de despliegues conocidos, desde forges de código hasta archivos académicos y agregadores de noticias técnicas.

El mensaje que Anubis muestra al visitante es una declaración de principios: las empresas de IA «han cambiado el contrato social sobre cómo funciona el alojamiento de sitios web». Antes, un servidor podía servir HTML estático asumiendo costos predecibles; ahora, una sola startup con presupuesto para entrenar un LLM puede generar más tráfico desde un crawler en una semana que toda la audiencia humana de un proyecto open source en un año.

Qué es Anubis y por qué nació

Anubis es un middleware HTTP escrito principalmente en Go, mantenido por Xe Iaso y publicado bajo licencia MIT en el repositorio TecharoHQ/anubis. Funciona como un reverse proxy que se coloca delante de la aplicación real: cuando llega una petición, decide si el cliente parece humano (basándose en headers, fingerprint del navegador y otras señales) o si necesita superar un desafío antes de pasar.

El desafío es proof of work: el navegador del visitante recibe un valor inicial y un objetivo de dificultad, y debe encontrar un nonce que, concatenado con el valor inicial, produzca un hash SHA-256 con cierto número de ceros al inicio. Es matemáticamente idéntico al esquema que usa Bitcoin para minar bloques, solo que con dificultad muchísimo menor: para un humano legítimo en un navegador moderno, completarlo toma entre uno y cinco segundos. Para un scraper que rasguña miles de URLs por minuto, el costo agregado se vuelve prohibitivo.

💭 Clave: Anubis no detiene el scraping. Lo encarece. La hipótesis es que si raspar un sitio cuesta cien veces más CPU que antes, las empresas de IA priorizarán objetivos más baratos. Es una guerra económica, no técnica.

El nombre, por cierto, no es casual. Anubis es el dios egipcio que pesa el corazón de los muertos en el juicio de Osiris: si el corazón es más pesado que la pluma de Maat, el alma es devorada. La metáfora es transparente: el middleware pesa cada petición y decide si merece pasar.

Cómo funciona por dentro

El flujo completo es simple, y eso es parte de su gracia. No requiere bases de datos, ni cuentas, ni cookies de terceros. Toda la verificación ocurre en JavaScript del lado cliente y en una validación corta del lado servidor.

Diagrama del flujo de Anubis proof of work entre cliente y servidor
Flujo simplificado de Anubis: desafío, resolución y emisión de cookie firmada.

El navegador resuelve el puzzle usando la Web Crypto API y envía el nonce al servidor. Anubis verifica en milisegundos si el hash cumple la dificultad y, si es válido, emite una cookie firmada con HMAC que identifica al cliente como «pesado» durante un periodo configurable (típicamente unas horas). Mientras esa cookie esté presente y válida, las peticiones siguientes pasan directamente al backend sin volver a desafiar.

sequenceDiagram
    participant U as Usuario
    participant A as Anubis
    participant B as Backend
    U->>A: GET /pagina
    A->>U: "challenge: prefijo + dificultad"
    Note over U: "Resuelve PoW en JS"
    U->>A: "POST /verify nonce"
    A->>A: "Verifica SHA-256"
    A->>U: "Set-Cookie firmada"
    U->>A: GET /pagina
    A->>B: forward
    B->>U: contenido

La pieza interesante es la heurística inicial. Anubis no muestra el desafío a todo el mundo: revisa el User-Agent, el orden de los headers HTTP, la presencia de ciertos accept-types y otros indicadores que distinguen a un navegador real de un cliente automatizado. Si la petición ya parece de bot conocido y benévolo (Googlebot, Bingbot con verificación rDNS válida) la deja pasar. Si parece un curl o un cliente sin JavaScript que claramente no es un buscador legítimo, le exige el desafío. Es un sistema de capas, no un muro único.

La crisis del scraping de IA: por qué ahora

Para entender por qué proyectos como VideoLAN tomaron una decisión que rompe con décadas de hospedar HTML abierto, hay que mirar las cifras del tráfico bot durante 2025 y 2026. Reportes públicos de Cloudflare, Fastly y operadores de CDN coinciden en una tendencia: el tráfico automatizado ya supera al humano en muchas categorías de sitios, y dentro de ese tráfico bot, los crawlers de empresas de IA crecieron órdenes de magnitud entre 2023 y 2026.

Lo distinto de esta nueva ola de scrapers no es la cantidad sino el comportamiento. Los crawlers tradicionales —los de buscadores, los de archivadores como Internet Archive— respetan robots.txt, anuncian su User-Agent honesto, espacian las peticiones y se identifican con IPs de rangos publicados. Los scrapers de IA, en cambio, tienden a comportarse como adversarios: rotan User-Agents que imitan navegadores residenciales, usan redes de proxies para distribuirse en millones de IPs distintas, ignoran robots.txt y atacan rutas costosas (búsquedas, blames de git, paginaciones profundas) sin caché.

El resultado para un proyecto sin bolsillos profundos es predecible: la factura de ancho de banda se dispara, los workers se saturan, los desarrolladores empiezan a recibir alertas en horas extrañas. Drew DeVault documentó hace meses, en un post que circuló ampliamente, cómo SourceHut tuvo que dedicar tiempo de ingeniería que debería haber ido a producto, a defenderse contra scrapers que tiraban abajo su forge una y otra vez. La frustración del ecosistema open source con esta dinámica es lo que hizo a Anubis explotar en adopción.

⚠️ Ojo: Anubis requiere JavaScript moderno y rompe con plugins como JShelter o navegadores muy restringidos. La accesibilidad se ve afectada: usuarios con conexiones lentas o dispositivos viejos pueden esperar más de cinco segundos. Es un compromiso real, no un detalle menor.

Cómo desplegarlo: instalación paso a paso

Anubis se distribuye como binario en Go y como contenedor Docker. La forma más rápida de probarlo es con Docker, y la documentación oficial muestra un patrón de despliegue como reverse proxy delante de Nginx, Caddy o tu aplicación directa.

Linux (Ubuntu/Debian)

# Descargar el binario más reciente desde GitHub Releases
curl -LO https://github.com/TecharoHQ/anubis/releases/latest/download/anubis-linux-amd64.tar.gz
tar -xzf anubis-linux-amd64.tar.gz
sudo mv anubis /usr/local/bin/

# Configuración mínima
cat > /etc/anubis/botPolicies.json <<'EOF'
{
  "bots": [
    { "name": "googlebot", "action": "ALLOW", "user_agent_regex": "Googlebot" },
    { "name": "default", "action": "CHALLENGE" }
  ]
}
EOF

# Ejecutar como reverse proxy delante del backend en :8080
ANUBIS_BIND=:9090 \
ANUBIS_TARGET=http://localhost:8080 \
ANUBIS_DIFFICULTY=4 \
anubis

macOS (con Homebrew)

brew install go
go install github.com/TecharoHQ/anubis/cmd/anubis@latest

ANUBIS_BIND=:9090 \
ANUBIS_TARGET=http://localhost:8080 \
anubis

Windows

# Descargar zip desde GitHub Releases
Invoke-WebRequest -Uri https://github.com/TecharoHQ/anubis/releases/latest/download/anubis-windows-amd64.zip -OutFile anubis.zip
Expand-Archive anubis.zip

$env:ANUBIS_BIND=":9090"
$env:ANUBIS_TARGET="http://localhost:8080"
.\anubis\anubis.exe

Después se configura el reverse proxy del front (Nginx, Caddy o Traefik) para que apunte a :9090 en vez de directamente al backend. La dificultad (parámetro DIFFICULTY) es el dial principal: cada incremento duplica el costo computacional para el cliente. Cuatro o cinco bits suelen ser invisibles para un humano y devastadores para un scraper que multiplica eso por millones de URLs.

Logos de proyectos open source que adoptaron Anubis para defenderse de scrapers
VideoLAN, GNOME, SourceHut y NixOS están entre los proyectos que lo desplegaron en 2026.

Limitaciones, críticas y trade-offs

Anubis no es una solución elegante ni completa. Sus propios autores lo presentan como un «compromiso», una solución provisional mientras se investigan formas más sutiles de identificar navegadores headless, por ejemplo a partir de cómo renderizan fuentes o cómo manejan APIs específicas del DOM. Las críticas que recibe son legítimas y conviene tenerlas presentes:

  • Rompe la web sin JavaScript. Lectores como Lynx, motores de búsqueda alternativos, lectores de pantalla con malas implementaciones, navegadores hardened —todos ellos quedan afuera. La equipo trabaja en un fallback sin JS, pero hoy es un agujero real.
  • Carga energética distribuida. Resolver el desafío gasta CPU del visitante. Multiplicado por millones de visitantes humanos, equivale a una transferencia de costo del operador del sitio hacia los usuarios y, eventualmente, hacia la red eléctrica.
  • Carrera armamentística. Los scrapers de IA pueden, eventualmente, ejecutar el JavaScript del desafío. Si lo hacen, la única defensa es subir la dificultad, lo que castiga aún más a los humanos. Es un equilibrio inestable.
  • No diferencia bien entre IA y humanos en regiones con dispositivos modestos. Un usuario en LATAM con un teléfono Android de gama baja puede tardar varios segundos en pasar el desafío, mientras un scraper corriendo en una GPU lo resuelve en milisegundos.
💡 Tip: Si vas a desplegarlo, mide primero cuánto tarda el desafío en el dispositivo más lento de tu audiencia objetivo. Cuatro bits puede ser invisible en un MacBook M3 y un suplicio de ocho segundos en un celular de 80 dólares. Ajustá la dificultad a tu realidad, no a la del autor del proyecto.

Qué viene después

El equipo de Anubis ha sido transparente respecto a su roadmap. Los siguientes pasos pasan por reducir la dependencia de JavaScript, mejorar el fingerprinting pasivo de navegadores —para mostrar el desafío solo a clientes sospechosos— y experimentar con desafíos alternativos como cálculos de huella tipográfica o análisis de patrones de scroll y movimiento de mouse en sesiones largas.

El movimiento más amplio del que Anubis es síntoma es probablemente más interesante que la herramienta misma. Cloudflare lanzó este año su AI Bot Blocking integrado al WAF gratuito, OpenAI publicó verificación criptográfica para distinguir GPTBot legítimo de impostores, y proyectos como ai.txt intentan formalizar un nuevo contrato entre publicadores y crawlers de IA. Es probable que en doce o dieciocho meses Anubis sea reemplazado por algo más sofisticado, pero el debate que abrió —¿quién paga el costo de servir contenido a quien lo va a usar para entrenar un modelo cerrado?— ya no se va a cerrar.

Para LATAM, el aspecto a observar es doble. Por un lado, muchos proyectos open source de la región hospedan en infraestructura modesta (un VPS de Hetzner, un Pi Zero en una oficina) y son particularmente vulnerables al scraping abusivo. Anubis es una de las pocas herramientas que pueden desplegar sin contratar Cloudflare Enterprise. Por el otro, los visitantes de la región sufren más el costo del proof of work, dado el parque de dispositivos y la calidad de las conexiones móviles. Encontrar el punto dulce es un trabajo regional, no global.

📖 Resumen en Telegram: Ver resumen

Preguntas frecuentes

¿Anubis bloquea a Google y otros buscadores?

No por defecto. La configuración estándar permite a Googlebot, Bingbot y otros crawlers identificables con verificación rDNS pasar sin desafío. La política se define en botPolicies.json y se puede personalizar para permitir o bloquear cada cliente.

¿Cuánto tarda el desafío para un usuario humano?

Con dificultad por defecto (4 bits), entre uno y cinco segundos en un navegador moderno. Subir a 5 o 6 bits puede llevar el tiempo a diez o quince segundos en dispositivos lentos, lo que ya es perceptible y empieza a frustrar a usuarios legítimos.

¿Funciona contra empresas de IA grandes como OpenAI o Anthropic?

Funciona contra cualquier crawler que no ejecute JavaScript. Algunos crawlers grandes ya usan navegadores headless completos y pueden resolver el desafío, pero el costo computacional agregado les obliga a priorizar objetivos. Anubis encarece, no impide.

Sí. Anubis se ejecuta en tu servidor y aplica políticas a tu propio tráfico. No interfiere con redes ajenas. La discusión legal alrededor del scraping (casos como hiQ Labs vs. LinkedIn) trata sobre acceder a datos públicos, no sobre el derecho de un servidor a exigir un desafío antes de servir contenido.

¿Cómo afecta al SEO?

Si está bien configurado, no debería afectarlo. La política por defecto deja pasar a los buscadores principales sin desafío. Lo crítico es validar que la lista de bots permitidos esté actualizada y que el rDNS funcione correctamente para evitar bloquear a Googlebot por error.

¿Hay alternativas sin proof of work?

Sí. Cloudflare Bot Management, AWS WAF Bot Control y servicios como DataDome ofrecen detección comercial sin imponer carga al cliente. Para self-hosting, hay middlewares como CrowdSec que se basan en reputación de IPs. Cada opción tiene trade-offs distintos en costo, privacidad y precisión.

Referencias

📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.

Categorías: Noticias Tech

Andrés Morales

Desarrollador e investigador en inteligencia artificial. Escribe sobre modelos de lenguaje, frameworks, herramientas para devs y lanzamientos open source. Cubre papers de ML, ecosistema de startups tech y tendencias de programación.

0 Comentarios

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.