
Aloísio Vítor
Image Processing Expert

Cuando tu agente de IA navega por la web por ti, CAPTCHAs son el principal obstáculo. Las páginas protegidas bloquean al agente, los formularios se niegan a enviar y las tareas se detienen esperando intervención humana.
Hermes Agent de Nous Research es un agente de IA que se mejora a sí mismo y que funciona en cualquier lugar: desde un VPS de $5 hasta un clúster de GPU, y alcanza a través de cada canal que ya usas: Telegram, Discord, Slack, WhatsApp, Signal y correo electrónico. También puede manejar un navegador para navegar páginas, hacer clic en botones, completar formularios y extraer datos en tu nombre. Pero como cualquier agente que maneja un navegador, se queda atascado en los CAPTCHAs.
CapSolver lo cambia por completo. Al cargar la extensión de CapSolver en el navegador al que se conecta Hermes, los CAPTCHAs se resuelven automáticamente e invisiblemente en segundo plano. Sin código. Sin llamadas a API desde tu lado. Sin ejercicios de ingeniería de prompts.
Lo mejor de todo es que ni siquiera necesitas mencionar CAPTCHAs al agente. Solo le dices que espere un momento antes de enviar y, cuando haga clic en Enviar, el CAPTCHA ya estará resuelto.
Hermes Agent es un agente de IA autónomo de código abierto creado por Nous Research. Está diseñado alrededor de tres principios: memoria persistente (recuerda quién eres y tus proyectos entre sesiones), creación de habilidades autónoma (aprende procedimientos a partir de la experiencia y los repite la próxima vez) y flexibilidad de infraestructura (puedes ejecutarlo en un VPS pequeño, un contenedor Docker, un entorno sin servidor o en tu propia GPU).

