3 puntos por GN⁺ 2025-04-14 | 1 comentarios | Compartir por WhatsApp
  • Anubis se desplegó en policytoolbox.iiep.unesco.org de UNESCO, lo que le da más visibilidad como caso de una herramienta contra bots usada por organizaciones grandes
  • Tras confirmar que unesco.org es el dominio oficial de UNESCO, este despliegue pasa a considerarse un caso real de uso por parte de una organización vinculada a las Naciones Unidas
  • Su uso se está ampliando junto con otros despliegues ya conocidos, como los archivos de la Linux Kernel Mailing List, el SVN de FreeBSD, SourceHut, FFmpeg, Wine y el GitLab de GNOME
  • Que estas organizaciones estén adoptando Anubis sugiere que el problema del tráfico de bots en internet podría ser más grave de lo esperado
  • Hace falta dedicar más tiempo a Anubis y a la pila que lo rodea, y con suficiente apoyo incluso sería posible trabajar en esto a tiempo completo y contratar personal

Confirmación del despliegue en UNESCO

  • Anubis fue desplegado en policytoolbox.iiep.unesco.org de UNESCO, organismo de las Naciones Unidas
  • unesco.org aparece en Wikipedia como el dominio oficial de la United Nations Educational, Scientific and Cultural Organization
  • Se busca contactar al equipo de administradores de sistemas de UNESCO para confirmar si hubo problemas durante la instalación y hacer más sencillo el proceso de instalación

Casos de despliegue conocidos y trabajo por delante

  • Los despliegues grandes confirmados incluyen:
    • archivos de la Linux Kernel Mailing List
    • SVN de FreeBSD, y pronto git
    • SourceHut
    • FFmpeg
    • Wine
    • UNESCO
    • The Science Olympiad Student Center
    • entorno de escritorio Enlightenment
    • GitLab de GNOME
  • Si organizaciones de este tamaño están usando Anubis, el problema del tráfico de bots podría estar en un nivel mucho más grave de lo que se pensaba
  • Al igual que cuando YouTube estuvo cerca de “the inversion”, un caso en el que el tráfico de bots superaba al tráfico humano, la pregunta pendiente es qué tan extendido está un fenómeno similar en todo internet
  • Hay que dedicarle tiempo de verdad a Anubis y a la pila relacionada, y si se consigue suficiente apoyo se podría trabajar en esto a tiempo completo e incluso contratar
  • Si Anubis te resulta útil, se pide apoyo en Patreon

