trueNetLab logo
ES
Kitesurf y Obscura: ¿A quién pertenece el navegador de IA?

Kitesurf y Obscura: ¿A quién pertenece el navegador de IA?

Cuando hoy se habla de un navegador de IA, muchos piensan primero en un navegador normal con una ventana de chat. Una IA resume pestañas, responde preguntas o completa un formulario. Sin embargo, hay una segunda categoría técnicamente más interesante: motores de navegador que ya no están diseñados para personas. Funcionan sin una ventana visible, se controlan mediante API y quizá solo existen durante una única tarea.

En mi artículo sobre WebMCP y la web agéntica analicé sitios web que ofrecen funciones estructuradas a agentes. Kitesurf y Obscura abordan el otro lado del problema. Mientras la mayor parte de la web no disponga de una interfaz para agentes, los sistemas de IA seguirán necesitando un motor capaz de leer y manejar páginas normales.

Ahí es exactamente donde Cloudflare posiciona Kitesurf. El nuevo navegador se ejecuta sobre Cloudflare Workers, habla el Chrome DevTools Protocol y pretende ofrecer páginas web a los agentes con un coste muy inferior al de un proceso Chromium completo. Lo interesante no es solo su arquitectura. La propia Cloudflare afirma que el primer prototipo se inspiró en Obscura, un navegador independiente y de código abierto escrito en Rust.

Obscura, no obstante, persigue además otro objetivo. Su modo stealth opcional intenta ocultar características típicas de los navegadores automatizados. Kitesurf no lo hace. Al contrario: Browser Run marca deliberadamente las solicitudes salientes para que los operadores puedan reconocerlas como automatización de Cloudflare y verificarlas criptográficamente.

Esto plantea una pregunta incómoda. ¿Tomó Cloudflare una buena idea de código abierto, eliminó la parte inconveniente para la detección de bots y prefirió convertirla en un producto propio y controlable?

La respuesta corta es: La crítica acierta en parte sobre un conflicto de intereses real. Sin embargo, hasta ahora no está demostrada como explicación del origen de Kitesurf. Desde el punto de vista técnico y estratégico ocurre algo más que una copia depurada de Obscura.

Kitesurf y Obscura no solo construyen dos navegadores. Construyen dos reglas distintas sobre cómo deben ser visibles los agentes de IA en la web.

Base de la prueba y limitaciones

Este análisis se basa en el artículo de Cloudflare del 6 de agosto de 2026, la documentación actual de Browser Run y una revisión del código y la documentación del repositorio público de Obscura realizada el 25 de agosto de 2026. La versión vigente entonces, Obscura 0.2.1, había aparecido dos días antes. Se tuvieron en cuenta, en particular, la arquitectura, las rutas de red, la implementación stealth, los avisos de seguridad, las notas de versión y el repositorio de benchmarks independiente.

No realicé mediciones propias de rendimiento frente a Kitesurf ni pruebas contra desafíos de bots en producción. Por tanto, las afirmaciones sobre la calidad de detección proceden de la implementación, los límites documentados y los benchmarks publicados por los fabricantes. Cuando de ello se deduce una intención estratégica de Cloudflare, se trata expresamente de una valoración y no de una declaración confirmada de la empresa.

Qué debe hacer técnicamente un navegador de IA

Un navegador clásico es una enorme máquina universal. Renderiza CSS complejo, reproduce contenido multimedia, acelera gráficos mediante GPU, administra extensiones, sincroniza perfiles y mantiene muchas pestañas estables durante horas. Para un agente que solo debe leer una página de producto, encontrar un botón o crear una captura, gran parte de ello es lastre.

Aun así, el agente necesita más que un cliente HTTP. Las páginas modernas suelen entregar primero un esqueleto HTML casi vacío. JavaScript crea el contenido real, inicia más solicitudes, modifica el DOM y responde a acciones del usuario. Por eso, un navegador de IA útil necesita como mínimo:

  • un runtime de JavaScript
  • un DOM suficientemente compatible
  • lógica de red, cookies y origen
  • eventos para ratón, teclado, formularios y navegación
  • una interfaz para agentes y herramientas de automatización
  • según la tarea, layout, capturas de pantalla y salida PDF
  • límites estrictos para código ajeno, tiempo de ejecución, memoria y acceso a la red