hermes modelHermes puede controlar un navegador Chromium para realizar trabajo real: navegar, leer DOM, hacer clic, escribir, capturar pantallazos, extraer datos. Su capa de herramienta de navegador es inusual en un aspecto específico: en lugar de obligarte a un único backend, Hermes admite cinco proveedores de navegador intercambiables:
| Proveedor | Tipo | Extensiones? |
|---|---|---|
| Browserbase | Nube | ✗ |
| Browser Use | Nube | ✗ |
| Firecrawl | Nube | ✗ |
| Camoufox | Local (Firefox stealth) | ✗ |
| CDP attach | Local (cualquier Chromium) | ✓ |
Los proveedores en la nube no pueden cargar extensiones — no controlas el navegador remoto. Camoufox se basa en Firefox y no ejecutará una extensión Chrome MV3. El punto de integración limpio es el quinto: CDP attach, donde Hermes se conecta a un Chromium tú lanzaste por separado. Ese es el lugar donde entra CapSolver.
Este es un modelo diferente a herramientas como OpenClaw (que lanza su propio Chromium y acepta una matriz browser.extensions) o Crawlee (donde controlas las banderas de lanzamiento de Playwright). Con Hermes, traes tu propio Chrome con la extensión precargada, y Hermes se conecta a él a través del protocolo DevTools.
CapSolver es un servicio líder de resolución de CAPTCHA que proporciona soluciones impulsadas por IA para evitar desafíos modernos de CAPTCHA. Con soporte para cada tipo de CAPTCHA importante y tiempos de respuesta rápidos, CapSolver se integra sin problemas en flujos de trabajo automatizados — ya sea que estés manejando un navegador mediante Playwright, llamando directamente a su API o, como en esta guía, ejecutando su extensión de Chrome dentro de una sesión del navegador del agente.
La mayoría de las integraciones de resolución de CAPTCHA requieren que escribas código — crear llamadas a API, consultar resultados, inyectar tokens en campos ocultos. Así funciona con herramientas como Crawlee, Puppeteer o Playwright.
Hermes + CapSolver es fundamentalmente diferente:
| Tradicional (basado en código) | Hermes (lenguaje natural) |
|---|---|
Escribir una clase CapSolverService |
Lanzar Chrome una vez con --load-extension=... |
Llamar a createTask() / getTaskResult() |
Solo hablar con tu agente |
Inyectar tokens mediante page.$eval() |
La extensión se encarga de todo |
| Manejar errores, reintentos, tiempos de espera en código | Decirle al agente que "espere 60 segundos y luego envíe" |
| Código diferente para cada tipo de CAPTCHA | Funciona para cada tipo automáticamente |
La clave del insight: La extensión de CapSolver se ejecuta dentro del navegador conectado. Hermes se conecta a ese navegador a través de CDP y lo maneja normalmente. Cuando el agente navega a una página con un CAPTCHA, la extensión — ejecutándose en el mismo Chrome, completamente invisible para el agente — detecta el widget, llama a la API de CapSolver e inyecta el token de solución en la página. Para cuando el agente haga clic en Enviar, el formulario ya lleva un token válido.
Solo necesitas darle tiempo. En lugar de decirle al agente que "resuelva el CAPTCHA", simplemente dices:
"Ve a esa página, espera 60 segundos, luego haz clic en Enviar."
Eso es todo. El agente no necesita saber que CapSolver existe.
Antes de configurar la integración, asegúrate de tener:
Google Chrome 137+ (lanzado a mediados de 2025) eliminó silenciosamente el soporte para
--load-extensionen las versiones etiquetadas. Esto significa que las extensiones de Chrome no se pueden cargar en sesiones automatizadas usando Google Chrome estándar. No hay error — la bandera simplemente se ignora.
Esto afecta a Google Chrome y Microsoft Edge. Debes usar uno de estos alternativos:
| Navegador | Carga de extensiones | Recomendado? |
|---|---|---|
| Google Chrome 137+ | No compatible | No |
| Microsoft Edge | No compatible | No |
| Chrome para pruebas | Compatible | Sí |
| Chromium (estándar) | Compatible | Sí |
| Chromium empaquetado por Playwright | Compatible | Sí |
Cómo instalar Chrome para pruebas:
# Opción 1: A través de Playwright (recomendado — Hermes ya usa Playwright internamente)
npx playwright install chromium
# La ubicación del binario será algo como:
# ~/.cache/ms-playwright/chromium-XXXX/chrome-linux64/chrome (Linux)
# ~/Library/Caches/ms-playwright/chromium-XXXX/chrome-mac/Chromium.app/Contents/MacOS/Chromium (macOS)
# Opción 2: A través de descarga directa de Chrome para pruebas
# Visita: https://googlechromelabs.github.io/chrome-for-testing/
# Descarga la versión que coincida con tu sistema operativo
Después de la instalación, anota la ruta completa al binario — la necesitarás en el siguiente paso.
La integración tiene dos piezas trabajando juntas:
9222).config.yaml de Hermes para indicarle que se conecte a ese puerto CDP en lugar de iniciar su propio navegador.Eso es todo — sin código, sin parchear Hermes.
Descarga la extensión de Chrome de CapSolver y cópiala a una ubicación estable:
CapSolver.Browser.Extension-chrome-vX.X.X.zipmkdir -p ~/.hermes/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d ~/.hermes/capsolver-extension/
ls ~/.hermes/capsolver-extension/manifest.json
Deberías ver manifest.json — esto confirma que la extensión está en el lugar correcto.
Consejo sobre rutas: Usa una ruta absoluta y resuelta (no
~) cuando pases--load-extension=...a Chrome. Algunas versiones de Chrome MV3 tienen casos límite donde los trabajadores de extensión no se registran a través de enlaces simbólicos en directorios de usuario personalizados. Si enlazas simbólicamente la extensión desde otra ubicación, usareadlink -fpara resolver la ruta real y úsala.
Abre el archivo de configuración de la extensión en ~/.hermes/capsolver-extension/assets/config.js y reemplaza el valor de apiKey con el tuyo:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← aquí tu clave
useCapsolver: true,
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
// ... resto de la configuración
};
Puedes obtener tu clave de API desde tu panel de CapSolver.
Este es el paso clave. Lanzamos Chrome una vez, separadamente de Hermes, con tres banderas cruciales:
--remote-debugging-port=9222 — expone el protocolo DevTools para que Hermes se conecte--load-extension=... — carga previamente la extensión de CapSolver--user-data-dir=... — usa un perfil dedicado para no colisionar con tu Chrome personalHermes tiene una convención integrada para el directorio de datos de usuario: ~/.hermes/chrome-debug. Usar esa ruta significa que el comando /browser connect de Hermes también "funciona automáticamente" sin banderas adicionales.
/ruta/a/chrome-para-pruebas/chrome \
--remote-debugging-port=9222 \
--remote-debugging-address=127.0.0.1 \
--user-data-dir="$HOME/.hermes/chrome-debug" \
--load-extension="$HOME/.hermes/capsolver-extension" \
--disable-extensions-except="$HOME/.hermes/capsolver-extension" \
--no-first-run \
--no-default-browser-check \
--no-sandbox
Reemplaza /ruta/a/chrome-para-pruebas/chrome con tu binario real, por ejemplo ~/.cache/ms-playwright/chromium-1200/chrome-linux64/chrome.
Servidores en modo sin cabeza: Si estás ejecutando esto en un servidor Linux sin una pantalla física (un VPS, EC2, etc.), consulta la sección Mejores prácticas a continuación para la configuración de
Xvfb. El subsistema de extensiones de Chrome requiere un contexto de pantalla.
Para cualquier configuración que dure más que una sola prueba, envuelve el lanzamiento en un pequeño script de shell para que puedas mantener Chrome en segundo plano, reiniciarlo limpiamente y supervisarlo con cualquier gestor de procesos que ya uses (systemd, supervisor, runit, OpenRC, Docker, etc.).
Guárdalo como ~/.hermes/chrome-debug.sh y hazlo ejecutable:
#!/usr/bin/env bash
# ~/.hermes/chrome-debug.sh
# Lanza Chrome para pruebas con la extensión de CapSolver precargada
# y CDP expuesto en 127.0.0.1:9222.
CHROME_BIN="$HOME/.cache/ms-playwright/chromium-1200/chrome-linux64/chrome"
EXT_DIR="$HOME/.hermes/capsolver-extension"
USER_DATA_DIR="$HOME/.hermes/chrome-debug"
export DISPLAY=:99 # para servidores sin cabeza — ver Mejores prácticas
exec "$CHROME_BIN" \
--remote-debugging-port=9222 \
--remote-debugging-address=127.0.0.1 \
--user-data-dir="$USER_DATA_DIR" \
--load-extension="$EXT_DIR" \
--disable-extensions-except="$EXT_DIR" \
--no-first-run \
--no-default-browser-check \
--no-sandbox \
--disable-dev-shm-usage \
--disable-features=Translate
El lanzamiento más sencillo es simplemente:
nohup ~/.hermes/chrome-debug.sh > /tmp/chrome-debug.log 2>&1 &
Para producción, supervisa el script con el gestor de procesos que prefieras. Un unidad systemd mínima en ~/.config/systemd/user/chrome-debug.service:
[Unit]
Descripción=Chrome equipado con CapSolver para Hermes Agent
After=network.target
[Service]
ExecStart=%h/.hermes/chrome-debug.sh
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
Luego:
systemctl --user daemon-reload
systemctl --user enable --now chrome-debug
Cualquier configuración equivalente (programa de supervisord, servicio de runit, contenedor Docker, etc.) funciona de forma idéntica — la integración solo se preocupa de que algo mantenga chrome-debug.sh en ejecución.
Edita tu configuración de Hermes en ~/.hermes/config.yaml. Encuentra la sección browser: (normalmente solo tiene inactivity_timeout) y agrega un cdp_url:
browser:
inactivity_timeout: 120
cdp_url: http://127.0.0.1:9222
Esta única línea le dice a la herramienta browser_cdp de Hermes que rutee todas las operaciones del navegador a través del navegador Chromium que lanzamos en el Paso 3, en lugar de iniciar su propio.
Reversibilidad: Esta es la única modificación a Hermes. Para revertir, elimina la línea
cdp_url. Hermes regresa a cualquier proveedor de navegador predeterminado que estuviera usando (Browserbase, Browser Use, etc.) sin otros efectos secundarios.
Si Hermes ya está en ejecución, reinícalo para que tome la nueva cdp_url:
# Ejecutando directamente (en primer plano o bajo tu supervisor):
hermes gateway run
# O reinicia mediante cualquier gestor de procesos que supervises a Hermes —
# la única exigencia es que la nueva env/config tome efecto.
Hermes incluye un comando de diagnóstico integrado que comprueba cada parte de la integración en un solo golpe:
hermes doctor
Buscas estas señales:
◆ Disponibilidad de herramientas
✓ browser-cdp ← CDP attach está activo
✓ browser
...
◆ Conectividad de API
Comprobando API de OpenRouter... ✓ API de OpenRouter
Si browser-cdp aparece bajo Disponibilidad de herramientas, Hermes ha detectado tu punto de conexión CDP y la integración está correctamente configurada. Si falta, Hermes deshabilita silenciosamente la herramienta (sin error) — esa es la señal que debes vigilar.
También puedes confirmar que Chrome es alcanzable directamente:
curl -s http://127.0.0.1:9222/json/version
Una respuesta como la siguiente confirma que CDP está activo:
{
"Browser": "Chrome/<su versión>",
"Protocol-Version": "1.3",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/..."
}
Acerca de la visibilidad del servicio de trabajo de CapSolver: Los trabajadores de servicio de Chrome MV3 se inactivan de forma agresiva, y en las últimas versiones de Chrome,
/json/listpuede omitirlos por completo incluso mientras están en ejecución. La ausencia en/json/listno es diagnóstica: confirma que CapSolver funciona cargando una página real de reCAPTCHA a través del agente y observando el resultado del widget en la página, no mediante la consulta de la lista de objetivos.
Esta es la sección más importante. Una vez que la configuración esté completa, usar CapSolver con Hermes es muy sencillo.
No menciones CAPTCHAs o CapSolver al agente. Solo déjale tiempo antes de enviar los formularios.
El agente no necesita saber sobre CAPTCHAs. La extensión maneja todo en segundo plano. Todo lo que necesitas hacer es incluir un tiempo de espera en tus instrucciones para que la extensión tenga tiempo de resolver el desafío antes de que se envíe el formulario.
El modo de un solo uso de Hermes (hermes -z "...") es ideal para probar la integración. Ejecútalo desde cualquier terminal donde esté disponible la CLI de hermes:
hermes -z 'Abre https://www.google.com/recaptcha/api2/demo. Espera 60 segundos para que la página se cargue completamente. Luego haz clic en el botón etiquetado como "Enviar" o con el id "recaptcha-demo-submit". Después de hacer clic, espera 5 segundos y dime el texto visible en la página.' --yolo
Lo que ocurre en segundo plano:
g-recaptcha-responseEsa cadena de "Verificación exitosa... ¡Hurra!" es un mensaje propio de Google — solo aparece cuando se envía un token válido de reCAPTCHA con el formulario.
Envía esto desde cualquier canal conectado al gateway de Hermes (Telegram, Discord, Slack, etc.):
Ve a https://example.com/login, completa el campo de correo electrónico con
"me@example.com" y el campo de contraseña con "mypassword123",
luego espera 30 segundos y haz clic en el botón Iniciar sesión.
Dime qué página carga después de iniciar sesión.
Hermes redirigirá la solicitud a su agente, se conectará al mismo Chrome, completará el formulario, dará tiempo a la extensión para resolver cualquier CAPTCHA en la página de inicio de sesión, hará clic en Iniciar sesión y responderá con lo que diga la página posterior al inicio de sesión — todo sin que tú menciones nunca CAPTCHAs.
Abre https://example.com/contacto y completa el formulario de contacto:
- Nombre: "John Doe"
- Correo electrónico: "john@example.com"
- Mensaje: "Hola, tengo una pregunta sobre sus servicios."
Espera 45 segundos, luego haz clic en Enviar mensaje.
¿Qué confirmación aparece en la página?
| Tipo de CAPTCHA | Tiempo típico de resolución | Tiempo de espera recomendado |
|---|---|---|
| reCAPTCHA v2 (casilla) | 5–15 segundos | 30–60 segundos |
| reCAPTCHA v2 (invisible) | 5–15 segundos | 30 segundos |
| reCAPTCHA v3 | 3–10 segundos | 20–30 segundos |
| CAPTCHA de AWS WAF | 5–15 segundos | 30 segundos |
Consejo: Cuando tengas dudas, usa 60 segundos. Es mejor esperar un poco más que enviar demasiado pronto. El tiempo adicional es esencialmente gratis — tu factura de CapSolver se cobra por resolución, no por segundo.
Estas son frases probadas que puedes usar en cualquier canal de Hermes:
Evita estas frases — pueden confundir al agente y han sido observadas para provocar rechazos en algunos modelos con ajustes de seguridad (notablemente la familia GLM):
Para los curiosos técnicos, aquí está la arquitectura:
Tu mensaje Gateway de Hermes
──────────────────────────────────────────────────────────
"ve a la página, ──► El agente de Hermes recibe el mensaje
espera 60s, envía" │
▼
herramientas de navegador / browser_cdp
│ (se conecta a través de WebSocket
│ a ws://127.0.0.1:9222)
▼
┌────────────────────────────────────┐
│ chrome-debug Chromium (fondo)│
│ │
│ ┌───────────────────────────────┐ │
│ │ Extensión CapSolver MV3 │ │
│ │ (cargada mediante --load-extension; │ │
│ │ requiere Chrome para pruebas │ │
│ │ o Chromium — Chrome 137+ ignora esta bandera) │ │
│ │ │ │
│ │ 1. script de contenido detecta CAPTCHA │
│ │ 2. trabajador de servicio llama a la API de CapSolver │
│ │ 3. token recibido │ │
│ └───────────────────────────────┘ │
└────────────────────────────────────┘
│
▼
El agente de Hermes espera 60 segundos...
│
▼
browser_cdp: hacer clic en Enviar
│
▼
El formulario se envía CON token válido
│
▼
Página de confirmación posterior al envío
La capa de herramientas de navegador de Hermes está construida alrededor de cinco proveedores intercambiables (Browserbase, Browser Use, Firecrawl, Camoufox, Chromium sin cabeza). Tres de ellos son en la nube — no controlas el binario del navegador, por lo que no hay lugar para la bandera --load-extension. Uno (Camoufox) es basado en Firefox. El quinto — conexión CDP — es la única forma donde un Chromium controlado por el usuario puede ser conectado.
La compensación es muy buena: Hermes permanece portátil en la nube por defecto, pero en el momento en que quieras poderes de navegador (CapSolver, tu propio bloqueador de anuncios, herramientas MV3 personalizadas, cookies persistentes, etc.), lanzas Chrome tú mismo y apuntas a Hermes. Una línea de configuración. Total control.
--load-extensionCuando Chrome se inicia con --load-extension=/ruta/a/la/extensión, trata ese directorio como una extensión no empaquetada — el mismo mecanismo que usa el modo de desarrollador de Chrome. El manifiesto de la extensión, los scripts de contenido y el trabajador de servicio se registran exactamente como si hubieras instalado la extensión desde la Chrome Web Store. No hay diferencia en el aislamiento, ni acceso reducido a las API — es una extensión plenamente privilegiada.
La extensión de CapSolver toma el control del resto:
assets/config.js, envía los detalles del desafío y consulta el tokenEl agente de Hermes no está involucrado en absoluto — ve una página normal, espera el tiempo que le dijiste y envía. La página simplemente tiene un token válido en ella.
Nota de entorno: Evita
--disable-background-networkingen tus flags de Chrome. Bloquea las solicitudes salientes XHR/fetch del trabajador de servicio de CapSolver — así que la extensión nunca puede alcanzar la API de CapSolver. La receta en el Paso 3 omite deliberadamente esta opción.
~/.hermes/config.yamlEl único cambio requerido es agregar cdp_url bajo el bloque browser::
browser:
inactivity_timeout: 120
cdp_url: http://127.0.0.1:9222
--load-extensionEl conjunto completo de flags que debes pasar a Chrome:
| Bandera | Propósito |
|---|---|
--remote-debugging-port=9222 |
Exponer CDP en el puerto TCP 9222 (necesario para que Hermes se conecte) |
--remote-debugging-address=127.0.0.1 |
Vincular CDP solo al bucle local (seguridad — nunca exponer CDP públicamente) |
--user-data-dir=$HOME/.hermes/chrome-debug |
Perfil dedicado que no colisionará con tu Chrome personal |
--load-extension=/abs/ruta/a/capsolver-extension |
La extensión real a cargar |
--disable-extensions-except=/abs/ruta/a/capsolver-extension |
Para mayor seguridad — solo cargar esta extensión |
--no-first-run --no-default-browser-check |
Saltar el asistente de configuración de Chrome |
--no-sandbox |
Desactiva el sandbox de Chrome. Los documentos de Chromium lo marcan como "solo para pruebas", pero es la solución estándar para entornos sin cabeza en Linux/Docker donde no se dispone del namespace de usuario / capacidad de SYS_ADMIN para configurar el sandbox correctamente. |
--disable-dev-shm-usage |
Evitar problemas en contenedores con /dev/shm |
assets/config.jsLa configuración mínima en ~/.hermes/capsolver-extension/assets/config.js:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
useCapsolver: true,
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
// ... ver documentos de CapSolver para el conjunto completo de opciones
};
hermes doctor no muestra browser-cdp bajo Disponibilidad de herramientasSíntoma: Después de reiniciar Hermes, la herramienta browser-cdp está ausente en la salida de hermes doctor.
Causa: Hermes solo registra browser-cdp cuando se configura un endpoint CDP — ya sea browser.cdp_url en config.yaml, la variable de entorno BROWSER_CDP_URL, o una sesión activa de /browser connect. La verificación es presencia de configuración, no accesibilidad (ver tools/browser_cdp_tool.py:_browser_cdp_check). La causa más común de una herramienta browser-cdp ausente es un error de escritura o una clave mal anidada en config.yaml, no un Chrome inaccesible.
Solución:
# 1. Confirma que la clave esté correctamente anidada bajo "browser:" (no en nivel superior)
grep -A2 '^browser:' ~/.hermes/config.yaml
# salida esperada:
# browser:
# ...
# cdp_url: http://127.0.0.1:9222
# 2. Luego confirma que Chrome esté realmente activo en ese endpoint
curl -s http://127.0.0.1:9222/json/version
# 3. Si Chrome está caído, revisa el log de chrome-debug:
tail -n 30 /tmp/chrome-debug.log # o: journalctl --user -u chrome-debug -n 30
Síntoma: Chrome se inicia limpiamente pero las CAPTCHAs nunca se resuelven — cada envío falla.
Causa: Estás usando Chrome de marca 137+, que ignora silenciosamente --load-extension.
Solución: Cambia a Chrome para Pruebas o Chromium. Verifica tu binario:
/ruta/a/tu/chrome --version
# Chrome para Pruebas: "Chromium 143.0.7499.4"
# Chrome de marca: "Google Chrome 143.0.7499.109" ← no funciona
Posibles causas:
--disable-background-networking en tus argumentos de Chrome (bloquea las llamadas salientes de la extensión)Síntoma: La primera acción del navegador después de reiniciar Hermes se bloquea, pero las acciones posteriores funcionan bien.
Causa: El handshake CDP de inicio puede exceder ocasionalmente el tiempo de espera predeterminado de Hermes. Las acciones posteriores reutilizan el WebSocket caliente y son rápidas.
Solución: Vuelve a intentar el comando una vez. Si persiste, aumenta browser.inactivity_timeout en config.yaml.
Síntoma: Después de cambiar de una versión de Chrome a otra, Chrome se cierra con errores de caché en disco.
Causa: El user-data-dir fue creado por una versión diferente de Chrome y ahora es incompatible.
Solución:
# 1. Detén el proceso actual de chrome-debug (como lo supervises)
pkill -f "remote-debugging-port=9222"
# 2. Elimina el perfil obsoleto
rm -rf ~/.hermes/chrome-debug
# 3. Reinicia chrome-debug (a través de tu gestor de procesos, o vuelve a ejecutar el script)
nohup ~/.hermes/chrome-debug.sh > /tmp/chrome-debug.log 2>&1 &
/json/listSíntoma: curl http://127.0.0.1:9222/json/list devuelve solo entradas de page, sin service_worker.
Causa: Los trabajadores de servicio de Chrome MV3 se inactivan de forma agresiva, y en las últimas versiones de Chrome, el endpoint /json/list puede no mostrarlos en absoluto — incluso mientras están activamente manejando eventos.
Solución: Esto no es diagnóstico. No confíes en /json/list para confirmar que CapSolver esté cargado. En su lugar, navega al agente a una página real protegida por reCAPTCHA (por ejemplo, https://www.google.com/recaptcha/api2/demo) y observa si el envío del formulario tiene éxito. Un envío exitoso es la prueba de que la extensión está cargada y resolviendo desafíos; una entrada de lista de objetivos ausente no es una señal de fallo.
Más tiempo de espera siempre es más seguro. La CAPTCHA generalmente se resuelve en 5–20 segundos, pero la latencia de red, desafíos complejos o reintentos pueden añadir tiempo. 30–60 segundos es el punto óptimo.
En lugar de:
"Navega a URL, espera a que se resuelva la CAPTCHA, luego envía"
Usa:
"Ve a URL, espera aproximadamente un minuto, luego envía el formulario"
La frase natural funciona mejor con el agente y tiende a ser más amigable con los modelos ajustados a la seguridad — se ha observado que el uso de lenguaje adversarial alrededor de los CAPTCHAs puede provocar rechazos en algunos modelos de clase GLM.
Cada resolución de CAPTCHA consume créditos. Verifica tu saldo en capsolver.com/dashboard regularmente para evitar interrupciones.
Nunca apuntes --user-data-dir a tu perfil de Chrome real. Usa ~/.hermes/chrome-debug (que también es el objetivo predeterminado del comando /browser connect integrado en Hermes). Así el navegador del agente estará completamente aislado de tu navegación personal.
--remote-debugging-address=127.0.0.1 no es opcional en producción. El Protocolo de Herramientas de Desarrollo de Chrome otorga control total del navegador a cualquiera que pueda acceder al puerto. Nunca expongas el puerto 9222 a una red pública.
Xvfb en servidores sin interfaz gráficaLos complementos de Chrome requieren un contexto de visualización, incluso cuando no quieras ver el navegador. En un servidor Linux sin pantalla física, ejecuta una pantalla virtual:
# Instalar Xvfb (Ubuntu/Debian)
sudo apt-get install xvfb
# Iniciar una pantalla virtual
Xvfb :99 -screen 0 1920x1080x24 &
# Indica a Chrome que lo use (el lanzador chrome-debug.sh ya establece DISPLAY=:99)
export DISPLAY=:99
Si usas el lanzador chrome-debug.sh del Paso 3, la línea export DISPLAY=:99 en la parte superior ya maneja esto — asegúrate de que Xvfb :99 esté en ejecución en el host.
Un chrome & sin control morirá cuando salga su shell padre, cuando Chrome se cuelgue o cuando se reinicie la máquina. Envuelve el lanzamiento en chrome-debug.sh (Paso 3) y supervísalo con lo que ya usas para el resto de tu pila — systemd, supervisord, runit, Docker, etc. La integración es independiente del gestor de procesos; elige el que ya esté en ejecución en la máquina.
Como el modelo nunca ve el CAPTCHA — el complemento lo resuelve de forma invisible — no necesitas un modelo de vanguardia para trabajos con muchos CAPTCHAs. Un modelo económico y capaz es suficiente (por ejemplo, establece provider: openrouter y default: z-ai/glm-4.6 en config.yaml). Todas las inteligencias están en el complemento; el modelo solo tiene que navegar, escribir y hacer clic.
La infraestructura de CapSolver que impulsa esta integración de Hermes ya maneja reCAPTCHA v2/v3, Cloudflare Turnstile y desafíos de AWS WAF en pipelines de automatización en producción — esto no es un trabajo de un solo uso cosido para este tutorial, es la misma capa de resolución que equipos ya usan para scraping a gran escala y automatización de pruebas.
La integración de Hermes + CapSolver representa un enfoque fundamentalmente nuevo para resolver CAPTCHAs en flujos de trabajo de agentes. En lugar de escribir código para detectar CAPTCHAs, llamar a APIs e inyectar tokens, simplemente:
--load-extension=/abs/path/to/capsolver-extension y --remote-debugging-port=9222cdp_url al bloque browser: en ~/.hermes/config.yaml:
browser:
cdp_url: http://127.0.0.1:9222
cdp_url de primer nivel se ignora silenciosamente)El complemento de Chrome de CapSolver maneja el resto — detecta CAPTCHAs, los resuelve mediante la API de CapSolver e inyecta tokens en la página. Al agente nunca le importa los CAPTCHAs en absoluto.
Este es el aspecto de la resolución de CAPTCHAs cuando tienes un agente de IA autónomo: invisible, automático y sin código.
¿Listo para comenzar? Regístrate en CapSolver y usa el código de bonificación
hermepara obtener un bono en tu primer recarga!

