Invisible Playwright MCP: navegación web con IA que evita captchas

Por David Moya · · 12 min lectura · Artículo técnico

Análisis técnico de Invisible Playwright MCP: servidor MCP en Python con Firefox sigiloso para automatización web, scraping y agentes de IA sin captchas.

Invisible Playwright MCP: navegación web con IA que evita captchas

Introducción: el cuello de botella invisible de los agentes web

Cuando un equipo de IAcademy empieza a construir agentes que navegan por la web, la primera demostración suele ser espectacular. El agente abre una página, extrae datos, rellena un formulario y devuelve un resultado limpio. La segunda demostración, en cambio, se rompe. El sitio detecta el navegador automatizado, aparece un captcha, la sesión se bloquea y el agente devuelve un error que nadie sabe interpretar. Ese es el cuello de botella invisible: la mayoría de los tutoriales de agentes web ignoran que la web moderna está defendida por sistemas anti-bot que distinguen entre un navegador real y uno controlado por software.

Invisible Playwright MCP es un proyecto de código abierto en Python que ataca precisamente ese problema. Se presenta como un servidor MCP (Model Context Protocol) autoalojado que expone un navegador Firefox sigiloso a asistentes como Claude Code, Codex o Gemini CLI, y también como una interfaz web independiente con chat a la izquierda y navegador en vivo a la derecha. Con más de 31 000 estrellas en GitHub, no es un experimento marginal: se ha convertido en una de las referencias de facto para agentes que necesitan navegar sin ser detectados.

En este artículo analizamos qué problema resuelve, cómo está construido, cómo empezar en la práctica, qué casos de uso tienen sentido y en qué se diferencia de alternativas como browser-use, los agentes tipo Operator o los enfoques de computer use. La tesis de IAcademy es clara: la capa de evasión anti-bot deja de ser un truco de scraping y se convierte en infraestructura básica para cualquier agente que opere en la web abierta.

Qué problema resuelve realmente

La web abierta no está diseñada para agentes. Está diseñada para personas con navegadores reales, y los sitios invierten cada vez más en distinguir a unas de otros. Los sistemas anti-bot modernos no solo miran la dirección IP o el user-agent. Analizan huellas del navegador, propiedades de JavaScript, orden de eventos, cadencia de teclado, movimiento del puntero, coherencia de zona horaria e idioma, y decenas de señales más. Un Playwright estándar, por defecto, deja rastros suficientes para ser clasificado como automatizado en cuestión de segundos.

El resultado práctico es una cascada de fallos:

Invisible Playwright MCP aborda esto en tres frentes. Primero, sustituye el navegador por un Firefox parcheado con técnicas anti-detección, empaquetado como binario verificado. Segundo, genera una identidad coherente por semilla: huella, zona horaria, idioma, proxy y geolocalización se derivan de un único número, de modo que la misma semilla produce la misma identidad en cada ejecución. Tercero, expone todo esto a través de MCP, el protocolo que ya usan los asistentes de IA para invocar herramientas externas, de modo que el agente no necesita saber nada de evasión: simplemente pide navegar.

La consecuencia es que el agente deja de fallar en la primera página protegida y puede centrarse en la tarea real: extraer datos, comparar precios, investigar mercados o rellenar formularios.

Arquitectura: cómo está construido por dentro

El proyecto se organiza en tres capas que conviene entender por separado, porque cada una se puede usar de forma independiente.

+-------------------------------------------------------------+
|                     Asistente de IA                         |
|        (Claude Code, Codex, Gemini CLI, UI web)             |
+---------------------------+---------------------------------+
                            |
                            | MCP (JSON-RPC)
                            v
+-------------------------------------------------------------+
|              invisible_playwright_mcp (servidor)            |
|  - Herramientas MCP: navegar, clicar, escribir, leer        |
|  - Gestión de sesión y perfil                               |
|  - Interfaz web opcional (--ui)                             |
+---------------------------+---------------------------------+
                            |
                            | API Playwright
                            v
+-------------------------------------------------------------+
|                invisible_playwright (motor)                 |
|  - Control del navegador Firefox sigiloso                   |
|  - API compatible con Playwright                            |
+---------------------------+---------------------------------+
                            |
                            | Semilla -> identidad
                            v
+-------------------------------------------------------------+
|                  invisible_core (identidad)                 |
|  - Huella del navegador                                     |
|  - Proxy, zona horaria, locale, geolocalización             |
+-------------------------------------------------------------+

La capa inferior, invisible_core, es la que convierte una semilla entera en una identidad de navegador coherente. Si el proxy sale por Lisboa, la zona horaria será europea, el locale será portugués y la geolocalización será compatible. Esa coherencia es precisamente lo que los sistemas anti-bot buscan: inconsistencias entre señales. Un proxy de un país con un locale de otro es una bandera roja inmediata.

La capa intermedia, invisible_playwright, es el motor. Expone la misma API que Playwright, de modo que quien ya sabe usar Playwright puede escribir código sin aprender una biblioteca nueva. La diferencia es que por debajo no hay un Chromium estándar, sino un Firefox parcheado que evita las detecciones más comunes.