Kitesurf y Obscura reducen Chromium a estos componentes relevantes para agentes. Ambos ofrecen CDP para que herramientas existentes como Playwright y Puppeteer no deban adaptarse a una interfaz completamente nueva. Ambos ejecutan JavaScript real y construyen un DOM vivo. Ambos desarrollan rutas de renderizado propias en vez de limitarse a iniciar Chromium con otros parámetros.

Eso los convierte en motores de navegador para automatización. El modelo de lenguaje, la planificación de tareas, los permisos y la decisión de si un agente debe ejecutar una acción siguen estando por encima. Esta separación es importante. Un navegador rápido no convierte a un agente poco fiable en un agente seguro.

Kitesurf: un navegador construido con Workers

Cloudflare no creó Kitesurf como un único ejecutable. El motor está distribuido entre varios componentes Worker con límites de confianza diferentes.

Engine, PageScript y PageRenderer

El Engine Worker es el punto de entrada público. Acepta conexiones CDP y llamadas REST y mantiene el estado de una sesión. De este modo, un cliente CDP existente puede comunicarse con Kitesurf de forma parecida a Chrome.

Para cada página y cada iframe separado, Kitesurf inicia un PageScript Worker. Este recibe un contexto global de JavaScript nuevo y el DOM de la página. HTML y CSS se procesan con componentes de Blitz y Stylo. JavaScript normal y WebAssembly se ejecutan en el isolate V8 del Worker.

Una excepción notable es eval(). Por motivos de seguridad, Cloudflare Workers no permite de forma nativa la evaluación dinámica de código. Kitesurf utiliza Boa, un motor ECMAScript escrito en Rust, para ejecutar esas llamadas dentro del entorno Worker. Es pragmático, pero crea un límite de compatibilidad complejo. Parte del código se ejecuta directamente en V8, mientras que el código generado dinámicamente pasa por un segundo motor JavaScript con un comportamiento potencialmente distinto.

El PageRenderer Worker genera los píxeles de capturas y PDF. Recibe una descripción de escena, la rasteriza y devuelve el resultado. El renderer no conserva un estado sustancial de la página. Si se bloquea o falla, el Engine puede descartarlo y reiniciar el trabajo de renderizado.

Solo un componente puede acceder a la red

Desde el punto de vista de la seguridad, el SandboxOutbound Worker es especialmente interesante. Solo este componente puede descargar recursos de Internet. Aplica las reglas CORS, gestiona cookies por separado para cada página, filtra respuestas y añade cabeceras similares a las de un navegador. PageScript y Engine no reciben simplemente acceso libre a la red.

Es una diferencia sensata frente a muchos montajes caseros de agentes. Un agente de navegador no solo abre páginas en las que una persona ya confía. Sigue enlaces procedentes de resultados de búsqueda, documentos ajenos o incluso prompts manipulados. Cada visita es entrada no confiable. El límite de red no es, por tanto, una optimización, sino parte del modelo de seguridad.

Kitesurf también utiliza componentes sin estado siempre que es posible. Lo que no conserva estado puede terminarse y reiniciarse tras un fallo. Para cargas de agentes breves y muy variables, este modelo encaja bien con la plataforma Workers.

Cloudflare informa de más de 215.000 Web Platform Tests superados y de una buena cobertura de DOM, HTML, CSS, SVG, Selection y XHR. La cifra impresiona, pero no define por sí sola la madurez. WPT consta de archivos con muchos subtests, y Cloudflare no publica ni una tasa total de éxito ni el código y la configuración exacta de Kitesurf. Por ello, la cifra no puede compararse limpiamente con el runner WPT público de Obscura ni con la compatibilidad de Chromium. Cuando se presentó, Kitesurf solo tenía doce semanas y continúa en beta.

Más eficiente, pero no más rápido

Las mediciones de Cloudflare muestran el verdadero atractivo económico. Sobre un corpus de 14 URL y cinco ejecuciones, según Cloudflare, Kitesurf necesitó para capturas 3,1 veces menos CPU y 4,7 veces menos memoria que un pool de Chromium caliente. Para extraer HTML, necesitó 3,8 veces menos CPU y 7 veces menos memoria.

