
Anh Tuan
Data Science Expert

Cuando tu automatización web impulsada por IA choca con un muro de CAPTCHA, toda la cadena se detiene. Las páginas no se cargan, los formularios no se pueden enviar y la extracción de datos se detiene por completo, todo porque un desafío diseñado para bloquear bots. TinyFish AgentQL es un conjunto de herramientas poderosas para conectar la IA con la web, con consultas de lenguaje natural, integraciones con Playwright y extracción de datos estructurados a escala empresarial. Pero como cualquier marco de automatización de navegador, se queda atascado con los CAPTCHAS.
CapSolver lo cambia por completo. Al cargar la extensión CapSolver en el contexto del navegador de AgentQL basado en Playwright, los CAPTCHAS se resuelven automáticamente y de forma invisible en segundo plano. Sin resolver manualmente. Sin orquestación compleja de API por tu parte. Tus scripts de automatización continúan funcionando como si el CAPTCHA nunca hubiera existido.
Lo mejor de todo es que tus consultas y scripts de AgentQL no necesitan ni una línea de código relacionado con CAPTCHA. La extensión se encarga por completo de la detección, resolución e inyección de tokens mientras tu agente se enfoca en lo que hace mejor: extraer datos y automatizar flujos de trabajo.
TinyFish AgentQL es un kit de herramientas de nivel empresarial para conectar agentes de IA y LLMs con entornos web en vivo. Desarrollado por TinyFish, proporciona un lenguaje de consulta impulsado por IA que te permite localizar elementos de página y extraer datos estructurados usando lenguaje natural: sin selectores CSS frágiles o XPaths requeridos.
AgentQL opera en cualquier página, incluido contenido autenticado y páginas generadas dinámicamente, lo que lo hace ideal para automatización a gran escala, recolección de datos y flujos de trabajo de agentes de IA.
CapSolver es un servicio líder de resolución de CAPTCHA impulsado por IA que resuelve automáticamente diversos desafíos de CAPTCHA. Con tiempos de respuesta rápidos y amplia compatibilidad, CapSolver se integra sin problemas en flujos de trabajo automatizados.
La mayoría de las integraciones de resolución de CAPTCHA requieren que escribas código de plantilla: crear tareas, consultar resultados, inyectar tokens en campos ocultos. Esa es el enfoque estándar con scripts de Playwright o Puppeteer.
AgentQL + CapSolver toma un enfoque fundamentalmente diferente:
| Tradicional (basado en código) | AgentQL + CapSolver Extension |
|---|---|
| Escribir una clase de servicio de CapSolver | Cargar la extensión en el contexto de Playwright |
Llamar a createTask() / getTaskResult() |
La extensión maneja todo automáticamente |
Inyectar tokens mediante page.evaluate() |
La inyección de tokens es invisible |
| Manejar errores, reintentos, tiempos de espera en código | La extensión gestiona los reintentos internamente |
| Código diferente para cada tipo de CAPTCHA | Funciona para todos los tipos automáticamente |
La clave del insight: La extensión de CapSolver funciona dentro del contexto del navegador de Playwright de AgentQL. Cuando AgentQL navega a una página con un CAPTCHA, la extensión lo detecta, lo resuelve en segundo plano y inyecta el token — todo antes de que tu script interactúe con el formulario. Tu código de automatización permanece limpio, enfocado y libre de CAPTCHAS.
Antes de configurar la integración, asegúrate de tener:
Importante: Las extensiones de Chrome solo funcionan con Chromium con un contexto persistente en Playwright. Esto es un requisito de Playwright, no una limitación de AgentQL.
SDK de Python:
pip install agentql
playwright install chromium
SDK de JavaScript:
npm install agentql
npx playwright install chromium
Descarga la extensión de Chrome de CapSolver y cópiala a un directorio dedicado:
CapSolver.Browser.Extension-chrome-v1.17.0.zipmkdir -p ~/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d ~/capsolver-extension/
ls ~/capsolver-extension/manifest.json
Deberías ver manifest.json — esto confirma que la extensión está en el lugar correcto.
Abre el archivo de configuración de la extensión en ~/capsolver-extension/assets/config.js y reemplaza el valor de apiKey con el tuyo:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← tu clave aquí
useCapsolver: true,
// ... resto de la configuración
};
Puedes obtener tu clave de API desde tu dashboard de CapSolver.
El paso crítico es iniciar Chromium de Playwright con un contexto persistente que cargue la extensión de CapSolver.
Ejemplo en Python:
import agentql
from playwright.sync_api import sync_playwright
import time
import os
# Ruta de la extensión de CapSolver
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
def main():
with sync_playwright() as p:
# Iniciar Chromium con contexto persistente y extensión de CapSolver
context = p.chromium.launch_persistent_context(
user_data_dir="./browser-data",
headless=False, # Las extensiones requieren modo no oculto
args=[
f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
],
)
# Envolver la página con AgentQL para consultas impulsadas por IA
page = agentql.wrap(context.pages[0])
# Navegar a tu página objetivo
page.goto("https://example.com/protected-page")
# Esperar a que CapSolver detecte y resuelva cualquier CAPTCHA
time.sleep(30)
# Encontrar y hacer clic en el botón de envío usando consultas de lenguaje natural de AgentQL
response = page.query_elements("""
{
submit_button
}
""")
# Hacer clic en el botón de envío — ¡el CAPTCHA ya está resuelto!
response.submit_button.click()
# Extraer datos después del envío
result = page.query_data("""
{
confirmation_message
}
""")
print(f"Resultado: {result['confirmation_message']}")
context.close()
if __name__ == "__main__":
main()
Ejemplo en JavaScript:
const { chromium } = require('playwright');
const agentql = require('agentql');
const path = require('path');
const os = require('os');
const CAPSOLVER_EXTENSION_PATH = path.join(os.homedir(), 'capsolver-extension');
(async () => {
// Iniciar Chromium con contexto persistente y extensión de CapSolver
const context = await chromium.launchPersistentContext('./browser-data', {
headless: false, // Las extensiones requieren modo no oculto
args: [
`--disable-extensions-except=${CAPSOLVER_EXTENSION_PATH}`,
`--load-extension=${CAPSOLVER_EXTENSION_PATH}`,
],
});
// Obtener la primera página y envolverla con AgentQL
const page = agentql.wrap(context.pages()[0]);
// Navegar a la página objetivo
await page.goto('https://example.com/protected-page');
// Esperar a que CapSolver maneje cualquier CAPTCHA
await page.waitForTimeout(30000);
// Usar consultas de AgentQL para interactuar — ¡el CAPTCHA ya está resuelto!
const response = await page.queryElements(`{
submit_button
}`);
await response.submit_button.click();
// Extraer datos de resultado
const result = await page.queryData(`{
confirmation_message
}`);
console.log('Resultado:', result.confirmation_message);
await context.close();
})();
Después de iniciar el navegador, puedes verificar que la extensión de CapSolver esté activa navegando a chrome://extensions en la ventana del navegador. Deberías ver la extensión de CapSolver listada y activada.
Alternativamente, revisa la consola del navegador en busca de mensajes de registro de CapSolver indicando que el servicio de trabajo está en ejecución.
Una vez que la configuración esté completa, usar CapSolver con AgentQL es sencillo.
No escribas código específico de CAPTCHA. Solo agrega un tiempo de espera antes de interactuar con formularios protegidos por CAPTCHA y deja que la extensión haga su trabajo.
page.goto("https://example.com/contact")
# Rellenar el formulario usando consultas de AgentQL
response = page.query_elements("""
{
contact_form {
name_field
email_field
message_field
submit_button
}
}
""")
response.contact_form.name_field.fill("John Doe")
response.contact_form.email_field.fill("john@example.com")
response.contact_form.message_field.fill("¡Hola, tengo una pregunta sobre sus servicios.")
# Esperar a que CapSolver resuelva el CAPTCHA
time.sleep(30)
# Enviar — ¡el token del CAPTCHA ya está inyectado!
response.contact_form.submit_button.click()
page.goto("https://example.com/login")
# Esperar a que CapSolver resuelva el desafío de Turnstile
time.sleep(25)
# Encontrar elementos del formulario de inicio de sesión con AgentQL
response = page.query_elements("""
{
login_form {
email_input
password_input
login_button
}
}
""")
# Rellenar el formulario — ¡el Turnstile ya está manejado!
response.login_form.email_input.fill("me@example.com")
response.login_form.password_input.fill("mypassword123")
# Hacer clic en iniciar sesión
response.login_form.login_button.click()
page.goto("https://example.com/data")
# Esperar a que cualquier desafío de CAPTCHA se resuelva
time.sleep(30)
# Extraer datos estructurados con AgentQL
data = page.query_data("""
{
products[] {
name
price
rating
availability
}
}
""")
for product in data['products']:
print(f"{product['name']}: ${product['price']} ({product['rating']} estrellas)")
| Tipo de CAPTCHA | Tiempo de resolución típico | 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 |
| Cloudflare Turnstile | 3-10 segundos | 20-30 segundos |
Consejo: Cuando estés en duda, usa 30 segundos. Es mejor esperar un poco más que enviar demasiado pronto. El tiempo adicional no afecta el resultado.
Esto es lo que ocurre cuando AgentQL se ejecuta con la extensión de CapSolver cargada:
Tu script de AgentQL
───────────────────────────────────────────────────
page.goto("https://...") ──► Chromium carga la página
│
▼
┌─────────────────────────────┐
│ Página con widget de CAPTCHA │
│ │
│ Extensión de CapSolver: │
│ 1. El script de contenido detecta │
│ CAPTCHA en la página │
│ 2. El servicio de trabajo llama │
│ a la API de CapSolver │
│ 3. Token recibido │
│ 4. Token inyectado en campo │
│ oculto de formulario │
└─────────────────────────────┘
│
▼
time.sleep(30) La extensión resuelve el CAPTCHA...
│
▼
page.query_elements(...) AgentQL encuentra elementos del formulario
submit_button.click() Formulario envía con token válido
│
▼
"Verificación exitosa!"
Cuando Playwright inicia Chromium con la bandera --load-extension:
Aquí tienes una configuración completa en Python con todas las opciones de configuración para la integración de AgentQL + CapSolver:
import agentql
from playwright.sync_api import sync_playwright
import os
# Configuración
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
USER_DATA_DIR = "./browser-data"
with sync_playwright() as p:
context = p.chromium.launch_persistent_context(
user_data_dir=USER_DATA_DIR,
headless=False,
args=[
f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
],
)
page = agentql.wrap(context.pages[0])
# ... tu código de automatización aquí
context.close()
| Opción | Descripción |
|---|---|
user_data_dir |
Directorio para almacenar datos del perfil del navegador (cookies, sesiones). Requerido para contexto persistente. |
headless |
Debe ser False — las extensiones de Chrome no funcionan en modo headless. |
--disable-extensions-except |
Restringe qué extensiones pueden cargarse (evita conflictos). |
--load-extension |
Ruta al directorio de la extensión CapSolver desempaquetada. |
CAPSOLVER_EXTENSION_PATH |
Ruta completa a la extensión de CapSolver extraída que contiene manifest.json. |
La clave de la API de CapSolver se configura directamente en el archivo assets/config.js de la extensión (consulte el paso 3 anterior).
Síntoma: Los CAPTCHAs no se resuelven automáticamente.
Causa: Es posible que esté usando un contexto de navegador regular en lugar de un contexto persistente, o esté ejecutándose en modo headless.
Solución: Las extensiones en Playwright requieren un contexto persistente y modo con interfaz gráfica:
# ✅ Correcto — contexto persistente, con interfaz gráfica
context = p.chromium.launch_persistent_context(
user_data_dir="./browser-data",
headless=False,
args=[...argumentos de extensión...]
)
# ❌ Incorrecto — contexto regular (las extensiones no se cargarán)
browser = p.chromium.launch()
context = browser.new_context()
Posibles causas:
Síntoma: El script se ejecuta pero no aparece la extensión.
Causa: Las extensiones de Chrome no funcionan en modo headless.
Solución: Use modo con interfaz gráfica con una pantalla virtual en servidores:
# Instalar Xvfb
sudo apt-get install xvfb
# Iniciar una pantalla virtual
Xvfb :99 -screen 0 1280x720x24 &
# Establecer DISPLAY
export DISPLAY=:99
Síntoma: La bandera de la extensión se ignora silenciosamente.
Causa: Google Chrome 137+ eliminó el soporte para --load-extension en builds oficiales.
Solución: Use el Chromium de Playwright (recomendado) o Chrome for Testing:
# Instalar Chromium de Playwright (recomendado)
npx playwright install chromium
# O descargar Chrome for Testing
# Visite: https://googlechromelabs.github.io/chrome-for-testing/
Siempre use tiempos de espera generosos. Más tiempo de espera siempre es más seguro. El CAPTCHA generalmente se resuelve en 5-20 segundos, pero la latencia de red, desafíos complejos o reintentos pueden agregar tiempo. 30-60 segundos es el punto óptimo.
Mantenga sus scripts de automatización limpios. No agregue lógica específica para CAPTCHA en sus consultas de AgentQL. La extensión maneja todo — su código debe enfocarse únicamente en la extracción y la interacción de datos.
Monitoree su saldo de CapSolver. Cada resolución de CAPTCHA cuesta créditos. Consulte su saldo en capsolver.com/dashboard regularmente para evitar interrupciones.
Use consistentemente el contexto persistente. Siempre inicie con launch_persistent_context() cuando necesite extensiones. Esto también preserva las cookies y los datos de sesión entre ejecuciones, lo que puede reducir la frecuencia de CAPTCHA.
Use Xvfb en servidores headless. Las extensiones de Chrome requieren un contexto de pantalla. Configure Xvfb para entornos de servidor donde no haya una pantalla física disponible.
La integración de TinyFish AgentQL + CapSolver trae la resolución de CAPTCHA invisible a uno de los conjuntos de herramientas de automatización web más poderosos disponibles. En lugar de escribir código complejo para manejar CAPTCHAs, simplemente:
La extensión de CapSolver maneja el resto — detecta CAPTCHAs, los resuelve mediante la API de CapSolver y inyecta tokens en la página. Sus scripts de AgentQL nunca necesitan saber nada sobre CAPTCHAs en absoluto.
Este es el aspecto de la resolución de CAPTCHA cuando combina automatización web con inteligencia artificial con resolución de CAPTCHA con inteligencia artificial: invisible, automática y sin código.
¿Listo para comenzar? Regístrese en CapSolver y use el código de bonificación AGENTQL para obtener un 6% adicional en su primer recarga!