No. De hecho, deberías evitar mencionar CAPTCHAs o CapSolver en tus mensajes. El complemento funciona de forma invisible en segundo plano. Simplemente incluye un tiempo de espera en tus instrucciones (por ejemplo, "espera 60 segundos, luego envía") para darle tiempo al complemento de resolver cualquier CAPTCHA en la página.
Google Chrome 137+ (lanzado a mediados de 2025) eliminó el soporte para la bandera de línea de comandos --load-extension en las versiones de marca. Esto significa que los complementos de Chrome no se pueden cargar en sesiones automatizadas. Necesitas Chrome para Pruebas o Chromium independiente, que aún soportan esta bandera.
No — los proveedores en la nube ejecutan el navegador en la infraestructura de otra persona, por lo que no puedes cargar complementos arbitrarios en la sesión. El patrón de adjunta CDP en este guía es la única forma de combinar Hermes con un complemento de Chrome. (Una vez que browser.cdp_url esté configurado en config.yaml, Hermes enruta el tráfico del navegador a través de Chrome local y los proveedores en la nube se silencian hasta que elimines la línea.)
Sí — cualquier navegador basado en Chromium que aún soporte --load-extension funciona. Puedes usar:
npx playwright install)La receta de integración es la misma: apunta --remote-debugging-port=9222 --load-extension=/path/to/capsolver-extension al binario que prefieras.
Lo que no funciona:
--load-extensionSí — Camoufox es uno de los cinco proveedores de navegadores integrados de Hermes, y es una excelente opción de stealth basada en Firefox para tareas que no involucran un complemento de Chrome. La trampa es que Camoufox es basado en Firefox, y el complemento de CapSolver está construido en formato Chrome MV3 — así que no pueden ejecutarse juntos en una misma sesión.
Buena noticia: con Hermes no necesitas elegir permanentemente. La configuración browser.cdp_url en ~/.hermes/config.yaml es un interruptor único — apúntalo a tu Chrome con CapSolver cuando necesites resolver CAPTCHAs, y apúntalo a Camoufox cuando necesites stealth de Firefox. Una configuración típica mantiene ambos en ejecución:
# Línea activa: cambia entre perfiles comentando/eliminando comentarios
browser:
cdp_url: http://127.0.0.1:9222 # Chrome con CapSolver (este guía)
# cdp_url: http://127.0.0.1:9333 # Punto final de Camoufox
Luego reinicia Hermes (hermes gateway run, o activa un reinicio a través de lo que supervisa el gateway en tu máquina) y el cambio toma efecto en segundos. El mismo Hermes, los mismos canales, las mismas habilidades — un navegador diferente por carga de trabajo.
/browser connect de Hermes con esta configuración?Sí. El comando slash /browser connect integrado en Hermes (en la interfaz de usuario interactiva hermes) apunta al mismo directorio de datos de usuario predeterminado que usamos (~/.hermes/chrome-debug) y al mismo puerto (9222). Una vez que hayas configurado el sidecar chrome-debug, puedes usar /browser connect desde dentro de Hermes interactivamente, o dejar browser.cdp_url en config.yaml para una conexión permanente — ambos funcionan contra el mismo Chrome.
La integración es completamente independiente del canal. Una vez que browser.cdp_url esté configurado en config.yaml, toda acción del navegador — ya sea desde hermes -z en la CLI, la interfaz de usuario interactiva hermes, o un mensaje desde Telegram, Discord, Slack, WhatsApp, Signal o correo electrónico — se enruta a través de tu Chrome con CapSolver. El complemento resuelve los CAPTCHAs de forma idéntica en todos los casos.
Úsala solo como prueba rápida. En la FAQ oficial de reCAPTCHA de Google, recomiendan crear claves de sitio dedicadas para pruebas automatizadas en lugar de depender de la página de demostración pública en pipelines de producción.
El complemento de Chrome de CapSolver resuelve automáticamente reCAPTCHA v2 (casilla e invisible), reCAPTCHA v3, Cloudflare, CAPTCHA de AWS WAF y otros widgets ampliamente utilizados. El script de contenido detecta el tipo de CAPTCHA en la página y lo resuelve en consecuencia — no se requiere configuración por tipo en tu lado. (Nota: Cloudflare Turnstile y el desafío de 5 segundos de Cloudflare no son resueltos por el complemento de navegador; solo están disponibles a través de la API de CapSolver y están fuera del alcance de este guía.)
CapSolver ofrece precios competitivos basados en el tipo de CAPTCHA y el volumen. Visita capsolver.com para ver los precios actuales.
Hermes Agent es de código abierto (github.com/NousResearch/hermes-agent) y es gratuito para ejecutar en tu propio hardware. Necesitarás claves de API para el proveedor de modelos de IA de tu elección (se recomienda OpenRouter — Hermes soporta más de 200 modelos a través de él) y, para resolver CAPTCHAs, una cuenta de CapSolver con créditos.
Para la mayoría de los CAPTCHAs, 30-60 segundos es suficiente. El tiempo real de resolución suele ser de 5-20 segundos, pero agregar un buffer adicional asegura la confiabilidad. Si dudas, usa 60 segundos.
Sí. Necesitarás Xvfb (X Virtual Framebuffer) para la visualización ya que los complementos de Chrome requieren un contexto de visualización. Ejecuta Xvfb :99 -screen 0 1920x1080x24 & en el host y asegúrate de que DISPLAY=:99 esté exportado en el lanzador chrome-debug.sh (el lanzador del Paso 3 ya lo hace). También mantén --no-sandbox en los argumentos de Chrome ya que la mayoría de los kernels de servidor no otorgan las capacidades que requiere el sandbox de Chrome.
Técnicamente sí, pero tendrás que gestionar el contenido de pestañas/sesiones tú mismo. Para la mayoría de las cargas de trabajo, una única instancia de Hermes ↔ una única instancia de chrome-debug es la configuración más limpia. Si necesitas paralelismo real, ejecuta múltiples sidecars de chrome-debug en puertos diferentes (9222, 9223, ...) y apunta cada Hermes a su propio.
Sí. Los Skills de Hermes son memorias procedurales — secuencias de pasos que el agente ha aprendido. Un Skill que involucra navegar en sitios con CAPTCHA protegidos beneficiará automáticamente de la integración de CapSolver de la misma forma que lo haría un mensaje ad-hoc, porque es la herramienta del navegador la que se está mejorando. No se necesitan cambios en el Skill.
Una revisión de Composio basada en evidencia que abarca sesiones, más de 1.000 kits de herramientas, autenticación gestionada, MCP, precios, ventajas, limitaciones y alternativas.

Aprende a integrar CapSolver con Composio, Playwright y el SDK de Agents de OpenAI para la automatización del navegador de CAPTCHA de imagen y reCAPTCHA v2 autorizado.

Un agente de IA solucionador de reCAPTCHA v3 es confiable solo cuando el agente preserva la acción, la página, la sesión del navegador y el contexto de autorización que generaron el desafío. CapSolver proporciona la capa de infraestructura de CAPTCHA documentada a través de Core SDK, Herramientas del Agente y MCP. El agente sigue teniendo política, reintentos y confirmación de la tarea original. Este guía explica una integración en producción para reCAPTCHA v3, incluido Enterprise, sin tratar un token devuelto como el final succ

Cuando llega un informe de que el agente de IA no resuelve el CAPTCHA, la frase oculta varios fallos diferentes. La detección puede estar equivocada, el agente puede redirigirse a una herramienta no disponible, el navegador puede navegar antes de que el resultado regrese, o la aplicación puede rechazar un resultado que fue técnicamente producido. CapSolver proporciona la infraestructura de CAPTCHA documentada, mientras que su orquestador debe preservar la evidencia y elegir la rama de recuperación correcta. Este guía convierte un incidente vago en una capa
