Skip to main content
Blog
Blog Attacks

Como Bloquear a Automação do Playwright no Seu Site

O Playwright corre navegadores reais que parecem idênticos a humanos na camada de rede. Eis como detetá-lo, e porque o robots.txt e o bloqueio de IP falham.

Jun 26, 2026 15 min read
Como Bloquear a Automação do Playwright no Seu Site
Índice

Resumo: detetar o Playwright dentro da sessão do navegador, não no limite da rede

  • Sem pista na rede: Cada fornecedor de WAF promete apanhar automação, mas o Playwright pilota instâncias reais de Chromium, Firefox e WebKit com TLS válido, user-agents atuais e cabeçalhos HTTP/2 limpos. Não há pista ao nível da rede, e a Forrester renomeou a categoria de analistas para Bot and Agent Trust Management Software no Q4 2025 para refletir exatamente essa mudança.
  • A assinatura no navegador: A assinatura dentro do navegador aguenta-se: navigator.webdriver definido como true, marcadores de contexto window.__playwright, tempo de interação estatisticamente uniforme, eventos de hover ausentes antes dos cliques, trajetórias de ponteiro em linha reta, profundidade de scroll a aterrar exatamente no elemento-alvo, e zero correções de introdução de dados. A cside lê estes sinais a partir de dentro da sessão.
  • Política por página: Se o Playwright move a sua suite de testes interna e a monitorização sintética, permita-o em infraestrutura conhecida e aplique política por página no checkout, na criação de conta e nos preços. Se estiver a ver assinaturas do Playwright fora dessa allowlist, bloqueie com base em sinais da camada do navegador, em vez de tentar fazer engenharia reversa de patches stealth.

Sem tempo? Veja a deteção de agentes de IA da cside. Cobre tudo o que se segue numa única implementação.

O Playwright é uma framework de automação de navegadores criada e mantida pela Microsoft. Controla instâncias reais de navegadores Chromium, Firefox e WebKit, executa JavaScript por completo e produz sessões que parecem indistinguíveis de utilizadores genuínos na camada de rede. Isso torna-o a ferramenta preferida de uma categoria crescente de agentes de IA, scrapers e operações de fraude especificamente concebidos para escapar à deteção.

Bloquear o Playwright não é como bloquear um crawler declarado. Não há uma string de user-agent para negar, não há um intervalo de IP publicado para restringir, nem uma diretiva de robots.txt que ele respeite. A deteção exige a leitura do que acontece dentro da própria sessão do navegador. A Forrester registou esta mudança no Q4 2025, renomeando formalmente a categoria de análise para Bot and Agent Trust Management Software: a luta deslocou-se dos bots na fronteira da rede para os agentes a operar dentro de sessões de navegador reais. Para o padrão mais amplo entre os agentes automatizados, consulte o nosso guia para bloquear agentes de IA no seu site.


O que É o Playwright?

Resposta rápida: O Playwright é uma biblioteca open-source de automação de navegadores mantida pela Microsoft. Lança e controla instâncias de navegadores reais (Chromium, Firefox, WebKit), executa JavaScript, gere fluxos de autenticação e interage com as interfaces de aplicações web. É amplamente usado para testes legítimos, mas também alimenta uma parte significativa dos agentes de IA, scrapers e operações de fraude automatizada que visam sites ativos.

Ao contrário de ferramentas de automação anteriores, como o Selenium ou o PhantomJS, o Playwright foi concebido para aplicações web modernas. Lida com conteúdo dinâmico, single-page applications, shadow DOM, iframes e fluxos de autenticação complexos sem as lacunas de renderização que as ferramentas mais antigas apresentavam. Quando usado por um agente malicioso ou não declarado, essas capacidades tornam-no particularmente difícil de distinguir de um utilizador real ao nível da infraestrutura.