Al mismo tiempo, la latencia fue peor. Las capturas tardaron una mediana de 1,8 veces más, y la extracción de HTML, 1,7 veces más. Kitesurf ahorra sobre todo infraestructura por trabajo. No gana automáticamente la carrera por procesar una página individual más rápido.

Estas cifras son útiles, pero no son benchmarks independientes. Cloudflare eligió el corpus, el entorno y la comparación. Además, un pool de Chromium caliente es solo uno de varios modos operativos posibles. La medición demuestra potencial arquitectónico, no que Kitesurf sea más barato o fiable para cualquier carga real de agentes.

Obscura: el navegador Rust independiente

Obscura persigue la misma idea básica como proyecto de código abierto que puede ejecutarse localmente o autogestionarse. El código usa la licencia Apache 2.0. La versión 0.2.1 se publicó el 23 de agosto de 2026 y consta de varios crates de Rust para CLI, CDP, lógica del navegador, JavaScript, DOM, red, MCP y renderizado.

V8, DOM propio y renderizado por CPU

Obscura integra V8 mediante deno_core. Las API del navegador se ofrecen a través de una gran capa bootstrap en JavaScript y operaciones Rust. El DOM es una implementación propia. Para layout y renderizado, el proyecto utiliza, entre otras cosas, Taffy, lógica propia del navegador y una ruta de pintura basada en CPU.

Obscura también habla CDP y dispone de un servidor MCP. Un agente puede abrir páginas, obtener snapshots del DOM, hacer clic, completar formularios, ejecutar JavaScript, crear capturas o generar PDF. La ventaja práctica es el control: el motor puede ejecutarse localmente, en un contenedor o en infraestructura propia. No requiere técnicamente una cuenta de Cloudflare.

El precio es tener que operarlo. Según la documentación de arquitectura, las páginas de un proceso comparten un isolate V8 y el trabajo JavaScript se serializa mediante un bloqueo global. Watchdogs y deadlines estrictos deben impedir que una página bloquee permanentemente el proceso. Aun así, el documento de seguridad formula correctamente el límite: estas protecciones no sustituyen el aislamiento a nivel del sistema operativo. Quien procese páginas hostiles a gran escala debe ejecutar Obscura en contenedores o máquinas virtuales con red restringida.

No es una advertencia menor. Rust no protege contra todas las vulnerabilidades de V8, las dependencias nativas o los límites FFI. Un proceso que ejecuta JavaScript arbitrario de Internet sigue siendo un servicio de alto riesgo.

El modo stealth es más que un User-Agent

La diferencia más interesante de Obscura es su build stealth opcional. Sustituye el transporte normal reqwest por wreq con BoringSSL y emula un handshake TLS similar al de Chrome. Esto incluye ClientHello, ALPN y el orden de cipher suites. Es relevante porque los sistemas antibot no solo revisan el User-Agent visible. Comparan si las cabeceras HTTP, la huella TLS y las propiedades JavaScript cuentan la misma historia de navegador.

En JavaScript, Obscura intenta mantener esa historia coherente. El código simula, entre otras superficies, navigator.userAgentData, valores de plataforma, pantalla, GPU, Canvas, audio y batería. navigator.webdriver permanece invisible. Las propiedades internas de Obscura se ocultan de la enumeración, y las funciones nativas deben parecer funciones reales del navegador en Function.prototype.toString().

event.isTrusted también se trata de forma diferenciada. Un evento creado por el código de la página mediante new Event() sigue siendo untrusted. Las entradas procedentes de CDP pueden marcarse como eventos generados por el navegador. Devolver siempre true sería fácil de detectar y además representaría incorrectamente el comportamiento web normal.

La ruta stealth abarca navegaciones, subrecursos, fetch() y XHR. Es decisivo. Si solo el documento principal usa una huella TLS tipo Chrome, pero una solicitud posterior de API parece de repente una biblioteca Rust, aparece exactamente la contradicción que buscan los sistemas antibot.