La capa superior, invisible_playwright_mcp, es la que se instala como servidor MCP. Su trabajo es traducir las peticiones del asistente en acciones del motor y devolver resultados estructurados. Además, incluye una interfaz web opcional que permite usar el agente sin depender de un asistente externo: solo hace falta una clave de OpenRouter.

Un detalle de diseño importante: el binario del navegador está fijado por versión. Si se pasa un binario propio con --binary, el arranque comprueba que coincide con la versión esperada y se niega a continuar si no. Esto evita el escenario clásico en el que alguien actualiza el navegador y rompe silenciosamente las defensas anti-detección.

Cómo empezar: instalación y primeros pasos

La instalación está pensada para ser reproducible en Windows, Linux y macOS. El proyecto usa uv, el gestor de paquetes de Python de Astral, que simplifica la instalación de dependencias y la ejecución de binarios.

Instalación de uv

En Windows, dentro de PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"

En Linux o macOS:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env

Uso como servidor MCP

Una vez instalado uv, se puede registrar el servidor en el asistente preferido. Para Claude Code:

claude plugin marketplace add feder-cr/invisible_playwright_mcp
claude plugin install invisible-playwright-mcp@feder-cr

Para Codex:

codex plugin marketplace add feder-cr/invisible_playwright_mcp
codex plugin add invisible-playwright-mcp@feder-cr

Para Gemini CLI:

gemini extensions install https://github.com/feder-cr/invisible_playwright_mcp

A partir de ese momento, el asistente dispone de herramientas para navegar, hacer clic, escribir y leer el contenido de la página. La conversación típica deja de ser «escríbeme un script de scraping» y pasa a ser «ve a esta URL y dime qué ves».

Uso independiente con interfaz web

Si no se quiere depender de un asistente externo, el proyecto ofrece una interfaz web propia. Solo hace falta una clave de OpenRouter:

uvx invisible-playwright-mcp ui --openrouter-key sk-or-...

Después se abre http://127.0.0.1:8765 y se escribe la instrucción en el chat. A la derecha se ve el navegador en vivo, lo que resulta muy útil para depurar por qué el agente hace lo que hace.

Opciones de configuración relevantes

El servidor acepta varias opciones que conviene conocer:

También se puede usar un archivo .env en el directorio desde el que se ejecuta el comando:

OPENROUTER_API_KEY=sk-or-...
STEALTHFOX_BINARY=/ruta/a/firefox

La precedencia es --flag > variable de entorno > .env > valor por defecto. El archivo .env solo se lee en el directorio actual, sin búsqueda ascendente, lo que evita que una subcarpeta cargue una clave distinta sin querer. Además, la línea de arranque indica qué variables se aplicaron pero nunca imprime sus valores.

Un consejo de seguridad: pasar la clave con --openrouter-key la deja en el historial del shell y, en Linux, en la lista de procesos. Usar OPENROUTER_API_KEY en el entorno o en un .env evita ambos problemas.

Casos de uso prácticos

La utilidad de un agente web con evasión anti-bot se entiende mejor con ejemplos concretos. Estos son los que aparecen con más frecuencia en equipos que ya usan este tipo de herramientas.

Investigación de mercado y comparación de precios

Un agente puede recorrer varias aerolíneas, comparar tarifas para un rango de fechas y devolver la más barata por día. El README incluye un ejemplo muy ilustrativo: pedirle que compruebe cada fecha del 12 al 16 del mes siguiente, una a una, leyendo la tarifa más barata. El detalle importante es que el campo de fecha es un widget de calendario, así que el agente debe hacer clic en los días en lugar de escribirlos. Esto es exactamente el tipo de tarea donde un agente con navegador real supera a una API: la API no existe o está cerrada, pero la web sí está disponible para una persona.

Generación de leads y búsqueda de empleo

Los temas del repositorio incluyen lead-generation y job-hunting. Tiene sentido: son dominios donde la información está en portales protegidos, con formularios, paginación y sesiones. Un agente que mantiene el perfil entre ejecuciones puede iniciar sesión una vez y reutilizar la sesión, en lugar de autenticarse en cada paso.

Automatización de tareas repetitivas con juicio humano

La diferencia entre un script de scraping y un agente es que el agente puede decidir. Si la página cambia, si aparece un aviso legal, si el botón está en otro sitio, el agente lo interpreta. Eso lo hace adecuado para tareas que antes requerían una persona: revisar un portal de licitaciones, comprobar disponibilidad de stock, verificar el estado de un pedido en un proveedor.

Investigación web para asistentes de código

Cuando se usa Claude Code o Gemini CLI, el agente puede necesitar consultar documentación, foros o repositorios que bloquean peticiones automatizadas. Tener un navegador sigiloso como herramienta MCP amplía lo que el asistente puede hacer sin salir de la conversación.

Verificación de contenido publicado

Un caso menos obvio pero muy útil: comprobar que una campaña, una landing o un anuncio se ve correctamente desde distintas geolocalizaciones. Combinando proxy y semilla se puede simular una identidad coherente por región y verificar qué ve realmente un usuario en cada mercado.