As sessões do Playwright deixam uma pegada de rede limpa: um handshake TLS padrão, um user-agent de navegador atual, cabeçalhos HTTP/2 válidos e nenhuma fingerprint de automação óbvia no fluxo de requisições. A sessão parece legítima porque está a correr um navegador legítimo. Os operadores que executam implementações focadas na evasão também acrescentam bibliotecas stealth, como a playwright-stealth ou a rebrowser-patches, que suprimem os sinais por defeito do ambiente JavaScript em que os scripts de deteção mais simples se baseiam.


Playwright vs Selenium vs Puppeteer: Porque a Comparação Importa para a Deteção

Resposta rápida: o Selenium, o Puppeteer e o Playwright controlam navegadores reais, mas diferem na arquitetura de formas que determinam o que cada um deixa para trás. O Selenium é o mais fácil de detetar por defeito. O Puppeteer e o Playwright são mais difíceis, e o Playwright é atualmente o mais comum em implementações de agentes de IA e scraping porque cobre o Chromium, o Firefox e o WebKit a partir de uma única API.

O Selenium é o mais antigo dos três. Comunica com os navegadores através do protocolo WebDriver, que define navigator.webdriver como true por defeito e deixa uma pegada consistente do Chrome DevTools Protocol. A maioria das stacks de deteção identifica sessões básicas do Selenium de forma fiável. O Puppeteer é o equivalente da Google, limitado ao Chromium: controla o Chromium através do Chrome DevTools Protocol e partilha muitos dos mesmos sinais de ambiente. O Playwright, construído pela Microsoft, é o mais capaz dos três. Controla o Chromium, o Firefox e o WebKit a partir de uma única API e lida melhor com os padrões de aplicações web modernas do que qualquer dos seus antecessores. O Playwright não inclui funcionalidades de stealth por defeito; os operadores acrescentam pacotes de terceiros da comunidade, como o playwright-stealth ou o rebrowser-patches (instalados separadamente), para suprimir os sinais óbvios do ambiente JavaScript.

Para a deteção, o framework importa menos do que aquilo que deixa para trás na sessão do navegador. Os três produzem a mesma classe de sinais: tempo de interação estatisticamente uniforme, caminhos de navegação que seguem sequências de tarefas em vez de padrões exploratórios, e propriedades do ambiente JavaScript que diferem das sessões de utilizadores genuínos. A deteção na camada do navegador lê esses sinais independentemente do framework que os gerou.


Porque É que os Métodos de Bloqueio Padrão Falham Contra o Playwright

Resposta rápida: O Playwright usa navegadores reais, por isso o bloqueio de IP, a filtragem de user-agent e o robots.txt não têm qualquer efeito. Um agente Playwright chega com um IP válido, um user-agent atual do Chrome ou Firefox e assinaturas TLS corretas. As ferramentas da camada de rede não conseguem distingui-lo de uma sessão humana sem sinais da camada do navegador.

O bloqueio tradicional de bots opera com base no pressuposto de que o tráfego automatizado parece diferente na fronteira da rede. O Playwright elimina esse pressuposto. Eis porque cada método padrão falha:

robots.txt: Os agentes Playwright não consultam o robots.txt. A framework não oferece qualquer mecanismo para o respeitar, e nenhum agente que o use para scraping ou fraude tem incentivo para cumprir.

Filtragem de user-agent: As strings de user-agent por defeito do Playwright são idênticas às das versões atuais do Chrome, Firefox ou WebKit. Bloquear user-agents de automação comuns (como o HeadlessChrome) não tem efeito, porque o Playwright lança instâncias de navegador com interface gráfica que reportam o user-agent de produção padrão.

Bloqueio de IP: Os agentes Playwright costumam correr em infraestrutura de cloud, residential proxies ou redes distribuídas com endereços IP rotativos. O bloqueio ao nível de IP apanha apenas as implementações pouco sofisticadas. As operações bem financiadas rodam pools de IP mais depressa do que as blocklists conseguem ser atualizadas.

Regras de WAF e CDN: As regras de WAF e CDN que procuram sinais de automação nos cabeçalhos ou nos padrões de requisição verão uma sessão limpa do Playwright como tráfego legítimo. A camada HTTP é indistinguível.