No. La extensión de CapSolver funciona completamente en segundo plano dentro del contexto del navegador de Playwright. Simplemente agregue un time.sleep() o waitForTimeout() antes de enviar formularios, y la extensión maneja la detección, resolución e inyección de tokens automáticamente.
Playwright solo admite extensiones de Chrome cuando se usa launch_persistent_context(). Esto es un requisito arquitectónico de Playwright. Los contextos de navegador regulares creados mediante browser.new_context() no pueden cargar extensiones.
No. Las extensiones de Chrome requieren un navegador con interfaz gráfica. Para entornos de servidor sin pantalla, use Xvfb (X Virtual Framebuffer) para crear una pantalla virtual.
CapSolver admite reCAPTCHA v2 (casilla e invisible), reCAPTCHA v3, Cloudflare Turnstile, AWS WAF CAPTCHA y más. La extensión detecta automáticamente el tipo de CAPTCHA y lo resuelve en consecuencia.
CapSolver ofrece precios competitivos según el tipo de CAPTCHA y el volumen. Visite capsolver.com para ver los precios actuales.
AgentQL ofrece versiones gratuitas y pagadas. El SDK y el lenguaje de consultas están disponibles para desarrollo y pruebas. Visite tinyfish.ai para obtener detalles sobre precios.
Para la mayoría de los CAPTCHAs, 30-60 segundos es suficiente. El tiempo de resolución real suele ser de 5-20 segundos, pero agregar un margen adicional garantiza la confiabilidad. Si hay dudas, use 30 segundos.
Descubre cómo la infraestructura de automatización de IA impulsada por LLM revoluciona el reconocimiento de CAPTCHA, mejorando la eficiencia de los procesos de negocio y reduciendo la intervención manual. Optimiza tus operaciones automatizadas con soluciones avanzadas de verificación.

Aprende a escalar la recopilación de datos para el entrenamiento de modelos de lenguaje grandes resolviendo CAPTCHAs a gran escala. Descubre estrategias automatizadas para construir conjuntos de datos de alta calidad para modelos de IA.
