---
name: Azul Pelo Mundo Solver na ADV-22 (parcial) 2026-04-30
description: Solver Azul instalado na VM, Xvfb+Chrome bypassa Akamai geral, mas endpoint /catalog/api/v1/availability retorna 403 Access Denied específico
type: project
originSessionId: 4f44a92f-ea25-4ff4-b6f6-022e683fdd40
---
# Azul Pelo Mundo no ADV-22 — bloqueio em /availability — 2026-04-30
## Status
✅ **Solver instalado e funcional até o click "Buscar"**:
- Em `/opt/azul-solver/` na VM ADV-22, porta 9091
- systemd: `azul-solver.service` (depende de `xvfb-99.service`)
- Chrome em CDP 9223 (perfil `/home/customer/azul-chrome-profile`)
- Xvfb display :99 (1920x1080x24) — Chrome roda **headed** virtual, NÃO headless
- maxConcurrent: 2
✅ **Akamai geral bypassado**:
- Homepage `https://azulpelomundo.voeazul.com.br/` retorna 200 + cookies (`_abck, bm_*, ak_bmsc, dtCookie, rxVisitor`)
- 15 cookies estabelecidos
- IP residencial BH (186.247.226.26) ajuda mas Xvfb foi a chave
✅ **Form fill completo**:
- Click `#btnOneWay` (ou `#btnRoundTrip`)
- Autocomplete origem `#autocompleteFlightOrigin` → click `li.airport` com `(IATA)` exato
- Autocomplete destino `#autocompleteFlightDestination` → click `li.airport` com `(IATA)` exato
- Calendar: click `input[placeholder="Selecione a data"]` → navega via `.popover-title .pull-right` até mês alvo → click `
` com texto do dia
- Click `#btnSearchTickets`
❌ **BLOQUEIO**:
- Após click Buscar, navegador vai pra `https://azulpelomundo.voeazul.com.br/flights/RT/GRU/MIA/-/-/.../1/0/0/0/0/ALL/F/ECONOMY/...`
- Faz request: `GET /catalog/api/v1/availability?tripType=ROUND_TRIP&origin=GRU&destination=MIA&adult=1&...`
- **Resposta: HTTP 403 Access Denied (Akamai)**
- Mesmo com todos cookies + Chrome real + interação humana
## Diagnóstico
O Akamai do `azulpelomundo.voeazul.com.br/catalog/api/v1/availability` tem **rule extra de check** que não está só em fingerprint browser nem só em IP. Provavelmente:
- Validação de token `_abck` mais rigorosa nesse endpoint (requer score "challenge-passed", não só "challenge-not-required")
- Telemetria do p.js precisa ter pontuação humana específica
- Headers como `Sec-CH-UA-*` ou referer podem precisar match exato
## Para retomar
Arquivos:
- `tap-local/adv22-solver/azul-solver.mjs` — solver com flow homepage→form→click Buscar
- `tap-local/adv22-solver/azul-solver.service` — systemd
- `tap-local/adv22-solver/xvfb-99.service` — Xvfb display virtual
- `tap-local/adv22-solver/azul-probe*.mjs` — scripts de debug usados na investigação
Endpoint da API real: `/catalog/api/v1/availability?tripType=ROUND_TRIP&origin=GRU&destination=MIA&adult=1&child=0&infant=0&typeOfFlight=...`
## Próximas opções
A. Trocar Playwright por **patchright** ou **puppeteer-real-browser** (libs anti-detect mais agressivas) — 1-2h, chance média ❌ TESTADO 2026-04-30 — 403 igual
B. Implementar **Akamai _abck cookie solver dedicado** — executa p.js completo, gera cookie challenge-passed score válido — 6-10h, chance alta
C. **Manter scraper antigo offline** (igual antes da mudança) — Azul Pelo Mundo continua bloqueado
## Investigação 2026-04-30 conclusão técnica final
Testado tudo que o projeto tem disponível (sem custo extra):
- Chrome+Xvfb regular (VM): 403
- patchright (Chromium anti-detect): 403
- puppeteer-real-browser (lib usada por Delta/AAdvantage/Azul): 403
- camoufox (Firefox modificado): home Access Denied (pior)
- Akamai Solver local 40510: "Could not get cookies"
- curl-impersonate-chrome 116/110/107 (emula Windows TLS+HTTP2 fingerprint): 403 nas 3 versões
URL real da API descoberta (Jesiel passou via DevTools): `/catalog/api/v1/availability?&tripType=ONE_WAY&origin=GRU&destination=MIA&adult=1&child=0&infant=0&typeOfFlight=ALL&companiesIdentity=-&cabinCategory=ECONOMY&departureDateTime=2026-05-27T00:00:00-03:00&page=1`
Headers/cookies idênticos ao request do PC do Jesiel (que passa) ainda dão 403 da VM.
**Diagnóstico final**: Akamai do azulpelomundo `/availability` faz IP-binding interno no cookie `_abck`. Cookies gerados no IP da VM (186.247.226.26 BH) são rejeitados pra esse endpoint específico. Provavelmente o IP foi flagged por requests prévias de bot. Outros IPs residenciais BR podem ter o mesmo problema.
**Única solução conhecida**: Chrome humano no PC do Jesiel (modelo TAP-RESOLVED). Mesma abordagem do TAP em produção.
**Why:** Jesiel quer Azul Pelo Mundo funcionando como TAP. Akamai geral foi bypassado mas endpoint /availability tem check extra.
**How to apply:** se retomar, foco no /availability — não vale gastar tempo em form fill (já funciona). Investigar diferenças de headers/cookies entre browser real (que passa) e o Chrome solver (que bate 403).
|