Como o Playwright É Detetado na Camada do Navegador

Resposta rápida: O Playwright deixa sinais dentro da sessão do navegador que são invisíveis na camada de rede, mas legíveis a partir do interior da página. Incluem anomalias temporais nas sequências de interação, padrões de micromovimento ausentes ou irrealistas, uniformidade do percurso de navegação e propriedades específicas do ambiente JavaScript que diferem das sessões de utilizadores genuínos.

A deteção na camada do navegador lê os sinais que a automação do Playwright não consegue suprimir facilmente sem quebrar a sua própria funcionalidade:

Tempo de interação: Os utilizadores humanos produzem um tempo irregular entre ações, com variância natural no tempo dos cliques, nos intervalos entre teclas e na velocidade de scroll. A automação do Playwright produz tempos estatisticamente uniformes ou sequências quase idênticas entre sessões. Mesmo com aleatorização adicionada pelo operador, a distribuição difere da variância humana genuína.

Padrões de navegação e de envolvimento: Os utilizadores humanos apresentam navegação não linear, revisitam páginas anteriores, interagem com elementos secundários, fazem hover antes de clicar e deixam microcorreções nos campos de introdução. As sessões do Playwright seguem sequências programáticas sem comportamento exploratório, sem hesitação do ponteiro e sem dados de formulário abandonados.

Propriedades do ambiente JavaScript: O Playwright expõe propriedades específicas do runtime que diferem das sessões de navegador genuínas. As mais diagnósticas incluem navigator.webdriver (definido como true no Playwright não modificado), os marcadores de contexto window.__playwright e window.__pw_manual, e anomalias na string do renderizador WebGL e na resolução da API de tempo. As bibliotecas stealth tentam sobrescrever estes valores, mas ao fazê-lo introduzem inconsistências secundárias que permanecem detetáveis.

Rastos de CDP e WebSocket: Quando o Playwright usa o Chrome DevTools Protocol para controlar o navegador, podem observar-se padrões específicos de WebSocket e tempos de mensagens a partir do contexto da página. Não são visíveis na camada HTTP, mas são legíveis por scripts de deteção dentro da página. Para uma explicação mais alargada destas técnicas, consulte o nosso guia para detetar tráfego de agentes de IA no seu site.

Painel de deteção de agentes de IA da cside

Fluxo de ataque que mostra um agente Playwright a iniciar um navegador Chromium real, a passar verificações da camada de rede, a executar JavaScript e interações na página, e a ser detetado apenas por sinais de temporização, movimento e automatização na camada do navegador

O que a sessão fazCamada de rede (WAF/CDN)Camada do navegador (cside)
IdentidadeUtilizador do Reino Unido recorrente, IP de proxy residencialPlaywright Chromium, UA de Chrome atual
AtividadeSessão de navegação padrão47 páginas de produto em 8 minutos, 3,2 s de permanência cada
MovimentoNada de invulgar registado0 eventos de hover, trajetória do ponteiro em linha reta, profundidade de scroll exatamente no elemento de preço
TemporizaçãoTráfego limpo e de baixa frequência0 variância na temporização entre páginas
ResultadoServida sem desafioClassificada como agente de inteligência de preços → desorientação silenciosa

O Stealth do Playwright e Porque Não Elimina a Deteção

Resposta rápida: as bibliotecas de stealth do Playwright (playwright-stealth, rebrowser-patches) suprimem os sinais óbvios do ambiente JavaScript que o Playwright sem patches expõe. Cada patch introduz uma inconsistência secundária, e nenhum consegue suprimir os sinais comportamentais produzidos por uma sessão, que é onde a deteção na camada do navegador lê.