1 comentarios

 
GN⁺ 2025-04-14
Comentarios de Hacker News
  • Artículo relacionado: Anubis: un proxy de prueba de trabajo para bloquear crawlers de IA (100 points, hace 23 días, 58 comments) https://news.ycombinator.com/item?id=43427679

  • Es interesante que Xe haya convertido algo que antes era casi una broma/un post sin sentido en un producto realmente útil. Siempre se dice que el timing lo es todo
    Me sorprende un poco que tantos sitios lo quieran o lo necesiten. Entiendo el problema de las páginas lentas de Git en algunos servidores Git muy profundos, sin caché y servidos desde discos lentos
    Lo de UNESCO me sorprendió un poco. Ese subsitio tiene miles de documentos y es bastante grande, pero al ser contenido estático debería ser fácil de servir. Revisándolo, era un WordPress desplegado de forma descuidada sobre Apache, sin caché, sin compresión de contenido y sin HTTP/2 ni HTTP/3
    Probablemente sería fácil arreglarlo para servirlo de forma muy barata incluso en una máquina muy pequeña, pero claro, hace falta expertise, y el expertise sigue sin ser barato
    Podrías preguntarle a un LLM, pero si ni siquiera sabes qué preguntar, todavía no ayuda mucho. Si ni siquiera sabes que el sitio es lento para empezar, ¿por qué preguntarías? Probablemente solo te dirían que el tráfico lo está aplastando y terminarías buscando un defensor furry

    • Es cierto eso de que “hace falta expertise y el expertise sigue sin ser barato”, pero al mismo tiempo me sigue sorprendiendo porque creo que hay mucha menos gente que sepa configurar Anubis que gente con experiencia administrando WordPress
      No quiero decir que sea difícil, sino que para empezar hay poca gente que sepa que existe
      Si tuviera que adivinar, diría que la razón para no tocar WordPress no es un tema técnico, sino que no quieren tocar una instancia frágil, o hay problemas de permisos dentro de la organización, o el administrador ya asumía que WP estaba bien configurado
    • El sitio donde me gustaría aplicar esto tiene muchos artículos, y con la búsqueda facetada basada en etiquetas se generan combinaciones y cantidad de páginas prácticamente infinitas
      No hay forma de cachear eso, y los bots ni siquiera respetan el archivo robots, así que siguen pidiendo URLs y descargando artículos una y otra vez con distintos números y combinaciones. Es un verdadero dolor de cabeza
    • Los scrapers de IA no solo están mal implementados, sino que además provocan invalidación de caché a propósito
      Hasta ahora, las soluciones que he visto son Cloudflare, exigir login, Anubis o una infraestructura de escala absurda
      Un sitio dijo que el 60% de su tráfico venía de bots, y en sitios más pequeños probablemente esa proporción sea mucho mayor
    • Las defensas contra bots/scraping/DDoS basadas en prueba de trabajo ya existían hace 10 años; no sé por qué recién ahora se están extendiendo
      También recuerdo proyectos que intentaban convertir la prueba de trabajo en cómputo útil
  • Si no tienes claro qué es esto, es para bloquear el scraping de IA
    “Anubis usa desafíos de prueba de trabajo para garantizar que el cliente esté usando un navegador moderno y pueda calcular checksums SHA-256”
    https://anubis.techaro.lol/docs/design/how-anubis-works
    Bastante genial; podría ayudarme también en uno o dos de mis proyectos

    • Desde hace unos años me pregunto si la web es para humanos o para máquinas. No se me ocurre una buena razón para tener que bloquear específicamente bots al servir contenido
      Permitir que publiquen contenido o ejecuten acciones, por supuesto, puede ser problemático en varias situaciones
      Pero al servir contenido simple, normalmente que sea humano o bot no es el criterio por el que quieres filtrar o bloquear. Si un cliente específico no está abusando del sistema, ¿por qué debería importarte si es humano?
  • “También usa el tiempo como entrada. Por la naturaleza de una línea temporal lineal, tanto el servidor como el solicitante saben qué hora es”
    Es una frase graciosa de la documentación

    • Dios, había olvidado que dejé eso ahí. Qué gracioso. Pienso mantenerlo
    • Lamentablemente, fuera de contexto, eso es incorrecto. Anubis redondea el tiempo a la semana más cercana, y si la semana adyacente también es válida, probablemente sea suficiente
      Por varias razones, los desajustes de sincronización de reloj son comunes. No puedes esperar que el 10% inferior de los usuarios tenga siquiera la fecha correcta, y hasta el 25% inferior podría estar desfasado unos 5 minutos
  • Las imágenes de la página intermedia que aparecen hasta que termina la verificación de Anubis son realmente tiernas. Siempre me parecieron hermosas las ilustraciones y los personajes del blog de Xe
    Como tema lateral, me preguntaba qué efecto tendría esto en los motores de búsqueda comunes y en qué se diferencia de la solución de Cloudflare para bloquear crawlers de IA, y está explicado en la página de GitHub [1]
    “Si instalas y usas esto, es muy probable que algunos motores de búsqueda no indexen tu sitio web. Esto se considera una función de Anubis, no un bug”
    “Esto es una respuesta un tanto de opción nuclear, pero los bots scrapers de IA se pusieron tan agresivos que no quedó otra”
    “En la mayoría de los casos no necesitas usar esto, y probablemente baste con proteger un servidor de origen específico con Cloudflare. Pero si no puedes o no quieres usar Cloudflare, existe Anubis”
    [1]: https://github.com/TecharoHQ/anubis/

    • Sí. Por ahora, lamentablemente, bloquea la indexación de búsqueda. Tal vez más adelante se puedan poner en una lista blanca las IP de los motores de búsqueda
      Aunque lugares como Google a veces usan las mismas IP para IA y para indexación de búsqueda
      Aun así, se están haciendo mejoras como dejar pasar las etiquetas Open Graph, para que al menos funcionen las vistas previas enriquecidas
    • Coincido en que las imágenes de la página intermedia son tiernas. Pero me horroriza pensar que algún día alguien las considerará “problemáticas” de alguna forma y terminarán quitándolas
  • Leí sobre Anubis y es un proyecto genial. Lamentablemente, como se mencionó en los comentarios, los visitantes del sitio deben activar JavaScript™
    Si de todos modos es un sitio que necesita JavaScript™ para mejorar la experiencia de usuario, está perfectamente bien, pero no me parece ideal para sitios estáticos que no necesitan JS en absoluto.
    Yo creé mi propia solución para bloquear eficazmente a estos “bots malos” a nivel de red. Uso la base de datos de MaxMind y un WAF/proxy inverso hecho por mí para bloquear redes completas de varias grandes “Big Tech / Big LLM” por ASN (BGP).

    • Una parte considerable del tráfico de bots del que trata este artículo viene de rangos de IP residenciales comunes.
      Claro, también hay juegos con ASN y fraude de reputación, pero es muy difícil responder a eso. Al revisar por encima los logs, estos bots parecían hacer una sola solicitud desde una IP residencial específica, y es muy probable que esos rangos también los usen usuarios humanos reales.
      En pocas palabras, existe el riesgo de bloquear tráfico legítimo. Esta solución también tiene riesgos, pero para la mayoría de los humanos el riesgo real es mucho menor.
      Sería bueno no necesitar JavaScript y poder dar soporte a usuarios que lo tienen desactivado, pero ni clientes ni usuarios finales se han quejado jamás de tener que activar JavaScript.
      Quienes se oponen al requisito de JavaScript son una minoría ruidosa, y la mayoría de ellos simplemente lo activan cuando se topan con un sitio que lo necesita. Incluso entonces, creo que son muy pocos los que sueltan un suspiro derrotado.
    • Para quien tenga curiosidad, la marca “JavaScript” pertenece a Oracle: https://javascript.tm/
    • ¿Cómo sabes si es un LLM o una VPN? ¿Cómo separas el tráfico de LLM con la base de datos de MaxMind?
    • ¿Hay algún enlace a tu solución casera?
  • Me gusta la idea, pero cuando se aclare la naturaleza del desafío, probablemente debería bajar al nivel de protocolo.
    Desde el punto de vista de accesibilidad, al final sería mejor que los desafíos de prueba de trabajo fueran parte de algo más cercano a TCP, en vez de implementarse por separado en JavaScript en cada sitio web.

    • Existe Cloudflare PrivacyPass, que se convirtió en estándar del IETF [0], pero es bastante extraño y la implementación de referencia es una montaña de bugs.
      [0] https://datatracker.ietf.org/wg/privacypass/about/
    • Bastaría con enviar un desafío arbitrario como caja negra en SPIR-V o MLIR. Si el intercambio desafío-respuesta se integra con HTTP, permitiría un soporte amplio y aceleración por hardware flexible.
      Una solución “suficientemente buena” es el SHA(seed, nonce) que ya se usa ampliamente. Si las grandes tecnológicas hubieran querido, esto se podría haber integrado fácilmente en una capa más baja del stack.
  • En mi teléfono, resolver la detección de bots tarda hasta 5 segundos.

    • Uso Fennec, el fork de Firefox de F-Droid, y un Pixel 9 Pro XL; con dificultad 4 tarda unos 8 segundos.
      Personalmente, como no tengo que hacer nada, no creo que la experiencia de usuario sea tan mala. Definitivamente lo prefiero a un CAPTCHA.
    • Mucho mejor que un bucle infinito de CAPTCHA de Cloudflare.
    • Qué suerte. A mí me tardó 30 segundos.
    • En mi caso fue como 0.5 segundos, interesante.
  • Estoy creando un prototipo que por ahora llamo “fuente web Enigma”. La idea es aplicar una semilla personalizada y valores de rotación por sesión de usuario a las fuentes web que se sirven y se cachean.
    El objetivo es hacer que el web scraping sea inviable por el costo computacional del OCR. Ahora mismo es un juego del gato y el ratón, y quiero inclinar un poco la balanza.
    Sin una sesión de usuario, el código fuente HTML queda prácticamente sin sentido, y si el caché de assets desaparece con un comportamiento tipo OTP, también se puede hacer que la página web no sea legible.
    Con esto se podría crear efectivamente un CAPTCHA en el que el usuario ajusta una ventana de semilla local hasta poder leer una palabra concreta. Por ejemplo: “Mueve el deslizador hasta que puedas leer la palabra Foxtrott”.
    Me encantaría escuchar la opinión de Xe. ¿Podríamos unir fuerzas?
    El stack tecnológico es Go, porque fue el único lenguaje con el que resultó fácil modificar directamente archivos de fuentes web sin problemas.

    • Aun dejando de lado los problemas evidentes de accesibilidad, ¿no sería eso, en el mejor de los casos, un cifrado por sustitución? Con un corpus suficiente, me parece que el criptoanálisis sería mucho más fácil.
    • El problema no es que hagan scraping del sitio web en sí, sino el volumen de solicitudes que tumba la infraestructura o aumenta los costos. Los motores de búsqueda llevan más de 30 años haciendo esto.
      Romper el texto no ayudaría. De todos modos van a seguir pegándole. Viendo los patrones de tráfico, quienes hicieron estos bots simplemente... <https://www.youtube.com/watch?v=ulIOrQasR18>
      Sobre “quiero escuchar la opinión de Xe. ¿Podríamos unir fuerzas?”, por lo que entiendo, más que agregar funciones, parece que el proyecto necesita ayuda para volverse más sostenible en el futuro cercano y lejano. Anubis ya parece funcionar muy bien.
  • Sin duda funciona bien para bloquear a usuarios que tienen JavaScript desactivado.

    • Sí. Como intento de hacerlo más atractivo para más gente, es realmente pobre. A menos que publiquen una versión nojs, no es distinto de los scrapers de “IA” en cuanto a romper la web.