
Adélia Cruz
MCP Integration Engineer
Publicado Jul 11, 2023
Atualizado Oct 13, 2025 · minutos de leitura

AntiBotdeflectorTaskProxyLess quando você tiver a URL da página, o domínio do BotDeflector e o desafio flowToken; o resultado assíncrono é retornado em solution.token.VisionEngine com module: "botdeflector" apenas para um desafio visual que forneça imagens de primeiro plano e de fundo; esta solicitação retorna coordenadas de reconhecimento diretamente.websiteURL e domain são campos separados do BotDeflector e podem conter nomes de host diferentes. Capture ambos da sessão do navegador autorizada.As salas de espera virtuais do Queue-it controlam o acesso durante picos de tráfego, como lançamentos de ingressos, lançamentos de produtos e eventos com estoque limitado. A etapa de CAPTCHA usada nas integrações atuais é mais do que uma imagem com caracteres: o BotDeflector fornece um fluxo de desafio que pode exigir um resultado de token ou coordenadas visuais.
Este guia atualizado explica os dois caminhos suportados com CapSolver. O caminho do token é a integração padrão para um flowToken capturado; o caminho do VisionEngine aplica-se quando o navegador expõe as imagens de primeiro plano e de fundo correspondentes. A documentação da API de CAPTCHA do CapSolver explica o ciclo de vida da tarefa compartilhado e o modelo de erro.
O fluxo atual do Queue-it deve ser modelado como BotDeflector, em vez de um formulário OCR autônomo. Um desafio BotDeflector contém entradas vinculadas à sessão, e a saída esperada depende do caminho de integração:
| Caminho | Tarefa do CapSolver | Dados de desafio necessários | Resultado |
|---|---|---|---|
| Modo de token | AntiBotdeflectorTaskProxyLess |
websiteURL, domain, flowToken |
solution.token após a verificação |
| Modo de reconhecimento visual | VisionEngine com module: "botdeflector" |
image, imageBackground, websiteURL |
solution.points na resposta de createTask |
Esses modos não são intercambiáveis. O modo de token não aceita uma imagem Base64 como substituto de flowToken, enquanto o modo de reconhecimento visual não retorna o token final do BotDeflector. Inspeccione a implementação do desafio em sua sessão do navegador autorizada e escolha o caminho que corresponda aos dados disponíveis lá.
As salas de espera do Queue-it e o solucionador de CAPTCHA também usam filas diferentes. A sala de espera determina quando um visitante pode continuar, enquanto a API do CapSolver processa uma tarefa de desafio. O glossário de filas de solicitação fornece um bom contexto para separar o enfileiramento da aplicação da verificação de tarefas da API.
Prepare o seguinte antes de criar uma tarefa:
domain do BotDeflector e o flowToken atual capturado da mesma sessão do navegador.https://api.capsolver.com.Não coloque uma chave de API de produção diretamente no código-fonte. Os exemplos usam YOUR_API_KEY, FLOW_TOKEN_FROM_PAGE e domínios de exemplo como placeholders.
O modo de token usa AntiBotdeflectorTaskProxyLess, depois verifica getTaskResult até que o CapSolver retorne solution.token. Os nomes dos campos e a forma da resposta seguem a documentação atual do modo de token do BotDeflector.
Capture esses valores da mesma sessão do navegador autorizada:
websiteURL: a URL completa da página onde o desafio do BotDeflector está sendo executado.domain: o domínio do BotDeflector exigido por esse desafio.flowToken: o token de desafio atual exposto pelo fluxo do BotDeflector.Não assuma que domain seja simplesmente o hostname de websiteURL. A definição oficial da tarefa trata-os como entradas separadas, e eles podem não usar o mesmo nome de domínio.
Envie os valores capturados para 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"
}
}'
Uma resposta bem-sucedida contém um ID de tarefa:
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Verifique errorId antes de armazenar taskId. Se a criação da tarefa falhar, registre errorCode e errorDescription sem gravar a chave da API ou o token completo do desafio.
Envie o ID de tarefa retornado para 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 verificando enquanto o status da resposta for processing. Pare imediatamente se a API retornar um errorId diferente de zero ou um status falho. Quando a tarefa estiver pronta, leia o token em solution.token:
{
"errorId": 0,
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
"status": "ready",
"solution": {
"token": "BOTDEFLECTOR_TOKEN"
}
}
Passe o token retornado para o ponto de integração do BotDeflector usado pela mesma sessão do Queue-it. Não crie um novo contexto de navegador entre capturar flowToken e aplicar o resultado. Mudanças de sessão, navegação ou atualizações do desafio podem invalidar o contexto e exigir uma nova tarefa.
O ponto exato de injeção ou submissão pertence à implementação do Queue-it que você está testando. Capture-o da sua própria integração de aplicativo em vez de depender de um seletor universal.
Resgate seu código promocional do CapSolver
Aumente seu orçamento de automação instantaneamente!
Use o código promocional CAP26 ao recarregar sua conta do CapSolver para obter um bônus adicional de 5% em cada recarga — sem limites.
Resgate-o agora no seu Painel do CapSolver
O exemplo a seguir cria uma tarefa do BotDeflector, verifica com um tempo limite limitado e retorna solution.token. Ele usa valores de desafio de exemplo, pois um flowToken real deve vir da sua sessão do 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 falhou: {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 falhou: {result.get('errorCode')} - "
f"{result.get('errorDescription')}"
)
if result.get("status") == "ready":
return result["solution"]["token"]
if result.get("status") == "failed":
raise RuntimeError("Tarefa do BotDeflector falhou")
raise TimeoutError(f"Tarefa do BotDeflector {task_id} excedeu {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 mais detalhes sobre variáveis de ambiente, tratamento de solicitações e estrutura reutilizável do cliente, consulte o guia de integração da API de CAPTCHA em Python.
Use o VisionEngine apenas quando o desafio expuser os ativos visuais exigidos pelo módulo de reconhecimento do BotDeflector. Este caminho aceita uma image de primeiro plano e uma imageBackground, depois retorna coordenadas de clique na resposta inicial de createTask.
A solicitação usa type: "VisionEngine" e 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/"
}
}'
De acordo com a documentação atual do VisionEngine, esta tarefa retorna dados de reconhecimento diretamente; não requer uma solicitação separada de getTaskResult. Uma resposta bem-sucedida tem esta forma:
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"status": "ready",
"solution": {
"points": [[123, 88], [244, 84], [174, 70]]
},
"taskId": "TASK_ID"
}
Aplicar os pontos retornados ao desafio visual na mesma escala espacial das imagens enviadas. Redimensionar, cortar ou usar uma captura de tela com dimensões diferentes pode mover as posições alvo e causar interações incorretas.
O VisionEngine lida com a etapa de reconhecimento; ele não substitui a gestão do estado do navegador ao redor. Se a página esperar uma troca subsequente de token, continue essa troca dentro da mesma sessão autorizada.
Confirme que o flowToken é atual e pertence à mesma sessão da página. Verifique também que websiteURL e domain foram capturados independentemente, em vez de construídos a partir de um único hostname. Use verificação limitada e pare em erros da API em vez de loop infinito.
Um token rejeitado indica comumente que o estado da página mudou após a captura das entradas do desafio. Mantenha cookies, contexto do navegador, URL e estado do desafio estáveis até que o resultado seja aplicado. Se o desafio for atualizado, capture um novo flowToken e crie uma nova tarefa.
Envie as imagens de desafio originais sem redimensioná-las e aplique as coordenadas contra as mesmas dimensões. Verifique se a automação do navegador introduziu escala de pixel de dispositivo, redimensionamento CSS ou uma captura de tela cortada.
Compare as versões do navegador, configurações de viewport, tempo, cookies e disponibilidade de segredos entre ambientes locais e de CI. Para uma lista de verificação mais ampla, consulte tratamento de CAPTCHA em QA automatizado.
Use automação do Queue-it e BotDeflector apenas para sistemas que você possui, ambientes de QA que você opera ou fluxos de trabalho para os quais o proprietário do site concedeu permissão explícita. Uma API de solução de CAPTCHA não concede direitos de acesso ou substitui os termos de um site, regras de fila, limites de taxa ou requisitos de autorização.
Mantenha o volume de testes limitado, evite eventos públicos de alta demanda, a menos que sejam parte de um teste aprovado e registre apenas os dados diagnósticos mínimos. Chaves de API, cookies, valores de flowToken e tokens retornados devem ser tratados como segredos e excluídos de capturas de tela, análises e logs de longo prazo.
O tratamento de CAPTCHA do Queue-it agora exige uma integração consciente do BotDeflector. Use AntiBotdeflectorTaskProxyLess para o fluxo de token da sessão e leia o resultado em solution.token; use VisionEngine com o módulo botdeflector apenas quando o desafio fornecer as imagens de primeiro plano e de fundo necessárias para o reconhecimento de coordenadas.
A regra de implementação principal é preservar o contexto do navegador original da captura do desafio até a submissão do resultado. Para testes autorizados do Queue-it, CapSolver fornece os dois caminhos documentados do BotDeflector através da mesma API de tarefa.
Q: Qual tipo de tarefa devo usar para o modo de token do BotDeflector do Queue-it?
Use AntiBotdeflectorTaskProxyLess quando você tiver websiteURL, domain e um flowToken atual. Verifique getTaskResult e leia o valor concluído em solution.token.
Q: O modo de token do BotDeflector do Queue-it exige uma imagem CAPTCHA?
Não. A tarefa do modo de token usa a URL da página, o domínio do BotDeflector e o flowToken. Se o desafio expuser em vez disso uma imagem de primeiro plano e uma imagem de fundo para reconhecimento visual, use o caminho separado do VisionEngine.
Q: Quando devo usar o módulo botdeflector do VisionEngine?
Use VisionEngine com module: "botdeflector" para a etapa de reconhecimento visual que fornece image e imageBackground. A API retorna solution.points diretamente na resposta de createTask.
Q: Por que o domínio do BotDeflector pode ser diferente da URL da página do Queue-it?
O BotDeflector define websiteURL e domain como campos separados da tarefa, então o serviço de desafio pode usar um hostname diferente da página visível do Queue-it. Capture os dois valores da integração ativa.
P: Posso reutilizar um token BotDeflector retornado em outra sessão de navegador?
Não se deve assumir reutilização. Aplicar o token ao mesmo fluxo de navegador autorizado que produziu as entradas do desafio; se a página ou o desafio for recarregado, capture novas entradas e crie uma nova tarefa.
P: O tratamento automático de CAPTCHA do Queue-it é permitido?
É apropriado apenas quando você possui o sistema ou tem autorização explícita para testá-lo ou automatizá-lo. Respeite os termos do site, controles de acesso, políticas de fila, limites de taxa e a lei aplicável.

Adélia Cruz
MCP Integration Engineer
Making CapSolver tools accessible through MCP.
SOBRE O AUTOR
Resolver um CAPTCHA de imagem no Node.js com a requisição ImageToTextTask documentada, codificação Base64 local, resultados de texto diretos e um cliente pequeno e testado.

Compare ImageToTextTask e VisionEngine pela entrada CAPTCHA, saída de reconhecimento, requisitos dos módulos e verificações de aplicação antes de escolher uma tarefa de resolução.
