🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Evite a Detecção de Bots com Playwright Stealth: 9 Soluções para 2026

Michael Lee
Michael Lee

Expert Network Defense Engineer

30-Jun-2026

TL;DR:

  • Desvios de impressões digitais do Playwright. Instâncias padrão do Chromium headless transmitem sinais de automação como navigator.webdriver, plugins ausentes e tamanhos de viewport previsíveis.
  • Ecossistemas Python e Node.js diferem. Use playwright-stealth em Python (com o gerenciador de contexto v2.x) e playwright-extra em Node.js para corrigir esses desvios.
  • O Stealth exige múltiplas camadas. Contornar a detecção moderna requer corrigir a camada JavaScript, randomizar cabeçalhos, girar proxies e gerenciar cookies de sessão simultaneamente.
  • Browsers em nuvem cuidam do resto. Quando plugins locais de stealth falham contra WAFs avançados, descarregar a execução do navegador para uma infraestrutura gerenciada é o único caminho de atualização confiável.
  • Gratuito para começar. Novas contas Scrapeless incluem tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.

Introdução: os limites da automação padrão

O Playwright é uma poderosa ferramenta de automação de navegadores, mas fora da caixa, ele se anuncia como um bot. Quando você inicia uma instância do Chromium headless, ela carrega marcadores específicos — como a flag navigator.webdriver definida como true, a falta de plugins de navegador padrão e assinaturas WebGL distintas. Sistemas modernos de anti-bot, como o Cloudflare, DataDome e Akamai, leem esses sinais e bloqueiam a solicitação antes que seu script consiga até mesmo analisar o DOM.

Para raspar sites protegidos, você precisa do stealth do Playwright. No entanto, o "modo stealth" não é um botão embutido que você possa ativar na biblioteca Playwright. É necessário implementar técnicas específicas para corrigir vazamentos de impressões digitais do navegador, gerenciar características de rede e emular o comportamento humano.

Este guia detalha 9 soluções práticas para evitar a detecção de bots com o Playwright em 2025, fornecendo exemplos de código detalhados para ajudá-lo a navegar pelas complexidades da raspagem da web moderna.


O Que Você Pode Fazer Com Isso

  • Contornar a detecção básica de bots. Acesse sites que bloqueiam navegadores headless padrão corrigindo vazamentos de navigator.webdriver e User-Agent.
  • Padronizar impressões digitais do navegador. Injetar dados realistas de concorrência de hardware, memória e plugins em sua instância do Chromium headless.
  • Manter a persistência de sessões. Combinar correções de stealth com gerenciamento adequado de cookies e contexto para manter as sessões ativas por mais tempo.
  • Dimensionar a extração de dados. Executar contextos de navegador paralelos e com stealth para tarefas de raspagem em alto volume.

Por Que o Scrapeless Scraping Browser

O Scrapeless Scraping Browser é um navegador em nuvem personalizável e anti-deteção, projetado para crawlers da web e agentes de IA. Quando plugins locais de stealth atingem seus limites contra WAFs avançados, ele oferece:

  • Anti-deteção embutido. Falsificação nativa de impressões digitais que vai além de patches JavaScript, incluindo gerenciamento de impressões digitais TLS e TCP.
  • Rotação automática de proxies. Proxies residenciais integrados em mais de 195 países para resolver problemas de reputação de IP.
  • Solução gerenciada de desafios. Resolução automática de Cloudflare Turnstile, reCAPTCHA e hCaptcha.
  • Compatibilidade com Playwright. Conecte seus scripts Playwright existentes ao navegador em nuvem via CDP com uma única linha de código.

Obtenha sua chave API no plano gratuito em app.scrapeless.com.


Pré-requisitos

  • Node.js 18+ ou Python 3.10+
  • Uma conta Scrapeless e chave API — inscreva-se em app.scrapeless.com
  • Familiaridade básica com automação Playwright

9 Soluções para Evitar a Detecção de Bots com Playwright Stealth

Um dos indicadores mais comuns de automação é a propriedade navigator.webdriver, que é definida como true em ambientes de navegador automatizados. O padrão W3C WebDriver define essa flag especificamente para permitir que servidores identifiquem o tráfego automatizado. Os sites podem facilmente verificar essa flag para identificar bots. Desativá-la é uma técnica fundamental de stealth.

Passos da Operação de Código:

Use page.add_init_script() para injetar JavaScript que modifica a propriedade navigator.webdriver antes que quaisquer scripts do site sejam executados:

python Copy
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context()
    
    # Injetar JavaScript para desativar a flag webdriver
    context.add_init_script("""
        Object.defineProperty(navigator, 'webdriver', {
          get: () => undefined
        })
    """)
    
    page = context.new_page()
    page.goto("https://bot.sannysoft.com/")
    page.screenshot(path="webdriver_disabled.png")
    browser.close()

2. Randomizar Strings de User-Agent

