Agendar horários em plataformas de alta concorrência, como os portais consulares da BLS Spain, tornou-se um desafio operacional complexo. As vagas abrem em intervalos irregulares, esgotam em questão de segundos e os portais implementam camadas de proteção contra acessos massivos. Uma estratégia baseada em recarregamento manual da página é inviável, enquanto bots 100% automatizados frequentemente falham ao enfrentar desafios de autenticação de dois fatores (2FA) e proteções dinâmicas.
A solução técnica recomendada é o desenvolvimento de uma arquitetura de monitoramento contínuo combinada com semi-automação orientada a eventos (Human-in-the-Loop). Neste artigo, detalharemos como arquitetar esse sistema em Python de maneira estável, escalável e com baixo consumo de recursos.
1. A Arquitetura do Sistema: Monitoramento vs. Execução
Dividir o bot em duas responsabilidades é essencial para a resiliência do sistema:
- Worker de Monitoramento (Watcher): Um processo leve e assíncrono que verifica a disponibilidade de datas sem renderizar interface gráfica completa, poupando CPU e memória.
- Módulo de Semi-Automação (Executor): Uma instância de automação de navegador (via Playwright ou Selenium) engatilhada apenas quando uma vaga real for identificada, pré-preenchendo dados cadastrais e delegando etapas sensíveis (como CAPTCHA e SMS OTP) ao usuário.
2. Requisições Resilientes com Asyncio e HTTP/2
Para o monitoramento periódico, o uso de httpx em conjunto com asyncio oferece suporte nativo a HTTP/2 e execução assíncrona não bloqueante. O ciclo precisa gerenciar sessões, cabeçalhos dinâmicos (User-Agent, Accept-Language, Referer) e tratamento de backoff exponencial para contornar bloqueios por taxa de requisições (rate limits).
python
import asyncio
import httpx
import logging
logging.basicConfig(level=logging.INFO)
CHECK_URL = “https://example-consular-portal.com/api/get-available-slots”
HEADERS = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36”,
“Accept”: “application/json, text/plain, /“,
}
async def checkavailability(client: httpx.AsyncClient) -> bool:
try:
response = await client.get(CHECKURL, headers=HEADERS, timeout=10.0)
if response.statuscode == 200:
data = response.json()
return data.get(“hasslots”, False)
except httpx.RequestError as exc:
logging.error(f”Erro de rede durante checagem: {exc}”)
return False
async def monitorloop():
async with httpx.AsyncClient(http2=True) as client:
while True:
available = await checkavailability(client)
if available:
logging.info(“Vaga encontrada! Disparando pipeline de notificação…”)
# Disparo de notificação e acionamento da automação
break
await asyncio.sleep(45) # Intervalo seguro para evitar bloqueio de IP
3. Integração com Alertas em Tempo Real
Quando o watcher identifica uma vaga válida, cada segundo conta. A rota mais eficiente de notificação é o envio de alertas push instantâneos via webhook ou integração com a API de bots do Telegram. A mensagem deve conter os detalhes do agendamento (categoria do visto, data disponível e centro consular) acompanhada de um link direto para abertura imediata do fluxo.
4. Semi-Automação com Playwright: O Modelo Human-in-the-Loop
Como especialista em IA e automação de rotinas digitais, observo com frequência projetos que falham ao tentar eliminar completamente a intervenção humana em fluxos que possuem etapas criptográficas ou envio de senhas descartáveis por SMS. O modelo semi-automatizado resolve esse gargalo:
- Injeção de Sessão: O Playwright é inicializado com cookies e contexto pré-autenticados.
- Preenchimento Pré-programado: Campos repetitivos (nome, número de passaporte, tipo de visto) são preenchidos via injeção de DOM de forma rápida e segura.
- Pausa Estratégica para o Usuário: O script aguarda a resolução do desafio interativo (ex.: CAPTCHA complexo ou inserção do código OTP recebido no telefone) pelo próprio requerente, finalizando o envio do formulário com taxa de sucesso significativamente superior.
5. Boas Práticas de Operação
- Gerenciamento de Proxies: Para sistemas que implementam verificação geográfica ou limites rigorosos por IP, a alternância de proxies residenciais dedicados assegura a continuidade do serviço sem falsos positivos.
- Persistência de Logs: Registre respostas e códigos de status em disco ou banco leve (SQLite) para identificar mudanças repentinas na API do portal-alvo.
Conclusão e Consultoria Técnica
Construir scripts de automação para serviços sensíveis exige domínio de arquitetura assíncrona, engenharia reversa de APIs e mitigação de defesas de rede. Se a sua empresa necessita desenvolver pipelines robustos de extração de dados, automação de processos web ou integração de inteligência artificial em rotinas críticas, conte com a nossa consultoria para desenhar soluções estáveis e sob medida para sua necessidade.


