Todas as fases
FASE 430 min

Quebrar o Cloacker (★ joia da coroa)

Cloacker é o porteiro da landing. Quando ele detecta bot, desktop ou IP errado, te joga na 'white page', uma versão sanitizada, inofensiva. Aqui tu aprende a chegar na página real, do mesmo jeito que o lead vê.

⚠ Avisos importantes

1. Quebra de cloacker é tecnicamente possível, mas o objetivo aqui é análise competitiva legítima. Ver o que já é público pra modelagem, só isso. Não usa pra reverse-engineer fraude nem pra copiar copy literal.

2. Respeita ToS do site e robots.txt. Não scrapeia em volume. Uma visita pra capturar é uma coisa, bombardear o servidor é outra completamente diferente.

3. NÃO persiste cookie ou sessão alheia. Cada captura usa contexto novo. Beleza?

4. Se o site tem login ou paywall, tu NÃO bypassa. Isso é violação clara.

Como o cloacker te detecta (entender pra contornar)

O cloacker do player olha um monte de sinal. Se um falha, ele desconfia. Se vários falham, ele te joga pra white page. Simples assim.

User-Agent

Mobile (iPhone, Android Chrome) vs Desktop. Bots usam UA de headless Chrome, detectado.

IP geográfico

Se ad foi servido pra BR mas IP é US, white page. Datacenter IP (AWS, GCP) = bot certo.

Geolocation API

navigator.geolocation. Se pedir e você negar/dar coords inconsistentes com IP, suspeito.

Locale + Timezone

navigator.language ≠ pt-BR ou Date().getTimezoneOffset() ≠ -180 com IP brasileiro = mismatch.

Referer

Veio direto digitando a URL? Suspeito. Veio do Facebook/Instagram? OK.

Touch + screen size

Mobile tem touch + viewport pequena. Desktop não tem touch. Headless mente sobre isso.

Webdriver flag

navigator.webdriver === true em browsers automatizados. Tem que esconder.

Browser fingerprint

Canvas fingerprint, audio fingerprint, fonts instaladas, plugins. Headless chama atenção.

Click query params

Ad real chega com gclid/fbclid/utm_*. URL limpa = veio digitando = bot.

Tempo na página

Bot que entra e sai em 200ms é flag. Real user fica 3-30s antes do scroll.

A receita: Playwright com perfil mobile real

prompt· Prompt, Playwright com mobile emulation completa
Quero acessar a landing real de um anúncio que aparece em mobile no Brasil. O site tem cloacker e joga pra white page se detectar bot ou desktop.

URL do ad: [URL_DESTINO_DO_AD]
Click ID do ad (se tiver): fbclid=[VALOR] ou gclid=[VALOR]

Use o Playwright MCP. Configura o contexto EXATAMENTE assim:

1. Device emulation: 'iPhone 13' (já vem com viewport, userAgent, hasTouch, deviceScaleFactor)
2. Locale: 'pt-BR'
3. Timezone: 'America/Sao_Paulo'
4. Geolocation: lat -23.5505, lng -46.6333 (São Paulo)
5. Permissions: ['geolocation']
6. ExtraHTTPHeaders: { 'Accept-Language': 'pt-BR,pt;q=0.9,en;q=0.8' }
7. Referer: 'https://l.facebook.com/' (ou 'https://www.instagram.com/' se ad foi do IG)

Antes de navegar, executa init script pra esconder webdriver:
  Object.defineProperty(navigator, 'webdriver', { get: () => undefined });

Navega pra URL do ad mantendo os query params (fbclid, gclid, utm_*).

Espera 3-5 segundos antes de qualquer ação (real user behavior).

Tira screenshot full page logo que carregar.

Salva o HTML completo (page.content()).

Faz scroll suave até o final (scroll incremental, 500px por vez, 800ms de pausa).

Tira screenshot full page de novo no final.

Captura todas as request URLs (page.on('request')), vou querer ver pixels, redirects, m3u8 de VSL etc.

Devolve:
- screenshot-inicial.png
- screenshot-final.png
- page.html
- requests.json (lista de URLs requisitadas)
- meta.json (URL final, status, redirects que ocorreram)

Quando ainda assim cair na white page

1

Verifica se o destino real é por geo específica

Player BR pode servir landing real só pra IP de SP/RJ. Tenta com geo de outra cidade, bora:

prompt
Refaça a captura com geolocation diferentes:

1. São Paulo: lat -23.5505, lng -46.6333
2. Rio de Janeiro: lat -22.9068, lng -43.1729
3. Belo Horizonte: lat -19.9167, lng -43.9345
4. Recife: lat -8.0476, lng -34.8770
5. Porto Alegre: lat -30.0346, lng -51.2177

Compara os 5 HTML resultantes. Se algum bate com o ad e os outros forem white page, identificou que o cloacker é geo-específico.
2

Tenta com IP residencial (proxy)

Se geo no browser não basta, o cloacker tá olhando IP real. Aí precisa de proxy residencial, sem jeito.

prompt
Pra esse player o cloacker exige IP residencial brasileiro. Use o Playwright MCP com proxy:

Opções de proxy residencial (escolha uma, você precisa ter conta):
- Bright Data: brd-customer-XX-zone-residential:senha@brd.superproxy.io:22225
- Smartproxy: user-spXX:senha@gate.smartproxy.com:7000
- Oxylabs: customer-XX:senha@pr.oxylabs.io:7777
- IPRoyal: user-XX:senha@geo.iproyal.com:12321

Configuração no Playwright:
{
  proxy: {
    server: 'http://gate.smartproxy.com:7000',
    username: 'user-spXX-country-br',
    password: 'XXX'
  }
}

Refaz a captura com proxy BR ativo. Mantém todo o resto (mobile, locale, geo, referer).

Sobre proxies residenciais

Não são grátis, cara. Tem free trial (Bright Data dá US$ 5, Smartproxy 3 dias). Pra trabalho profissional, conta com US$ 50-100/mês. Faz a conta.

Alternativa mais barata: Mullvad VPN (US$ 5/mês, IP residencial em alguns gateways) ou Webshare (US$ 6/mês, 100 proxies BR).

3

Camoufox, o browser anti-detect

Quando o cloacker é nível pro (Cloudflare WAF, FingerprintJS), o Playwright puro não passa. Aí entra o Camoufox, um fork do Firefox que faz fingerprint spoofing nível kernel. Tá brabo.

bash· Setup Camoufox
# Python
pip install camoufox[geoip]
python -m camoufox fetch  # baixa o binário

# Uso
python -c "
from camoufox.sync_api import Camoufox

with Camoufox(
    geoip=True,
    locale='pt-BR',
    os='ios',
    humanize=True
) as browser:
    page = browser.new_page()
    page.goto('URL_AD')
    page.screenshot(path='cap.png', full_page=True)
"
4

Última cartada: pega screenshot via Wayback Machine

Se TUDO falhar (cloacker mil graus), tenta o Wayback. Quem rodou ad antes pode ter sido capturado pelo crawler dele. Vale a tentativa.

prompt
Use o Playwright MCP para acessar:
https://web.archive.org/web/2026*/[DOMINIO]

Lista todas as snapshots disponíveis. Abre as 3 mais recentes e tira screenshot de cada uma.

Compara: alguma delas bate com o tipo de oferta do ad? Se sim, é a landing real (ou versão antiga dela).

Detector de cloacker

prompt· Prompt, Detectar se o site usa cloacker
Suspeito que [DOMINIO] usa cloacker. Quero confirmar.

Use o Playwright MCP. Faça duas capturas em paralelo da mesma URL:

CAPTURA A: Perfil "real user":
- Device: iPhone 13
- Locale: pt-BR
- Timezone: America/Sao_Paulo
- Geolocation: SP
- Referer: https://l.facebook.com/
- (com proxy residencial BR se tiver)

CAPTURA B: Perfil "bot suspeito":
- Device: Desktop padrão Chrome
- Locale: en-US
- Timezone: UTC
- Sem geo
- Referer: vazio
- IP datacenter (sem proxy)

Compara os dois HTMLs:
- Diferença % no length do HTML
- Headlines visíveis em cada
- URLs de redirect que aconteceram
- Se a URL final é a mesma ou diferente

Se diferentes: tem cloacker. Confirma com um print lado a lado.
Se iguais: sem cloacker, pode capturar normal.

Fase 4 fechada quando...

Tu consegue acessar a landing real de pelo menos 5 players Tier 1 (não a white page). Tem screenshot full-page de cada uma, HTML salvo e lista de requests. Fechou?