O cabeçalho User-Agent identifica o navegador e o sistema operacional para o servidor web. Usar um User-Agent consistente ou desatualizado (especialmente um que contenha HeadlessChrome) é um forte indicador de um bot. Randomizar as strings do User-Agent ajuda a parecer diferentes usuários legítimos.

Etapas de Operação do Código:

Mantenha uma lista de strings User-Agent comuns e selecione uma aleatoriamente para cada sessão:

python Copy
from playwright.sync_api import sync_playwright
import random

user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0"
]

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(user_agent=random.choice(user_agents))
    page = context.new_page()
    page.goto("https://www.whatismybrowser.com/detect/what-is-my-user-agent")
    page.screenshot(path="random_user_agent.png")
    browser.close()

3. Use Proxies e Rotacione Endereços IP

Solicitações repetidas do mesmo endereço IP são um indicador principal de atividade de bot. Usar um pool de proxies e rotacionar endereços IP para cada solicitação ou sessão distribui seu tráfego e evita bloqueios baseados em IP.

Etapas de Operação do Código:

Configure o Playwright para usar um proxy:

python Copy
from playwright.sync_api import sync_playwright
import random

proxies = [
    "http://user1:pass1@proxy1.example.com:8080",
    "http://user2:pass2@proxy2.example.com:8080"
]

with sync_playwright() as p:
    # Lançar navegador com um proxy selecionado aleatoriamente
    browser = p.chromium.launch(headless=True, proxy={
        "server": random.choice(proxies)
    })
    page = browser.new_page()
    page.goto("https://www.whatismyip.com/")
    browser.close()

Para operações em grande escala, considere usar um serviço de proxy gerenciado como Scrapeless Proxies que lida com a rotação automaticamente.

4. Simule Movimentos de Mouse e Entradas de Teclado Realistas

Bots frequentemente interagem com elementos da web diretamente e instantaneamente, o que é antinatural. Sistemas anti-bot rastreiam biometricos comportamentais como velocidade do cursor e cadência de digitação. Simular movimentos de mouse, cliques e entradas de teclado semelhantes aos humanos reduz as chances de detecção.

Etapas de Operação do Código:

Use os métodos page.mouse e page.keyboard para introduzir atrasos e caminhos realistas:

python Copy
from playwright.sync_api import sync_playwright
import time
import random

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://www.example.com")

    # Simular digitação semelhante à humana
    search_input = page.locator("#search-box")
    search_input.click()
    text_to_type = "Playwright Stealth"
    for char in text_to_type:
        page.keyboard.type(char)
        time.sleep(random.uniform(0.05, 0.2)) # Atraso aleatório entre pressionamentos de tecla
    page.keyboard.press("Enter")
    
    browser.close()

5. Gerencie Cookies e Dados de Sessão

Os sites usam cookies para rastrear sessões de usuários. Bots que descartam cookies entre solicitações são facilmente identificados como tráfego automatizado. Manter uma sessão consistente aceitando e enviando cookies é vital para a furtividade.

Etapas de Operação do Código:

Use context.storage_state() para salvar cookies e armazenamento local, e depois carregá-los em novas sessões:

python Copy
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    
    # Cenário 1: Salvar cookies da sessão atual para uso futuro
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.example.com/login")
    # Realizar login...
    
    # Salvar estado
    context.storage_state(path="state.json")
    browser.close()

    # Cenário 2: Carregar cookies de uma sessão anterior
    browser2 = p.chromium.launch(headless=True)
    context2 = browser2.new_context(storage_state="state.json")
    page2 = context2.new_page()
    page2.goto("https://www.example.com/dashboard")
    browser2.close()

6. Ajuste o Tamanho da Janela e a Emulação de Dispositivos

Os sites verificam o tamanho da janela e a resolução da tela para detectar anomalias. Usar uma janela de 800x600 é um sinal de alerta comum. Emular configurações de dispositivos comuns ajuda a se misturar com o tráfego real de usuários.

Etapas de Operação do Código:

Defina viewport e user_agent ao criar um novo contexto:

python Copy
from playwright.sync_api import sync_playwright
import random

viewports = [
    {"width": 1920, "height": 1080}, # Desktop

{"largura": 1366, "altura": 768}, # Laptop
]

com sync_playwright() como p:
navegador = p.chromium.launch(headless=True)

Copy
viewport_selecionado = random.choice(viewports)
contexto = navegador.new_context(
    viewport=viewport_selecionado
)
pagina = contexto.new_page()
pagina.goto("https://www.deviceinfo.me/")
navegador.close()
Copy
### 7. Evitar a Detecção do Modo Headless

Embora o modo headless seja eficiente, alguns sistemas anti-bot podem detectá-lo verificando a falta de capacidades de renderização gráfica. Executar o Playwright em modo headful (com uma interface visível do navegador) pode, às vezes, contornar a detecção, especialmente em sistemas mais agressivos.