Obscura también bloquea endpoints conocidos de tracking y fingerprinting. Las características del navegador pueden variarse por sesión. Sin embargo, la documentación advierte sobre combinaciones incoherentes. Región IP, zona horaria, geolocalización, perfil JavaScript y huella TLS deben concordar. La rotación no es una capa de invisibilidad. Una misma IP de salida que cambia constantemente entre identidades de dispositivo puede resultar todavía más sospechosa.

¿Evita Obscura realmente mejor la detección de bots?

En comparación directa con Kitesurf, Obscura está claramente más orientado a la antidetención. Eso es visible en el código y la documentación. Pero no significa que Obscura pueda eludir de forma fiable defensas antibot modernas.

El proyecto delimita su pretensión con bastante claridad. El modo stealth debe superar comprobaciones simples de huella TLS o User-Agent. Según la documentación, no se admiten:

  • desafíos interactivos de Cloudflare
  • desafíos activos de DataDome y Akamai Bot Manager
  • CAPTCHA
  • rate limits basados en IP

Por tanto, la afirmación habitual de que Obscura supera la detección de bots solo es cierta en un sentido limitado. Obscura intenta parecer menos un cliente headless corriente. No es una solución universal para saltarse desafíos.

Los sistemas antibot modernos también evalúan mucho más que la huella del navegador. Observan reputación IP, ASN, frecuencia de solicitudes, navegación, patrones de ratón y teclado, historial de cookies, comportamiento de cuentas y relaciones entre sesiones. Una propiedad navigator perfectamente reproducida sirve de poco si mil solicitudes salen de un centro de datos con el mismo ritmo.

Los benchmarks públicos de Obscura también requieren cautela. El repositorio independiente contiene scripts reproducibles para WPT, una carrera de obstáculos, páginas reales, fiabilidad y consistencia stealth. Es mejor que una simple tabla de marketing. Sin embargo, la suite stealth se ejecuta localmente y comprueba sobre todo si la huella definida por el propio proyecto es internamente coherente. No demuestra que grandes sistemas antibot comerciales acepten el tráfico como humano.

También importa la velocidad de evolución del proyecto. Según las notas de versión, entre Obscura 0.2.0 y 0.2.1 hubo 122 commits en poco más de dos semanas. Eso demuestra desarrollo activo, pero también una superficie todavía muy cambiante. En un motor joven nadie debería deducir madurez de producción a partir de una demo exitosa.

Cloudflare no quiere un bot invisible

Con Kitesurf la situación es fundamentalmente distinta. Cloudflare Browser Run añade a las solicitudes salientes cabeceras no configurables. También incluye firmas Web Bot Auth con las que un servidor de destino puede verificar criptográficamente que una solicitud procede de la infraestructura de navegador de Cloudflare.

La FAQ de Cloudflare es inequívoca: las solicitudes de Browser Run siempre son reconocidas por Cloudflare como tráfico bot. El operador del sitio decide si las permite o bloquea. Quien quiera probar de forma automatizada su propia zona puede autorizar ese tráfico mediante una regla WAF.

Kitesurf funciona como opción dentro de Browser Run. Por ello sería incorrecto describir la falta de camuflaje solo como retraso técnico. La identidad bot transparente forma parte del modelo de producto. Cloudflare opera a la vez la plataforma de automatización del navegador y los productos de seguridad con los que los sitios detectan y controlan bots. Un navegador propio que eludiera deliberadamente esos controles dañaría directamente dicho modelo.

Cloudflare también reconoce que Kitesurf todavía no puede negociar el handshake de desafíos antibot con huellas TLS reales. Para esas páginas recomienda seguir usando el Chromium estándar de Browser Run. Pero incluso ese tráfico Chromium sigue siendo identificable como automatización por las cabeceras y firmas de Cloudflare.

Esta decisión puede considerarse positiva. Los operadores reciben una identidad verificable en vez de un User-Agent fácilmente falsificable. Los bots legítimos pueden permitirse, medirse o limitarse de manera diferenciada. El abuso puede atribuirse a un proveedor y a una infraestructura.

