--- name: Sessão completa 2026-05-11 — arrumando scrapers description: 4 verdes confirmados OW+RT, fixes aplicados (timeouts + aliases hyphen), monitor AA 24/7, 10000 proxies free testados (0 passam) type: project originSessionId: c1338a0f-ba13-4e7c-92ae-b4bba3223bcf --- # Sessão 2026-05-11 — Estado final dos scrapers ## Status real (testado OW + RT com data fresh GRU-MIA / rotas operadas) ### 🟢 Funcionando 100% (4) | Airline | OW tempo/size | RT tempo/size | |---|---|---| | **Smiles** | 24s · 194KB | 28s · 316KB | | **TAP** GRU↔LIS | 38s · 1.7MB | 39s · 2.8MB | | **Azul TripStack** | 62s · 494KB | 80s · 887KB | | **GOL** GRU↔GIG interno | 104s · 118KB | 149s · 445KB | ### 🟡 Funcionando OW só (1) | Airline | OW | RT | |---|---|---| | **Livelo** | 112s · **11MB** (110 voos) | 90s · 1.5KB vazio — BUG parse return | ### 🟡 Intermitentes (2) | Airline | Problema | Estado | |---|---|---| | **Delta** | Scraper captura 100 voos em 52s no log mas continua até timeout interno 3min. Quando há cache (60min) retorna em 2s, 794KB. | Gateway timeout aumentado 180→200s nesta sessão; novo teste retornou 200 com 1.4KB vazio (data 2027-01-15) — diferente do cache de 100 voos. Bug captura interno persiste. | | **GOL internacional** | BFF retorna 406 Cloudflare-like em rota GRU-MIA mas funciona em GRU-GIG | Gateway timeout aumentado 90→180s nesta sessão | ### 🔴 Quebrados (4) | Airline | Causa raiz | Caminho | |---|---|---| | **Azul TudoAzul** | API endpoint v5/availability → 404 POST (provável v6+); solver VM:9095 com 0 success/3 tentativas; "Just a moment" do Cloudflare nos logs | Reverse engineer endpoint atual via DevTools real | | **Azul Pelo Mundo** | Akamai (mesma stack AA) | Esperar Akamai relaxar | | **LATAM Pass** | "Auth0 rate limit - conta temporariamente bloqueada" | Aguardar reset OU rotar conta | | **AA AAdvantage** | Akamai 2.0 — todos IPs próprios + WARP + Tor + ~10000 proxies free 403 | Monitor 24/7 instalado avisa quando relaxar | ### ⚠️ LATAM Money - Ativo no gateway, retorna "Nenhum voo disponível para esta rota/data" em GRU-MIA, GRU-SCL - Não confirmado: pode ser bug do scraper OU rota correta sem voos ## Patches aplicados (todos revertíveis) ### Gateway (servidor scraper 173.208.187.154 / 100.126.1.5) **Arquivo**: `/opt/skymilhas/server.js` **Backup**: `/opt/skymilhas/server.js.bak-pre-aliases-1778518142` Mudanças: 1. **AIRLINE_URLS hyphen aliases** (após linha 1494): 13 entries mapeando `azul-tudoazul → azul`, `azul-tripstack`, `azul-pelomundo → azul_interline`, `latam-money`, `latam-pass`, `latampass → latam_pass`, `tap-milesgo`, `delta-skymiles → delta`, `gol-smiles → gol`, `american-aadvantage → aadvantage`. 2. **AIRLINE_ALIASES** (linha ~3816): mesmos hyphens mapeando pra `SCRAPER_PORTS`. 3. **Timeouts por airline** (linha ~3843): - smiles, latam_pass_miles, aadvantage: 240s (igual antes) - azul, azul_tripstack, azul_interline: 200s (era 120 só azul) - gol: 180s (era 90) - delta: 200s (era default 180) - default: 180s (igual) Aplicar/reverter: `cp /opt/skymilhas/server.js.bak-pre-aliases-1778518142 /opt/skymilhas/server.js && pm2 restart api-gateway` ### adv-22 (Camoufox + Monitor) - **aa-solver.mjs com user_data_dir Camoufox persistent** (mantido desde sessão anterior) - **Monitor AA 24/7** em `/usr/local/bin/aa-monitor.sh` + cron `*/30 * * * *` - Testa com data aleatória 90-180 dias futuro (cache miss garantido) - State em `/var/log/aa-monitor/state.json` - Notifica via webhook em transição blocked→OK ## Tudo testado nesta sessão (e que falhou) | Tentativa anti-Akamai | Resultado | |---|---| | user_data_dir Camoufox | Akamai challenge `/K7oC1_/...` | | Scrapling 3 modos (Fetcher TLS, StealthyFetcher, StealthySession) | Todos AKAMAI_CHALLENGE | | Cloudflare WARP (3 IPs distintos rotação) | 403 (range 104.28/16 banido) | | Tor exit node | 403 | | **~10000 proxies free** (8 fontes: TheSpeedX, monosans, clarketm, geonode, proxyscrape, free-proxy-list, rituraj, spys) | **0 passaram** | | Subdomínios alternativos AA (aaflightservice, aapilots, aamaintweb) | 401 inicial, depois Akamai blacklista IP | | Endpoints api.aa.com mobile | 405 universal — exige x-api-key desconhecida | | Wayback/Google cache JS scrape | sem keys vazadas | ## Scrapling vs Cloudflare (descoberta lateral) PoC em adv-22 com `solve_cloudflare=True`: - **Azul homepage**: AKAMAI_CHALLENGE (Azul USA AKAMAI, não Cloudflare!) - **Azul search**: AKAMAI_CHALLENGE - **GOL homepage**: PASSED 1640KB (GOL não tem Cloudflare ativo na home) Implicação: Scrapling não ajuda em sites Akamai (AA, Azul). Pra GOL eventualmente pode ajudar no fluxo backend mas API é Angular-driven, não trivial. ## Próximos passos sugeridos 1. **Delta captura interna**: investigar por que após gateway timeout 200s o scraper retorna 1.4KB vazio. Logs mostram que ele capturou 100 voos em outra ocasião — algo intermitente. 2. **Livelo RT bug**: parse de retorno com `voos: []` quando dovrebbe ter dados — investigar `service.js` e parser. 3. **Azul TudoAzul**: capturar request real do site oficial via DevTools (você navega azul.com.br logado, F12 → Network → copy POST a `/availability`), eu replico no scraper. 4. **AA**: aguardar Akamai relaxar (monitor avisa) OU ativar Tailscale exit node celular OU reverse engineer app mobile. 5. **LATAM Money**: testar rota onde sabemos que opera (ex: GRU-LIM) pra confirmar se é bug ou rota. ## Arquivos importantes desta sessão - `C:\Users\Jesiel\Desktop\skymilhas-site\server.gateway.js` (cópia local pós-patch) - `C:\Users\Jesiel\Desktop\skymilhas-site\aa-monitor.sh` (cópia local) - `C:\Users\Jesiel\Desktop\skymilhas-site\scrapling_aa_poc.py` (PoC AA) - `C:\Users\Jesiel\Desktop\skymilhas-site\scrapling_azul_gol_poc.py` (PoC Cloudflare) - `C:\Users\Jesiel\Desktop\skymilhas-site\aa-solver.adv22.mjs` (cópia local com patch user_data_dir)