Comparativa con alternativas

El ecosistema de agentes web ha crecido mucho en poco tiempo. Estas son las alternativas más relevantes y en qué se diferencian.

HerramientaEnfoqueVentaja principalLimitación
Invisible Playwright MCPServidor MCP autoalojado con Firefox sigilosoEvasión anti-bot integrada y control total localRequiere gestionar el binario y la identidad
browser-useBiblioteca de agentes sobre PlaywrightEcosistema amplio y ejemplos abundantesDetección más fácil con navegadores estándar
Agentes tipo OperatorServicio gestionado en la nubeCero instalaciónMenos control, dependencia del proveedor
Computer useControl de escritorio completoFunciona con cualquier aplicaciónMás lento y frágil para tareas web
Scraping con requestsPeticiones HTTP directasRápido y baratoNo ejecuta JavaScript ni interactúa

La diferencia clave de Invisible Playwright MCP es que combina tres cosas que rara vez aparecen juntas: evasión anti-bot real, integración con MCP y autoalojamiento. La mayoría de alternativas o renuncian a la evasión, o renuncian al control local, o renuncian a la integración con asistentes.

Frente a browser-use, la comparación es interesante porque comparten filosofía. browser-use es más una biblioteca para construir agentes; Invisible Playwright MCP es más una infraestructura para conectar agentes existentes a un navegador sigiloso. No son excluyentes: se podría usar browser-use como capa de razonamiento y el motor de Invisible Playwright como capa de navegación.

Frente a los agentes gestionados tipo Operator, la diferencia es de control. Un servicio en la nube es cómodo, pero no permite elegir proxy, semilla, perfil ni binario. Para equipos con requisitos de cumplimiento o de reproducibilidad, el autoalojamiento es determinante.

Buenas prácticas y consideraciones éticas

El propio proyecto incluye una sección de uso responsable que conviene tomar en serio. Automatizar un navegador bajo tu control no exime de leer los términos del sitio, respetar los límites de tasa y no enviar nada que un humano no haya revisado.

Desde IAcademy añadimos algunas recomendaciones prácticas:

Preguntas frecuentes

¿Qué es exactamente MCP y por qué importa aquí?

MCP, o Model Context Protocol, es un protocolo abierto que permite a los asistentes de IA invocar herramientas externas de forma estandarizada. Importa porque desacopla el agente del navegador: el mismo servidor funciona con Claude Code, Codex, Gemini CLI o cualquier cliente compatible. En lugar de escribir integraciones específicas para cada asistente, se escribe una vez y se reutiliza.

¿Necesito una clave de OpenRouter para usarlo?

Solo si se usa la interfaz web independiente. Cuando se usa como servidor MCP dentro de un asistente, el modelo lo pone el propio asistente y no hace falta clave de OpenRouter. La clave solo es necesaria para el modo ui, donde el proyecto aporta la interfaz y el usuario aporta el modelo.

¿Es legal usar un navegador sigiloso para automatizar la web?

La legalidad depende de la jurisdicción, del sitio y del uso concreto. La evasión de detección no es ilegal por sí misma, pero puede violar los términos de servicio de un sitio o normas sobre acceso no autorizado. La recomendación es consultar con asesoría legal cuando el uso sea comercial y revisar siempre los términos del sitio.

¿En qué se diferencia de usar Playwright directamente?

Playwright es una biblioteca de automatización excelente, pero no está diseñada para evadir detección. Invisible Playwright MCP usa la misma API, así que la curva de aprendizaje es mínima, pero por debajo ejecuta un Firefox parcheado y genera una identidad coherente a partir de una semilla. La diferencia práctica es que las páginas protegidas dejan de bloquear al agente.

¿Puedo usarlo en producción con varios agentes a la vez?

Sí, pero conviene planificarlo. Cada instancia mantiene su propio perfil y su propia identidad, así que se pueden levantar varios procesos con semillas y perfiles distintos. Hay que vigilar el consumo de recursos, porque cada navegador es un proceso completo, y gestionar los proxies de forma que no se solapen identidades.

Conclusión

Invisible Playwright MCP no es solo una herramienta de scraping. Es una pieza de infraestructura para agentes que operan en la web abierta, y su éxito en GitHub refleja una necesidad real: los agentes de IA necesitan navegadores que no sean detectados como robots. La combinación de MCP, Firefox sigiloso y autoalojamiento lo convierte en una opción muy sólida para equipos que quieren control, reproducibilidad y compatibilidad con los asistentes que ya usan.

En IAcademy recomendamos probarlo primero en un caso de uso acotado, con una semilla fija y un proxy coherente, y medir cuántos bloqueos desaparecen. La experiencia suele ser reveladora: muchas veces el problema no era el agente, sino el navegador.

Founding Members: todo por 99 EUR

604 módulos, 23 especializaciones, acceso sin caducidad al contenido adquirido. Precio normal: 199 EUR. Garantía 30 días.

Ser Founding Member Ver todos los planes