Sin embargo, también admite críticas. Un agente personal que lee una página pública por encargo de un usuario queda técnicamente más cerca de un crawler comercial que del navegador de ese usuario. El operador dispone de un interruptor sencillo para excluir a los agentes de Cloudflare. El usuario no puede recurrir entonces a una sesión normal de apariencia humana, aunque solo quisiera automatizar su propia investigación.

Los bots transparentes protegen a los operadores. Pero también desplazan poder del usuario del agente hacia la plataforma y el sitio visitado.

Por qué Cloudflare construyó algo propio de todos modos

Cloudflare escribe que Obscura proporcionó la inspiración inicial y que primero se portó a Workers con ayuda de un agente de IA. De esa prueba de concepto apenas funcional surgió Kitesurf. Es una atribución clara, no una afirmación encubierta de que la idea nació en su propio laboratorio.

La tesis de que Cloudflare descartó Obscura por su función stealth no aparece ni en el artículo de Kitesurf ni en la documentación de Browser Run. Hay varios motivos más visibles.

Obscura está construido como proceso autogestionado. Kitesurf está diseñado como aplicación Worker distribuida. Cloudflare quiere utilizar isolates, Service Bindings, Worker-RPC, su SandboxOutbound propio y las API existentes de Browser Run. Para ello no basta con ejecutar en algún lugar un binario Rust.

Cloudflare también necesita un motor cuyo ciclo de vida, consumo de recursos, telemetría y comportamiento ante errores encajen con su plataforma. Un renderer sin estado que se descarta tras un RPC defectuoso tiene una arquitectura operativa distinta de un proceso con isolate V8 compartido y bloqueo global.

Por último, Kitesurf es un componente de producto. CDP hace que el cliente sea relativamente portable, pero el servicio sigue estrechamente ligado a Browser Run y Cloudflare Workers. Cloudflare promete publicar Kitesurf como código abierto más adelante y permitir que los clientes lo desplieguen en su propia cuenta de Cloudflare. Hoy el código aún no es público. En Obscura se pueden examinar ahora mismo la arquitectura, los límites de seguridad y la implementación. En Kitesurf solo se pueden evaluar el diseño publicado, la documentación y el comportamiento observable.

Aquí la crítica sí está justificada. Cloudflare se beneficia de una idea abierta y de un proyecto existente mientras su desarrollo permanece inicialmente cerrado. Apache 2.0 lo permite y Cloudflare menciona expresamente a Obscura. Jurídicamente es correcto. Pero para una empresa que anuncia una próxima apertura, al final cuenta el código publicado, no la palabra «soon».

Dos navegadores, dos modelos de control

Las diferencias principales no pueden reducirse a la velocidad.

ÁreaKitesurfObscura
OperaciónCloudflare Browser Run y Workerslocal o autogestionado
Códigopublicación anunciada, actualmente cerradoApache 2.0, código fuente público
Runtimevarios componentes Worker aisladosproceso Rust con V8, DOM, red y renderizado
InterfacesCDP, API de Browser Run, MCP mediante cliente CDPCDP, CLI, API Rust y servidor MCP propio
Identidad botdeliberadamente identificable y firmada criptográficamentemodo stealth opcional para comprobaciones antibot simples
Desafíos complejosactualmente no con Kitesurfsegún su documentación, tampoco admitidos
Aislamientoisolates de Workers y componente de red separadowatchdogs y protección SSRF; el aislamiento del SO queda en manos del operador
Escaladopara cargas edge breves y muy variableshosts, contenedores y procesos Worker propios
Control de datosprocesamiento en infraestructura de Cloudflarecontrol total con un self-hosting correcto

Kitesurf no es simplemente un Obscura mejor. Resuelve otro problema operativo. Cloudflare quiere ejecutar de forma segura y económica muchas tareas de navegador breves en su propia plataforma. Obscura quiere ofrecer un motor independiente que los operadores controlen y, si es necesario, puedan hacer menos detectable.

La cuestión de seguridad pendiente está por encima del navegador

Ambos proyectos invierten mucho en aislar sitios web. Es necesario, pero no resuelve el riesgo más importante de un navegador de IA: un sitio puede manipular al propio agente.