**Passos de Operação do Código:**

Defina `headless=False` ao iniciar o navegador:

```python
from playwright.sync_api import sync_playwright

com sync_playwright() como p:
    navegador = p.chromium.launch(headless=False) # Iniciar em modo headful
    pagina = navegador.new_page()
    pagina.goto("https://www.example.com")
    navegador.close()

8. Usar playwright-stealth e playwright-extra

Em vez de escrever injeções de JavaScript manuais, use pacotes de stealth dedicados. O ecossistema Python usa playwright-stealth, enquanto o Node.js usa playwright-extra combinado com puppeteer-extra-plugin-stealth. Essas bibliotecas aplicam automaticamente um conjunto de evasões para corrigir a impressão digital do navegador.

Passos de Operação do Código (Python):

Instale o pacote (pip install playwright-stealth) e use o API do gerenciador de contexto v2.x:

python Copy
import asyncio
from playwright_stealth import Stealth
from playwright.async_api import async_playwright

async def main():
    # O gerenciador de contexto aplica patchs de stealth automaticamente
    async with Stealth().use_async(async_playwright()) como playwright:
        navegador = await playwright.chromium.launch(headless=True)
        contexto = await navegador.new_context()
        pagina = await contexto.new_page()
        
        await pagina.goto("https://bot.sannysoft.com/")
        await navegador.close()

asyncio.run(main())

9. Implementar Atrasos e Aleatoriedade nas Ações

Bots frequentemente executam ações com temporização e velocidade perfeitas. Introduzir atrasos aleatórios entre ações e variar a velocidade das interações faz com que o script pareça mais humano.

Passos de Operação do Código:

Use time.sleep() com intervalos aleatórios:

python Copy
from playwright.sync_api import sync_playwright
import time
import random

com sync_playwright() como p:
    navegador = p.chromium.launch(headless=True)
    pagina = navegador.new_page()
    pagina.goto("https://www.example.com")

    # Simular navegação com atrasos aleatórios
    time.sleep(random.uniform(2, 5)) # Atraso inicial no carregamento da página
    pagina.click("a[href='/products']")
    
    pagina.locator("input[name='q']").fill("item de busca")
    time.sleep(random.uniform(0.5, 1.5)) # Atraso após digitar
    pagina.keyboard.press("Enter")
    
    navegador.close()

Obtenha sua chave de API no plano gratuito: app.scrapeless.com


Conclusão: além do stealth básico

Os plugins de stealth do Playwright e os ajustes comportamentais são essenciais para scraping básico da web, mas têm limites difíceis. Eles operam na camada JavaScript, o que significa que não podem simular impressões digitais TLS, tamanhos de janela TCP ou resolver desafios comportamentais complexos como o Turnstile do Cloudflare.

Quando seu navegador com patch de stealth local começa a receber erros 403 ou loops de CAPTCHA, a solução não é escrever mais evasões de JavaScript. A solução é transferir a execução do navegador para uma infraestrutura gerenciada, como o Scrapeless Scraping Browser, que lida automaticamente com rotação de IP, impressão digital TLS e resolução de desafios, permitindo que você mantenha seu código Playwright.


Pronto para Construir Seu Pipeline de Dados com IA?

Junte-se à comunidade de desenvolvedores que estão construindo sistemas robustos de extração de dados.


FAQ

Q: O Playwright stealth está integrado à biblioteca?
Não. O Playwright não tem um modo stealth nativo. Você deve usar pacotes de terceiros: playwright-stealth para Python ou playwright-extra com o plugin de stealth para Node.js.

Q: Os plugins de stealth contornam o Cloudflare?
Os plugins de stealth corrigem vazamentos básicos de impressão digital do navegador, o que ajuda contra verificações simples. No entanto, eles não resolvem desafios avançados do Cloudflare (como o Turnstile) ou problemas de reputação de IP.

Q: O stealth do Playwright funciona com Firefox ou WebKit?
Não. Os módulos de evasão nos pacotes stealth de Python e Node.js são especificamente projetados para atualizar as APIs do Chromium. Eles não suportam Firefox ou WebKit.

P: Eu ainda preciso de proxies se usar stealth?
Sim. Os plugins stealth apenas mascaram a identidade do navegador (a impressão digital). Eles não ocultam seu endereço IP. Você ainda precisa de proxies residenciais para evitar limites de taxa e bloqueios baseados em IP.

P: É legal fazer scraping com Playwright?
Fazer scraping de dados visíveis publicamente é geralmente permissível, embora as jurisdições variem. Revise os Termos de Serviço do site-alvo e consulte um advogado sobre seu caso de uso específico.

P: Isso pode funcionar sem um agente de IA?
Sim, o código do Playwright funciona de ponta a ponta como scripts de automação padrão. Nenhum agente de IA é necessário para implementar a evasão do navegador.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo