Scarnox · Blog

Navegador headless detectado: causas e soluções (2026)

Um site exibe "headless browser detected", ou serve discretamente uma página diferente para o seu navegador automatizado. Os sites fazem isso porque um navegador headless roda sem janela e, muitas vezes, se diferencia de um navegador de desktop comum em pequenos detalhes mensuráveis. Este guia explica quais sinais os sites observam, como diagnosticar o que o seu próprio navegador está expondo e como é uma correção sensata. Também cobre o ponto em que a resposta certa é parar, ou tratar a verificação como uma etapa de captcha.

Por que os sites verificam navegadores headless

Ferramentas de automação controlam um motor de navegador real, então a maior parte da página funciona do mesmo jeito. As diferenças aparecem nas bordas:

Os sites combinam esses sinais em uma pontuação. Uma pontuação baixa pode significar um rebaixamento silencioso, um conjunto de verificações extras ou um bloqueio.

Passo 1: veja o que o seu navegador expõe

Antes de mudar qualquer coisa, veja o que uma página consegue ler da sua automação. O script abaixo abre uma página que você controla e imprime os sinais que importam. É um diagnóstico: use-o em páginas de teste suas, não para sondar sistemas de terceiros.

from playwright.sync_api import sync_playwright

CHECK = """() => ({
    webdriver: navigator.webdriver,
    languages: navigator.languages,
    plugins: navigator.plugins.length,
    userAgent: navigator.userAgent,
    screen: [screen.width, screen.height],
    viewport: [window.innerWidth, window.innerHeight],
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
})"""

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")  # substitua por uma página sua
    print(page.evaluate(CHECK))
    browser.close()

Execute o mesmo script com headless=False e compare as duas saídas. As diferenças são as coisas que um site poderia notar.

Passo 2: corrija as inconsistências, não só as flags

Esconder uma flag e deixar as outras intactas é o erro mais comum. Um user agent que diz Windows, enquanto as fontes, o fuso horário e o tamanho da tela descrevem um servidor Linux, é um sinal mais forte do que uma única propriedade. Busque um ambiente internamente consistente:

O Playwright permite definir vários desses itens em um só lugar:

context = browser.new_context(
    locale="en-US",
    timezone_id="America/New_York",
    viewport={"width": 1366, "height": 768},
)
page = context.new_page()

Passo 3: desacelere e aja como um visitante

A automação fica óbvia quando é mais rápida do que uma pessoa conseguiria ser. Adicione pausas realistas entre os carregamentos de página, evite clicar no mesmo elemento em um ritmo perfeito e não abra centenas de páginas em paralelo a partir de um mesmo endereço. Fazer menos requisições, e mais lentas, também reduz a carga sobre o site, o que de qualquer forma é o certo a fazer.

Passo 4: saiba quando a verificação é um captcha

Alguns fluxos de detecção terminam em um desafio, e não em um bloqueio. Você verá um widget de captcha, e essa etapa precisa de um token de um solver. O tipo de captcha ativo na Scarnox hoje é o PopularCaptcha. O guia de PopularCaptcha em Python mostra como o token é solicitado e enviado. Outros widgets, como o Cloudflare Turnstile, estão no roteiro, mas ainda não estão ativos, então confira tipos de captcha explicados antes de planejar em cima de um deles.

Uma etapa de captcha não significa que o resto da sua configuração está correto. Se o mesmo site bloqueia toda sessão headless, não importa como você a configure, isso é um sinal claro de que o dono não quer acesso automatizado. Respeite isso.

O que não fazer

Não tente esconder a automação de um site que a proíbe, e não use ferramentas de evasão de detecção para passar por controles de acesso. Isso é um tipo de projeto diferente dos testes e da coleta de dados públicos que este guia cobre. Se o seu projeto precisa de um acesso que você não recebeu, peça autorização ao dono do site ou procure uma API oficial ou um feed de dados.

Faça scraping com responsabilidade

Onde seguir a partir daqui

Se a sua automação serve para testes end-to-end, a abordagem é outra: veja captcha em testes automatizados. Se você usa Playwright ou Puppeteer, tratamento de captcha com Playwright e Puppeteer explica para onde o token vai.

Comece com crédito de teste grátis, sem cartão: crie uma conta e teste o fluxo do PopularCaptcha em uma página sua. Para as tarifas atuais, veja a página de preços.

Próximos passos