As bibliotecas de stealth do Playwright, principalmente a playwright-stealth e a rebrowser-patches, aplicam patches ao ambiente JavaScript para remover os sinais de automação mais óbvios. Reescrevem navigator.webdriver para devolver undefined, injetam um objeto window.chrome realista, normalizam navigator.plugins e corrigem o desalinhamento da API de permissões que os contextos headless produzem por defeito. As instalações destas bibliotecas têm subido de forma constante à medida que a deteção na camada de rede perde eficácia e os operadores dedicam mais esforço a suprimir os sinais de ambiente em que os scripts mais simples se baseiam.

Os patches de stealth criam, contudo, um problema diferente. Cada patch introduz a sua própria inconsistência secundária. Uma sessão de navegador em que navigator.webdriver devolve undefined mas window.chrome.runtime é um objeto stub, em que as strings do renderer do WebGL sugerem uma GPU discreta que não corresponde à plataforma reportada, e em que cada clique aterra a menos de dois pixéis do elemento-alvo sem qualquer movimento de hover prévio, não é uma sessão limpa: é uma sessão com patches. As flags aplicadas por patch tornam-se prova de confirmação em vez de sinais primários.

O sinal mais difícil de suprimir para as ferramentas de stealth é o comportamental. As sessões do Playwright, com ou sem bibliotecas de stealth, produzem distribuições de tempos de interação, padrões de scroll e sequências de navegação que diferem estatisticamente das sessões humanas genuínas. Esses sinais não vivem numa propriedade de JavaScript que possa ser reescrita. Emergem da forma como os frameworks de automação executam instruções, e suprimi-los exige abrandar e aleatorizar a execução, o que reduz a taxa de transferência sem tornar necessariamente a automação impraticável. Ataques de baixo volume ou distribuídos podem continuar a correr a um ritmo mais lento, mas isso elimina a maior parte da vantagem de escala pela qual a automação é implementada em primeiro lugar.


Como Isto Se Apresenta na Prática

Um concorrente do retalho implementa um agente Playwright para monitorizar os preços no seu catálogo de produtos. O agente lança uma instância Chromium com um user-agent atual do Chrome e um IP de residential proxy a partir de um endereço do Reino Unido. O seu WAF regista-o como uma sessão de navegação padrão de um utilizador recorrente do Reino Unido. O seu CDN serve-o sem qualquer desafio.

Dentro da sessão, a cside observa: 47 páginas de produto visitadas em 8 minutos, cada uma com um tempo de permanência de 3,2 segundos e uma profundidade de scroll que atinge exatamente o elemento do preço. Nenhum evento de hover antes de qualquer clique. Nenhum movimento do cursor fora do percurso de interação. Variância zero no tempo entre páginas. A trajetória do ponteiro em cada título de produto segue uma linha reta idêntica.

A camada de rede viu uma sessão limpa. A camada do navegador viu uma máquina. A cside classifica a sessão como um agente de inteligência de preços e aciona uma resposta de política, enquanto o log do WAF continua a não mostrar nada de invulgar.

Um segundo padrão que a cside vê com frequência envolve fraude no checkout. Um agente Playwright percorre intervalos de números de cartão numa página de checkout de baixa fricção, submetendo uma tentativa de encomenda a cada 4 a 6 segundos ao longo de centenas de sessões. Cada sessão usa um IP residencial diferente, um contexto de navegador novo e uma string navigator.userAgent realista. O WAF vê tráfego distribuído e de baixa taxa a partir de IPs limpos. A camada do navegador vê zero movimento real do ponteiro, nenhuma hesitação nos campos de formulário e navigator.webdriver a devolver true em instâncias não modificadas. A classificação de intenção na camada do navegador detém a enumeração antes de quaisquer dados de cartão significativos serem validados.


Opções de Bloqueio e de Política para Agentes Playwright

Resposta rápida: Assim que uma sessão Playwright é detetada na camada do navegador, as respostas de política podem incluir bloqueio total, redirecionamento silencioso (servir conteúdo alterado ao agente enquanto se permite a passagem dos utilizadores genuínos), rate limiting ou permitir com monitorização. A resposta certa depende de a intenção do agente ser comercial, maliciosa ou legitimamente automatizada.

