Garimpeiro: Microserviço Autônomo de Web Scraping Anti-Detecção
Microserviço escalável em FastAPI e Playwright para extração contínua de notícias. Utiliza rotatividade de proxies, técnicas avançadas de anti-detecção e resiliência via buffer PostgreSQL.
#Telas do Sistema
O Garimpeiro é um microserviço de web scraping de alta performance construído para alimentar a plataforma Lupa (Nave-Mãe). Desenvolvido para operar de forma 100% autônoma, ele gerencia rotinas complexas de navegação, extração de dados e sincronização via API REST, contornando bloqueios e garantindo a integridade dos dados coletados.
O sistema foi arquitetado para resolver o desafio de extrair grandes volumes de artigos de portais de notícias de forma contínua, lidando com paywalls, rate limits e sistemas de detecção de bots (Cloudflare, Datadome, etc.).
Principais Funcionalidades e Soluções Técnicas
- Navegação Headless Avançada: Utiliza Playwright com injeção de scripts de anti-fingerprint (mascarando
navigator.webdriver, WebGL, plugins e variáveis de ambiente) e simulação de comportamento humano (delays variáveis, scroll orgânico e rotação de User-Agents recentes). - Orquestração e Concorrência: Implementado com FastAPI e controle rígido de concorrência usando semáforos, permitindo escalar o número de instâncias de browsers simultâneos (
MAX_CONCURRENT_BROWSERS) conforme a RAM disponível na VPS. - Agendamento Dinâmico: Integração com APScheduler para consultar dinamicamente as configurações de raspagem na aplicação principal (Django) e agendar execuções distribuídas por veículo.
- Resiliência e Buffer Local: Para evitar perda de dados em caso de instabilidade da API principal, os artigos extraídos são salvos primeiro em um banco local PostgreSQL (via SQLAlchemy 2.0 Async), atuando como uma fila tolerante a falhas com sistema de retentativas automáticas (backoff exponencial).
- Gerenciamento Inteligente de Proxies: Sistema de fallback em cascata (Sem Proxy -> Datacenter -> Residencial) que rotaciona e isola automaticamente IPs bloqueados.
- Observabilidade: Geração de logs estruturados (JSON via
structlog) e endpoints dedicados de health check e métricas em tempo real para monitoramento do pool de browsers e da taxa de sucesso de sincronização.
O Impacto
O Garimpeiro transformou um processo frágil de coleta de dados em uma esteira robusta e escalável. Com a configuração padrão consumindo apenas ~600MB de RAM, ele é capaz de processar dezenas de portais por hora, entregando dados limpos e estruturados para a plataforma de news clipping de forma silenciosa e ininterrupta.