Un texto de prompt injection en el DOM no necesita provocar un escape de la sandbox V8. Basta con que el modelo lo interprete como una instrucción, revele datos internos, abra un enlace equivocado o utilice una herramienta potente. El aislamiento de red protege la infraestructura del navegador. No protege automáticamente la intención del usuario.

Por tanto, un navegador de agentes apto para producción necesita controles adicionales:

  • contextos de navegador separados para tareas no relacionadas
  • secretos mínimos y tokens de corta duración por sesión
  • autorizaciones claras antes de iniciar sesión, comprar, subir archivos o modificar datos
  • reglas de dominio y egress fuera del JavaScript de la página
  • registros que vinculen la decisión del modelo, la acción del navegador y el resultado
  • una vía de interrupción segura ante navegaciones o descargas inesperadas
  • protección para impedir que el contenido de la página se convierta en instrucciones del sistema

Cloudflare menciona Prompt Injection y Tool Safety como prioridades, pero en el artículo de Kitesurf describe sobre todo el aislamiento del navegador. Obscura proporciona herramientas de navegador, pero no asume la autorización del agente superior. Quien utilice cualquiera de los proyectos debe cerrar esta brecha por su cuenta.

¿Qué modelo conviene para cada uso?

Para capturas, extracción de HTML o documentos de páginas propias y autorizadas, Kitesurf resulta interesante. La arquitectura Worker reduce el trabajo operativo, y la identidad bot transparente no supone un obstáculo en el entorno propio. Los operadores pueden autorizar Browser Run de forma específica y obtienen un origen trazable.

Para investigación local, automatizaciones internas o entornos con exigencias estrictas de control de datos, Obscura es más atractivo. Pero el motor debe ejecutarse entonces dentro de un runtime bien delimitado. Un contenedor o una VM, egress restrictivo, credenciales separadas y --obey-robots activado no deberían ser extras añadidos después.

Para sesiones autenticadas largas, contenido multimedia, WebGL o páginas con defensas antibot complejas, un navegador Chromium real suele ser la opción más realista. Cloudflare también lo admite abiertamente para Kitesurf. Un navegador más pequeño no es automáticamente más compatible.

Las funciones stealth solo deben usarse en pruebas legítimas y autorizadas o en automatizaciones orientadas a la privacidad. Que una página sea técnicamente accesible no resuelve la cuestión legal ni la obligación de respetar sus reglas, rate limits y recursos.

Mi conclusión

Obscura demostró claramente a Cloudflare que un navegador agéntico no tiene por qué ser Chromium. Kitesurf toma esa idea básica y la convierte en una arquitectura nativa de Workers con aislamiento convincente, menor consumo de recursos e integración directa con Browser Run.

Obscura es realmente más ofensivo en cuanto a detección de bots. Su modo stealth modela las superficies TLS, HTTP y JavaScript de forma mucho más dirigida que Kitesurf. Aun así, decir que es «mejor para eludir» es excesivo. Lo demostrado es un mejor camuflaje frente a comprobaciones de huella simples. El propio proyecto niega que evite desafíos interactivos modernos.

En Cloudflare, esa moderación no es solo inmadurez técnica. Browser Run debe ser reconocible como bot. Las cabeceras no eliminables y Web Bot Auth convierten esa transparencia en una función del producto. Encaja con una empresa que también vende Bot Management. Pero impide que Kitesurf sea un navegador independiente que actúe por encargo del usuario.

La crítica más sólida no es, por tanto, que Cloudflare copiara simplemente Obscura. Las arquitecturas y modelos operativos son demasiado diferentes, y Cloudflare reconoce abiertamente la inspiración.

La crítica más fuerte es esta: Cloudflare construye un navegador de IA cuya identidad, runtime, distribución y acceso encajan por completo en el modelo de control de Cloudflare. Para los operadores puede ser muy razonable. Pero para una web abierta y centrada en el usuario solo es una respuesta posible.

Habrá que esperar para saber si Kitesurf realmente se abre, cuán completo será el código publicado y si el navegador podrá operar de forma útil fuera de la plataforma de Cloudflare. Hasta entonces, Obscura es el experimento más abierto y Kitesurf el producto mejor integrado.

Hasta la próxima,
Joe

Fuentes