O bloqueio total (devolver um 403 ou um redirecionamento) é adequado para agentes que apresentem sinais de intenção maliciosa, como credential stuffing, fraude no checkout ou extração de dados em grande volume. O redirecionamento silencioso é muitas vezes mais eficaz para operações de inteligência de preços, pois degrada a qualidade dos dados que o concorrente recebe sem o alertar de que a deteção ocorreu.

Nem todas as sessões do Playwright são hostis. Os pipelines de testes legítimos, as auditorias de acessibilidade e as ferramentas internas de automação também usam o Playwright. Uma política eficaz separa a intenção da ferramenta: a pergunta não é "isto é Playwright?", mas "o que está esta sessão a tentar fazer, e está autorizada a fazê-lo?".

As regras de política por página permitem respostas diferentes em secções diferentes do site. Um agente Playwright na página de preços apresenta um perfil de risco diferente do de um agente no blog. Bloquear uniformemente em todo o site arrisca-se a perturbar fluxos de trabalho automatizados legítimos. A mesma lógica orientada pela intenção aplica-se a navegadores agênticos como o OpenAI Operator, que conduzem sessões de navegador reais.


Deve Tentar Bloquear Todo o Tráfego do Playwright?

Resposta rápida: Não. O Playwright também é usado por ferramentas de teste legítimas, serviços de monitorização e automação interna. A abordagem correta é a classificação de intenção, não o bloqueio de ferramentas. Detete o que o agente está a fazer, não a ferramenta que está a usar, e aplique a política com base no comportamento da sessão e no risco que representa para essa página ou função específica.

As organizações que tentam bloquear todo o tráfego do Playwright costumam deparar-se com dois resultados: perturbam os seus próprios pipelines de CI/CD e ferramentas de monitorização, e empurram os agentes adversários para mudarem para frameworks equivalentes (Puppeteer, Selenium, automação de navegador personalizada) que apresentam desafios de deteção idênticos.

A abordagem mais duradoura é a classificação de intenção na camada do navegador. Uma sessão Playwright a concluir uma verificação legítima de monitorização sintética, uma sessão Playwright a fazer scraping de dados de preços e uma sessão Playwright a tentar testar cartões num formulário de checkout usam todas a mesma ferramenta. É o comportamento da sessão que as distingue. Nos testes controlados da cside, as ferramentas tradicionais de deteção de bots não classificaram corretamente as sessões maliciosas de agentes de IA em 81 de 100 cenários de teste, uma lacuna que reflete arquitetura e não configuração. A mesma abordagem na camada do navegador estende-se ao bloqueio de scrapers de conteúdo de IA que chegam sem um user-agent declarado.

Mike Kutlu
Client-Side Security Consultant

Client-side security consultant at cside. 10+ years of experience implementing technology solutions for enterprises (previously at Oracle, Cloudflare, and Splunk). Now helping teams use client-side intelligence to catch & reduce fraud.

FAQ

Frequently Asked Questions

O Playwright controla instâncias de navegadores reais que produzem assinaturas TLS válidas, strings de user-agent atuais e cabeçalhos HTTP padrão. Ao contrário de crawlers declarados como o GPTBot ou o CCBot, que se identificam e podem ser bloqueados por user-agent ou robots.txt, as sessões do Playwright parecem idênticas a sessões humanas genuínas na camada de rede. A deteção exige a leitura de sinais a partir do interior da sessão do navegador.

Não. O Playwright não consulta nem respeita o `robots.txt`. A framework não tem qualquer mecanismo de conformidade integrado, e os agentes que usam o Playwright para scraping ou automação não têm obrigação nem incentivo para seguir as diretivas do `robots.txt`. O robots.txt só é eficaz contra crawlers declarados e cooperativos.

As regras padrão de WAF baseadas em reputação de IP, correspondência de user-agent e análise de cabeçalhos de requisição não detetam o Playwright de forma fiável. O Playwright produz tráfego limpo na camada de rede. Os WAFs que incorporam deteção de anomalias comportamentais conseguem sinalizar alguns padrões, mas não têm acesso aos sinais dentro do navegador, como o tempo de interação, os padrões de navegação e as propriedades do ambiente JavaScript, que distinguem o Playwright de um utilizador genuíno.

