
Adélia Cruz
MCP Integration Engineer
Publicado Jul 11, 2023
Actualizado Dec 01, 2025 · min de lectura

AntiBotdeflectorTaskProxyLess cuando tenga la URL de la página, el dominio de BotDeflector y el token de desafío flowToken; el resultado asíncrono se devuelve en solution.token.VisionEngine con module: "botdeflector" solo para un desafío visual que proporcione imágenes de primer plano y fondo; esta solicitud devuelve las coordenadas de reconocimiento directamente.websiteURL y domain son campos separados de BotDeflector y pueden contener nombres de host diferentes. Capture ambos desde la sesión del navegador autorizada.Los salas de espera virtuales de Queue-it controlan el acceso durante picos de tráfico como lanzamientos de boletos, lanzamientos de productos y eventos con inventario limitado. La etapa de CAPTCHA utilizada en las integraciones actuales es más que una imagen que contiene caracteres: BotDeflector proporciona un flujo de desafío que puede requerir un resultado de token o coordenadas visuales.
Esta guía actualizada explica ambos caminos soportados con CapSolver. El camino del token es la integración predeterminada para un flowToken capturado; el camino de VisionEngine se aplica cuando el navegador expone las imágenes de primer plano y fondo correspondientes. La documentación de la API de CAPTCHA de CapSolver explica el ciclo de vida de la tarea compartido y el modelo de errores.
El flujo actual de Queue-it debe modelarse como BotDeflector en lugar de un formulario OCR independiente. Un desafío de BotDeflector contiene entradas vinculadas a la sesión, y el resultado esperado depende del camino de integración:
| Camino | Tarea de CapSolver | Datos de desafío requeridos | Resultado |
|---|---|---|---|
| Modo de token | AntiBotdeflectorTaskProxyLess |
websiteURL, domain, flowToken |
solution.token después de consultar |
| Modo de reconocimiento visual | VisionEngine con module: "botdeflector" |
image, imageBackground, websiteURL |
solution.points en la respuesta de createTask |
Estos modos no son intercambiables. El modo de token no acepta una imagen Base64 como sustituto de flowToken, mientras que el modo de reconocimiento visual no devuelve el token final de BotDeflector. Inspeccione la implementación del desafío en su sesión del navegador autorizada y elija el camino que coincida con los datos disponibles allí.
Las salas de espera de Queue-it y el solucionador de CAPTCHA también usan colas diferentes. La sala de espera determina cuándo un visitante puede continuar, mientras que la API de CapSolver procesa una tarea de desafío. El glosario de colas de solicitud proporciona información útil para separar la cola de la aplicación de la consulta de tareas de API.
Prepare lo siguiente antes de crear una tarea:
domain de BotDeflector y el flowToken actual capturado desde la misma sesión del navegador.https://api.capsolver.com.No coloque directamente una clave de API de producción en el código fuente. Los ejemplos usan YOUR_API_KEY, FLOW_TOKEN_FROM_PAGE y dominios de ejemplo como marcadores de posición.
El modo de token usa AntiBotdeflectorTaskProxyLess, luego consulta getTaskResult hasta que CapSolver devuelva solution.token. Los nombres de campo y la forma de la respuesta siguen la documentación del modo de token de BotDeflector.
Capture estos valores desde la misma sesión del navegador autorizada:
websiteURL: la URL completa de la página donde se ejecuta el desafío de BotDeflector.domain: el dominio de BotDeflector requerido por ese desafío.flowToken: el token de desafío actual expuesto por el flujo de BotDeflector.No asuma que domain es simplemente el nombre de host de websiteURL. La definición oficial de la tarea trata estos campos como entradas separadas, y pueden no usar el mismo nombre de dominio.
Envíe los valores capturados a createTask:
curl --request POST 'https://api.capsolver.com/createTask' \
--header 'Content-Type: application/json' \
--data '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiBotdeflectorTaskProxyLess",
"websiteURL": "https://queue.example.com/waitingroom/",
"domain": "challenge.example.net",
"flowToken": "FLOW_TOKEN_FROM_PAGE"
}
}'
Una respuesta exitosa contiene un ID de tarea:
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Verifique errorId antes de almacenar taskId. Si la creación de la tarea falla, registre errorCode y errorDescription sin registrar la clave de API o el token de desafío completo.
Envíe el ID de tarea devuelto a getTaskResult:
curl --request POST 'https://api.capsolver.com/getTaskResult' \
--header 'Content-Type: application/json' \
--data '{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}'
Continue consultando mientras el estado de la respuesta sea processing. Deténgase inmediatamente si la API devuelve un errorId distinto de cero o un estado fallido. Cuando la tarea esté lista, lea el token desde solution.token:
{
"errorId": 0,
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
"status": "ready",
"solution": {
"token": "BOTDEFLECTOR_TOKEN"
}
}
Pase el token devuelto al punto de integración de BotDeflector utilizado por la misma sesión del navegador de Queue-it. No cree un contexto de navegador nuevo entre capturar flowToken y aplicar el resultado. Los cambios de sesión, navegación o refrescos del desafío pueden invalidar el contexto y requerir una nueva tarea.
El punto exacto de inyección o envío pertenece a la implementación de Queue-it que está probando. Cópelo desde su propia integración de aplicación en lugar de depender de un selector universal.
Canjee su código de bonificación de CapSolver
¡Aumente su presupuesto de automatización de inmediato!
Use el código de bonificación CAP26 al recargar su cuenta de CapSolver para obtener un 5% adicional en cada recarga — sin límites.
Canjéelo ahora en su Panel de CapSolver
El siguiente ejemplo crea una tarea de BotDeflector, consulta con un tiempo límite limitado y devuelve solution.token. Usa valores de desafío de marcador de posición porque un flowToken real debe provenir de su sesión del navegador autorizada.
import os
import time
import requests
API_BASE = "https://api.capsolver.com"
API_KEY = os.environ["CAPSOLVER_API_KEY"]
def solve_botdeflector(website_url, domain, flow_token, timeout=120):
create_response = requests.post(
f"{API_BASE}/createTask",
json={
"clientKey": API_KEY,
"task": {
"type": "AntiBotdeflectorTaskProxyLess",
"websiteURL": website_url,
"domain": domain,
"flowToken": flow_token,
},
},
timeout=30,
)
create_response.raise_for_status()
created = create_response.json()
if created.get("errorId"):
raise RuntimeError(
f"createTask failed: {created.get('errorCode')} - "
f"{created.get('errorDescription')}"
)
task_id = created["taskId"]
deadline = time.monotonic() + timeout
while time.monotonic() < deadline:
time.sleep(2)
result_response = requests.post(
f"{API_BASE}/getTaskResult",
json={"clientKey": API_KEY, "taskId": task_id},
timeout=30,
)
result_response.raise_for_status()
result = result_response.json()
if result.get("errorId"):
raise RuntimeError(
f"getTaskResult failed: {result.get('errorCode')} - "
f"{result.get('errorDescription')}"
)
if result.get("status") == "ready":
return result["solution"]["token"]
if result.get("status") == "failed":
raise RuntimeError("BotDeflector task failed")
raise TimeoutError(f"BotDeflector task {task_id} exceeded {timeout}s")
token = solve_botdeflector(
website_url="https://queue.example.com/waitingroom/",
domain="challenge.example.net",
flow_token="FLOW_TOKEN_FROM_PAGE",
)
print(token)
Para más detalles sobre variables de entorno, manejo de solicitudes y estructura de cliente reutilizable, consulte la guía de integración de API de CAPTCHA en Python.
Use VisionEngine solo cuando el desafío exponga los activos visuales requeridos por el módulo de reconocimiento de BotDeflector. Este camino acepta una imagen de primer plano image y una imageBackground, luego devuelve coordenadas de clic en la respuesta inicial de createTask.
La solicitud usa type: "VisionEngine" y module: "botdeflector":
curl --request POST 'https://api.capsolver.com/createTask' \
--header 'Content-Type: application/json' \
--data '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "VisionEngine",
"module": "botdeflector",
"image": "BASE64_FOREGROUND_IMAGE",
"imageBackground": "BASE64_BACKGROUND_IMAGE",
"websiteURL": "https://queue.example.com/waitingroom/"
}
}'
Según la documentación actual de VisionEngine, esta tarea devuelve datos de reconocimiento directamente; no requiere una solicitud separada de getTaskResult. Una respuesta exitosa tiene esta forma:
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"status": "ready",
"solution": {
"points": [[123, 88], [244, 84], [174, 70]]
},
"taskId": "TASK_ID"
}
Aplicar las coordenadas devueltas al desafío visual en el mismo espacio de coordenadas que las imágenes enviadas. Redimensionar, recortar o usar una captura de pantalla con dimensiones diferentes puede mover las posiciones objetivo y causar interacciones incorrectas.
VisionEngine maneja el paso de reconocimiento; no reemplaza la gestión del estado del navegador circundante. Si la página espera un intercambio de token posterior, continúe con ese intercambio dentro de la misma sesión autorizada.
Confirme que flowToken es actual y pertenece a la misma sesión de página. También verifique que websiteURL y domain se hayan capturado independientemente en lugar de construirse a partir de un solo nombre de host. Use una consulta limitada y deténgase en errores de API en lugar de bucles infinitos.
Un token rechazado indica comúnmente que el estado de la página cambió después de capturar los datos del desafío. Mantenga las cookies, el contexto del navegador, la URL y el estado del desafío estables hasta que se aplique el resultado. Si el desafío se refresca, capture un nuevo flowToken y cree una nueva tarea.
Envíe las imágenes de desafío originales sin redimensionarlas y aplique las coordenadas contra las mismas dimensiones. Verifique si su automatización de navegador introdujo escalado de relación de píxeles de dispositivo, redimensionamiento de CSS o una captura de pantalla recortada.
Compare versiones de navegador, configuraciones de ventana, temporización, cookies y disponibilidad de secretos entre entornos locales y de CI. Para una lista de prueba más amplia, consulte manejo de CAPTCHA en QA automatizada.
Use la automatización de Queue-it y BotDeflector solo para sistemas que posea, entornos de QA que opere o flujos de trabajo para los que el propietario del sitio haya otorgado permiso explícito. Una API de resolución de CAPTCHA no otorga derechos de acceso ni anula los términos de un sitio, reglas de cola, límites de velocidad o requisitos de autorización.
Mantenga el volumen de pruebas limitado, evite eventos públicos de alta demanda a menos que sean parte de una prueba aprobada y registre solo los datos diagnósticos mínimos. Las claves de API, cookies, valores de flowToken y tokens devueltos deben tratarse como secretos y excluidos de capturas de pantalla, análisis y registros a largo plazo.
El manejo de CAPTCHA de Queue-it ahora requiere una integración consciente de BotDeflector. Use AntiBotdeflectorTaskProxyLess para el flujo de token de sesión y lea el resultado desde solution.token; use VisionEngine con el módulo botdeflector solo cuando el desafío proporcione las imágenes de primer plano y fondo necesarias para el reconocimiento de coordenadas.
La regla de implementación clave es preservar el contexto del navegador original desde la captura del desafío hasta la presentación del resultado. Para pruebas autorizadas de Queue-it, CapSolver proporciona ambos caminos documentados de BotDeflector a través de la misma API de tarea.
P: ¿Qué tipo de tarea debo usar para el modo de token de BotDeflector de Queue-it?
Use AntiBotdeflectorTaskProxyLess cuando tenga websiteURL, domain y un flowToken actual. Consulte getTaskResult y lea el valor completado desde solution.token.
P: ¿Requiere el modo de token de BotDeflector de Queue-it una imagen CAPTCHA?
No. La tarea del modo de token usa la URL de la página, el dominio de BotDeflector y flowToken. Si el desafío expone en su lugar una imagen de primer plano y una imagen de fondo para el reconocimiento visual, use el camino separado de VisionEngine.
P: ¿Cuándo debo usar el módulo botdeflector de VisionEngine?
Use VisionEngine con module: "botdeflector" para el paso de reconocimiento visual que proporcione image y imageBackground. La API devuelve solution.points directamente en la respuesta de createTask.
P: ¿Por qué el dominio de BotDeflector puede diferir de la URL de la página de Queue-it?
BotDeflector define websiteURL y domain como campos separados de tarea, por lo que el servicio de desafío puede usar un nombre de host diferente del de la página de Queue-it visible. Capture ambos valores desde la integración activa.
Q: ¿Puedo reutilizar un token de BotDeflector en otra sesión de navegador?
No se debe asumir reutilización. Aplica el token al mismo flujo de navegador autorizado que generó las entradas del desafío; si la página o el desafío se refrescan, captura nuevas entradas y crea una nueva tarea.
Q: ¿Está permitido el manejo automático de CAPTCHA de Queue-it?
Es adecuado solo cuando posees el sistema o tienes autorización explícita para probarlo o automatizarlo. Respeta los términos del sitio, los controles de acceso, las políticas de cola, los límites de tasa y las leyes aplicables.

Adélia Cruz
MCP Integration Engineer
Making CapSolver tools accessible through MCP.
SOBRE EL AUTOR
Resolver un CAPTCHA de imagen en Node.js con la solicitud ImageToTextTask documentada, codificación Base64 local, resultados de texto directos y un cliente pequeño y probado.

Compara ImageToTextTask y VisionEngine por entrada de CAPTCHA, salida de reconocimiento, requisitos de módulo y verificaciones de aplicación antes de elegir una tarea de resolución.
