CapSolver
Pattern Recognition Specialist

Visa appointment slots on embassy and consulate portals disappear within minutes. AI agents that monitor these portals for availability need reliable access to appointment data — but government visa systems deploy aggressive CAPTCHA protection that blocks automated monitoring. This guide shows how to build a visa appointment data collection pipeline for AI agents using CapSolver to handle verification challenges on embassy portals, visa scheduling systems, and immigration databases.
Os portais de visto atendem milhões de candidatos em todo o mundo, e consulados populares têm uma relação extremamente alta entre demanda e oferta. Os horários para vistos B1/B2 dos EUA, vistos turísticos Schengen e vistos de visitantes do Reino Unido frequentemente se esgotam meses à frente, com horários disponíveis aparecendo de forma imprevisível.
Agentes de IA que monitoram esses portais oferecem valor significativo: eles verificam a disponibilidade em intervalos regulares e alertam os usuários quando horários abrem. No entanto, todos os sistemas de agendamento de visto importantes implementam proteção CAPTCHA. Documentação de gerenciamento de bots da Cloudflare explica que os portais governamentais são entre os sites mais protegidos, usando várias camadas de verificação para gerenciar o tráfego automatizado.
Tipos comuns de CAPTCHA em portais de visto incluem reCAPTCHA v2 nas páginas de login e pesquisa, CAPTCHAs baseados em imagens nas telas de seleção de horário, Cloudflare Turnstile em interfaces modernas de portal e desafios JavaScript personalizados em sistemas legados. Sem resolução automatizada, um agente de IA não consegue manter a monitoração contínua - ele trava na primeira barreira de verificação e perde horários sensíveis ao tempo.
Prepare esses componentes:
aiohttp, requests e de agendamentoInstale as dependências:
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install aiohttp schedule python-telegram-bot
Defina sua chave de API:
export CAPSOLVER_API_KEY="sua-chave-de-api-do-capsolver"
Revise os termos de serviço de cada portal de visto que você planeja monitorar. A maioria dos portais permite verificar a disponibilidade para uso pessoal, mas restringe a venda comercial de horários.
Audite cada portal de visto para identificar os tipos de CAPTCHA e condições de disparo:
VISA_PORTALS = {
"us_visa_cgifederal": {
"name": "Visto dos EUA (CGI Federal)",
"url": "https://www.usvisascheduling.com",
"captcha_type": "ReCaptchaV2TaskProxyLess",
"site_key": "6Lc...", # Identifique via inspeção no navegador
"trigger": "página_de_login_e_seleção_de_data",
"check_interval_minutes": 10
},
"vfs_global_schengen": {
"name": "VFS Global (Schengen)",
"url": "https://visa.vfsglobal.com",
"captcha_type": "AntiTurnstileTaskProxyLess",
"site_key": "0x4A...",
"trigger": "pesquisa_de_agendamento",
"check_interval_minutes": 15
},
"uk_visa_tls": {
"name": "Visto do Reino Unido (TLS Contact)",
"url": "https://visas-immigration.service.gov.uk",
"captcha_type": "ReCaptchaV2TaskProxyLess",
"site_key": "6Le...",
"trigger": "carregamento_de_toda_página",
"check_interval_minutes": 10
}
}
Use a extensão do CapSolver para identificar parâmetros de CAPTCHA em cada portal. Os sites governamentais atualizam frequentemente suas proteções, então verifique os parâmetros mensalmente.
Cada portal de visto tem comportamento de CAPTCHA único. Alguns desafiam apenas no login, outros em cada carregamento de página. Compreender os padrões de disparo ajuda a minimizar os custos de resolução, evitando desafios desnecessários por meio de persistência de sessão e gerenciamento de cookies.
Crie um motor de monitoração assíncrono que lide com desafios CAPTCHA e extraia a disponibilidade de horários:
import asyncio
import aiohttp
import time
from capsolver_core import create_capsolver, CaptchaType, CaptchaInfo
class VisaAppointmentMonitor:
"""Monitorar a disponibilidade de horários de visto com tratamento de CAPTCHA."""
def __init__(self, api_key: str):
self.cap = create_capsolver(api_key=api_key)
self.session = None
self.last_check = {}
async def solve_portal_captcha(self, portal_config: dict) -> str:
"""Resolver CAPTCHA em um portal de visto e retornar o token."""
captcha_type_map = {
"ReCaptchaV2TaskProxyLess": CaptchaType.RECAPTCHA_V2,
"AntiTurnstileTaskProxyLess": CaptchaType.CLOUDFLARE,
"ReCaptchaV3TaskProxyLess": CaptchaType.RECAPTCHA_V3
}
info = CaptchaInfo(
type=captcha_type_map[portal_config["captcha_type"]],
website_url=portal_config["url"],
website_key=portal_config["site_key"]
)
solution = await self.cap.solve(info)
return solution.token
async def check_availability(self, portal_key: str) -> dict:
"""Verificar a disponibilidade de horários em um portal específico."""
portal = VISA_PORTALS[portal_key]
try:
# Resolver CAPTCHA para acessar o portal
token = await self.solve_portal_captcha(portal)
# Usar token para autenticar e verificar horários
# (Implementação varia por portal)
availability = await self._fetch_slots(portal, token)
self.last_check[portal_key] = {
"timestamp": time.time(),
"slots_found": len(availability),
"status": "success"
}
return {
"portal": portal["name"],
"available_slots": availability,
"checked_at": time.strftime("%Y-%m-%d %H:%M:%S")
}
except Exception as e:
self.last_check[portal_key] = {
"timestamp": time.time(),
"status": "error",
"error": str(e)
}
return {"portal": portal["name"], "error": str(e)}
async def _fetch_slots(self, portal: dict, captcha_token: str) -> list:
"""Buscar horários disponíveis usando o token resolvido."""
if not self.session:
self.session = aiohttp.ClientSession()
# Enviar token de CAPTCHA e recuperar dados de agendamento
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {
"g-recaptcha-response": captcha_token,
# Campos adicionais de formulário específicos para cada portal
}
async with self.session.post(
f"{portal['url']}/appointment/check",
data=data, headers=headers
) as resp:
result = await resp.json()
return result.get("available_dates", [])
async def close(self):
if self.session:
await self.session.close()
await self.cap.aclose()
A API do CapSolver suporta submissões concorrentes de tarefas, então você pode monitorar múltiplos consulados simultaneamente sem limites de taxa no lado da resolução.
Os horários de visto são extremamente sensíveis ao tempo. Um horário que abre às 3h da manhã pode ser reservado até 3h05. Seu motor de monitoração precisa verificar com frequência, resolver CAPTCHAs rapidamente (3-12 segundos) e alertar imediatamente quando horários aparecerem.
Configure monitoramento contínuo com notificações quando horários ficarem disponíveis:
import asyncio
from datetime import datetime
class VisaSlotAlertSystem:
"""Monitoramento contínuo com alertas instantâneos."""
def __init__(self, monitor: VisaAppointmentMonitor):
self.monitor = monitor
self.alert_callbacks = []
def add_alert(self, callback):
self.alert_callbacks.append(callback)
async def run_monitoring_loop(self, portals: list, interval_minutes: int = 10):
"""Executar monitoramento contínuo para portais especificados."""
print(f"Iniciando monitoramento de visto para {len(portals)} portais...")
while True:
for portal_key in portals:
result = await self.monitor.check_availability(portal_key)
if result.get("available_slots"):
# Horários encontrados - disparar alertas
await self._send_alerts(result)
print(f"[ALERTA] Horários encontrados no {result['portal']}!")
else:
print(f"[{datetime.now().strftime('%H:%M')}] "
f"{result.get('portal', portal_key)}: Nenhum horário")
# Pequena pausa entre verificações de portal
await asyncio.sleep(5)
# Esperar antes da próxima iteração
await asyncio.sleep(interval_minutes * 60)
async def _send_alerts(self, result):
for callback in self.alert_callbacks:
await callback(result)
# Exemplo de notificação via Telegram
async def telegram_alert(result):
"""Enviar notificação do Telegram quando horários estiverem disponíveis."""
message = (
f"🎫 Horário de Visto Disponível!\n"
f"Portal: {result['portal']}\n"
f"Horários: {len(result['available_slots'])}\n"
f"Datas: {', '.join(result['available_slots'][:5])}\n"
f"Verificado: {result['checked_at']}"
)
# Enviar via API do Bot do Telegram
print(message)
# Executar o sistema
async def main():
monitor = VisaAppointmentMonitor(api_key="SUA_CHAVE_DE_API_DO_CAPSOLVER")
alert_system = VisaSlotAlertSystem(monitor)
alert_system.add_alert(telegram_alert)
await alert_system.run_monitoring_loop(
portals=["us_visa_cgifederal", "vfs_global_schengen"],
interval_minutes=10
)
asyncio.run(main())
Executar monitoramento contínuo de visto requer equilibrar a frequência de verificação contra os custos de resolução de CAPTCHA:
| Frequência de verificação | CAPTCHAs mensais (1 portal) | Custo estimado | Melhor para |
|---|---|---|---|
| A cada 5 minutos | ~8.640 | $17-26 | Horários de alta demanda (US H1B) |
| A cada 10 minutos | ~4.320 | $9-13 | Monitoramento padrão |
| A cada 15 minutos | ~2.880 | $6-9 | Agendamentos de baixa urgência |
| A cada 30 minutos | ~1.440 | $3-5 | Planejamento de longo prazo |
Estratégias de otimização de custo:
Claim Your Bonus Code: Use o código WEBS no Painel do CapSolver para obter um bônus adicional de 5% em cada recarga. Ideal para sistemas de monitoramento de visto que precisam de resolução contínua de CAPTCHA.
O monitoramento de horários de visto opera em uma área sensível. Siga estas diretrizes:
Guia do Departamento de Estado dos EUA e autoridades similares fornecem informações sobre práticas legítimas de agendamento. A Perguntas Frequentes do CapSolver sobre uso responsável aborda considerações adicionais de conformidade para acesso automatizado a portais.
Para padrões de implementação técnica, o guia de raspagem de web do CapSolver e documentação de resolução de Cloudflare Turnstile fornecem exemplos de código adicionais aplicáveis ao monitoramento de portais de visto.
Construir uma pipeline de coleta de dados de agendamento de visto para agentes de IA requer perfilar os sistemas CAPTCHA dos portais, implementar resolução assíncrona com o CapSolver, configurar monitoramento programado com alertas instantâneos e otimizar para eficiência de custo. A combinação da resolução rápida do CapSolver (3-12 segundos) e estratégias de persistência de sessão permite monitoramento confiável a custos razoáveis.
Comece com um portal, valide sua integração de resolução de CAPTCHA, depois expanda para outros consulados. Configure alertas para notificação imediata quando horários aparecerem e sempre opere dentro dos limites dos termos de serviço dos portais e diretrizes de uso responsável.
Este método funciona para portais que usam sistemas de CAPTCHA padrão: visto dos EUA (CGI Federal), VFS Global (países Schengen), TLS Contact (Reino Unido, diversos), Canadá (IRCC) e Austrália (ImmiAccount). Cada portal requer identificação específica de parâmetros de CAPTCHA, mas o mecanismo de resolução é o mesmo em todos eles.
A velocidade de detecção depende do seu intervalo de verificação. Com intervalos de 5 minutos e resolução de CAPTCHA de 3 a 12 segundos, você pode detectar novos horários dentro de 5 a 6 minutos após ficarem disponíveis. Para horários de alta demanda, isso é rápido o suficiente para reservar antes que desapareçam.
Com um intervalo de verificação de 10 minutos, você precisa de aproximadamente 4.320 resoluções de CAPTCHA por mês. A um custo de $2-3 por 1.000 resoluções de reCAPTCHA v2, o custo mensal é aproximadamente $9-13 por portal. Monitorar 3 consulados custa $27-39 por mês — significativamente menos do que perder uma consulta e esperar meses pelo próximo horário.
Sim. A arquitetura assíncrona suporta a monitoração simultânea de múltiplos portais. A API da CapSolver lida com milhares de tarefas de resolução simultâneas. Execute loops de monitoração separados para cada portal ou faça verificações em lote dentro de um único loop com pequenas pausas entre as solicitações.
Monitorar a disponibilidade de horários acessíveis publicamente para fins de reserva pessoal é geralmente permitido. No entanto, a venda comercial de horários, sobrecarregar os servidores do portal e acessar dados não públicos podem violar os termos de serviço ou leis locais. Sempre verifique os termos do portal específico e as regulamentações locais antes de implementar o monitoramento.
Aprenda arquitetura de raspagem web escalável em Rust com reqwest, scraper, raspagem assíncrona, raspagem de navegador headless, rotação de proxies e tratamento de CAPTCHA compatível.

Compare o Selenium vs Puppeteer para resolver CAPTCHA. Descubra benchmarks de desempenho, notas de estabilidade e como integrar o CapSolver para o máximo de sucesso.