Os principais sinais incluem tempo de interação estatisticamente uniforme entre sessões, ausência de eventos de hover antes dos cliques, trajetórias do ponteiro em linha reta, profundidade de scroll que atinge exatamente os elementos-alvo, zero eventos de correção de introdução de dados e propriedades específicas do runtime de JavaScript, como `navigator.webdriver` definido como `true` e a presença de marcadores de contexto `window.__playwright`. Estes sinais não são visíveis nos logs HTTP, mas são legíveis por scripts de deteção dentro da página.

Use classificação de intenção em vez de bloqueio de ferramentas. A utilização legítima do Playwright, como testes internos, monitorização sintética e auditorias de acessibilidade, segue padrões comportamentais consistentes e restritos, associados a infraestrutura conhecida. A utilização maliciosa do Playwright apresenta assinaturas comportamentais diferentes em escala, distribuição temporal, alvos de navegação e sequências de interação. As regras de política por página permitem aplicar respostas diferentes em páginas de alto risco, como o checkout, a criação de contas e os preços, sem perturbar a automação legítima noutras partes do site.

O Selenium é o mais fácil de detetar por defeito. Controla os navegadores através do protocolo WebDriver, que define `navigator.webdriver` como `true` por defeito e deixa uma pegada consistente do Chrome DevTools Protocol. A maioria das stacks de deteção identifica de forma fiável o Selenium sem patches. O Playwright é frequentemente combinado com bibliotecas de stealth de terceiros (playwright-stealth, rebrowser-patches, ambos pacotes da comunidade instalados separadamente) que suprimem os sinais óbvios do ambiente JavaScript, pelo que a deteção superficial apanha menos casos. Na camada do navegador, contudo, ambos os frameworks produzem a mesma classe de sinais comportamentais, tempos de interação uniformes, trajetórias de ponteiro em linha reta e ausência de eventos de hover, por isso a deteção que lê dentro da sessão apanha ambos, independentemente do framework.

O Puppeteer é a biblioteca de automação de Chromium da Google e o Playwright é o equivalente multi-navegador da Microsoft. O Puppeteer controla o Chromium através do Chrome DevTools Protocol; o Playwright controla o Chromium, o Firefox e o WebKit a partir de uma única API. Para a deteção de bots comportam-se de forma quase idêntica: ambos deixam a mesma classe de sinais comportamentais numa sessão (tempos uniformes, ausência de micro-movimentos, navegação programática) e ambos dispõem de bibliotecas de stealth maduras. A diferença prática é que o alcance multi-navegador do Playwright torna-o mais comum em implementações atuais de automação e de agentes de IA do que o Puppeteer.

Monitore e proteja seus scripts de terceiros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Comece grátis ou experimente o Business com um teste de 14 dias.

Interface do painel cside mostrando monitoramento de scripts e análises de segurança
Related Articles
Agende uma demonstração

Quer ver isso em detalhe com um engenheiro?

Trinta minutos, no seu próprio site. Sem slides.

Vamos mostrar:

Quais scripts de terceiros estão rodando no seu site agora
Como você está em relação aos requisitos 6.4.3 e 11.6.1 do PCI DSS
Qual parte do seu tráfego é de bots e agentes de IA

Prefere só mandar uma pergunta?

Procurando horários livres…

Apenas humanos de verdade. A gente saberia.

Problemas para agendar? Abrir o agendador em uma nova aba

O que você está tentando resolver?

Conte em uma linha e voltamos com algo útil, não com um discurso genérico.

Costumamos ajudar com:

Ver quais scripts de terceiros rodam no seu site
Evidências para PCI DSS 6.4.3 e 11.6.1
Bots, agentes de IA e roubo de contas

Prefere agendar um horário? Escolher um horário