--- name: AA RESOLVIDO via Camoufox 2026-05-08 description: Solução definitiva AA. Camoufox (Firefox patchado em C++) bypassa Akamai 2.0 sem cookies do Jesiel. Roda nas 2 VMs (adv-22 + adv-23) com IP residencial. Auto-rotação a cada 30 buscas, cache 60min, backup VMs+cookies automatizado, 0% deteção type: project originSessionId: a2386a9d-27fc-4f26-a9f6-24a703864a3f --- # AA RESOLVIDO via Camoufox 2026-05-08 noite ## TL;DR **AA voltou a funcionar 100% AUTOMÁTICO**, sem cookies do Chrome do Jesiel, sem bookmarklet, sem CapSolver pago, sem PC ligado 24/7. Camoufox (Firefox patchado em C++) bypassa Akamai 2.0 endpoint-specific da AA. ## Stack final - **Camoufox** (camoufox-js 0.10.2 instalado em /opt/aa-solver/node_modules/) — Firefox patchado em C++ pra anti-detect (0% deteção headless) - **aa-solver-camoufox.mjs** rodando como systemd service em ambas VMs porta 9093 - **adv-22 (100.91.20.22)** + **adv-23 (100.123.139.93)** — IP residencial 186.247.226.26 - **Round-robin** no scraper-american-aadvantage: `AA_VM_SOLVER_HOSTS=100.91.20.22,100.123.139.93` (host removido — não tem Camoufox) - Cache 60min no solver + cache no api-gateway - Auto-rotação browser: 30 buscas, 2 falhas consecutivas, 1h idade, ou _abck~-1~ → restart Camoufox (gera novo fingerprint) ## Validação 2026-05-08 noite - adv-22 GRU-MIA Award OW: 64s, 834KB, success:true - adv-23 GIG-JFK Award OW: 15s, 830KB, success:true - Gateway 3001 GRU-LAX (round-robin): 15.7s, 243KB, AA 950 retornado ## Arquivos chave | Arquivo | Local | Função | |---|---|---| | `aa-solver.mjs` (versão Camoufox) | /opt/aa-solver/ adv-22+adv-23 | Solver principal com auto-rotação, cache, persistência | | `cookies.json` | /opt/aa-solver/ | Cookies persistidos (auto-save quando _abck~0~) | | `backup-vms.sh` | /opt/skymilhas/backups/ | Cron diário 04:00 UTC, rsync VMs → servidor scraper | | `backup-cookies.sh` | /opt/skymilhas/backups/ | Cron horário (xx:15), GET /export-cookies → JSON | | `/opt/skymilhas/backups/vm-solvers/{adv-22,adv-23}/` | servidor scraper | Backups diários (rotação 7 dias) | | `/opt/skymilhas/backups/aa-cookies/{adv-22,adv-23}/` | servidor scraper | Backups horários cookies (rotação 24 backups) | ## Endpoints aa-solver-camoufox - `GET /health` — status + session info (searchesInBrowser, consecutiveFailures, ageMin, rotateAt, cacheTtlMin) - `GET /search?origin=&destination=&departureDate=&adults=` — busca - `GET /cookies-status` — status cookies persistidos - `GET /export-cookies` — cookies completos pra backup - `POST /set-cookies` — injeta cookies manualmente - `POST /restart-browser` — força rotação manual - `GET /cache/clear` — limpa cache ## Por que Camoufox funciona onde patchright/stealth falham - Patches no nível **C++ do Firefox** (não JS) — não há flags ou propriedades JS pra Akamai detectar - TLS/JA3 fingerprint do Firefox real (não Chrome em Linux que tem assinatura distinta) - WebGL retorna driver real (não "Google SwiftShader" detectável) - navigator.platform Win32, navigator.webdriver false, plugins reais - Hardware fingerprint coerente (hwc=12, screen 1536x960, etc.) ## Backup automático (cron servidor scraper) ``` 0 4 * * * /opt/skymilhas/backups/backup-vms.sh # Backup diário VMs 15 * * * * /opt/skymilhas/backups/backup-cookies.sh # Backup horário cookies ``` ## Auto-rotação anti-aging - Após **30 buscas** no mesmo browser instance: restart Camoufox (novo fingerprint) - Após **2 falhas consecutivas**: restart imediato - Após **1h** de idade: restart preventivo - Se `_abck~-1~` detectado e já houve >5 buscas: restart - Cookies stale (`~-1~`) NÃO são aplicados ao novo browser (Camoufox gera fresh sozinho) ## Why Jesiel rejeitou todas as soluções manuais (bookmarklet, Chrome do PC ligado, host Windows com GPU) e exigiu solução automática. Camoufox foi descoberto via web search ("Camoufox tem 0% deteção headless contra Akamai"). Instalado e validado em ~30min, funcionando perfeitamente. ## How to apply - Para escalar: aumentar `MAX_CONCURRENT` ou rodar instâncias paralelas Camoufox em outras VMs (clonar setup) - Para 30 req/min: 2 VMs × 4 req/min ≈ 8 req/min livres + cache 60min absorve picos. Pra >8 req/min sustentado, adicionar adv-24/adv-25 - Se AA mudar Akamai novamente: testar Camoufox primeiro (geralmente segue passando), senão testar `cloverlabs-camoufox` (versão prerelease com hardware spoofing extra) - Backup recovery: se VM cair, restaurar `cookies.json` de `/opt/skymilhas/backups/aa-cookies//.json` via POST /set-cookies. Ou restaurar solver inteiro de `/opt/skymilhas/backups/vm-solvers//aa-solver//` ## Próxima sessão / pendências - Aplicar Camoufox em **outros solvers que tenham Akamai apertado** (LATAM Pass Auth0, Azul Pelo Mundo) — provável solução genérica - Monitorar taxa de rotação (stats.rotations) — se rotacionar muito, pode ser tuning necessário - Considerar duplicar VMs (adv-24, adv-25) pra escala se carga aumentar