nodriver vs Patchright: Automação de Navegador Não Detectada em Python
Advanced Bot Mitigation Engineer
TL;DR:
- nodriver e Patchright são ferramentas de automação indetectáveis ao nível do driver — elas escondem os sinais que marcam uma sessão como automatizada, em vez de oferecer um novo motor de navegador como fazem Obscura ou Lightpanda.
- nodriver é o sucessor do undetected-chromedriver: um framework Python assíncrono que se comunica diretamente com o Protocolo DevTools do Chrome, sem Selenium e sem o binário
chromedriver, portanto, os sinais clássicos do webdriver são eliminados por design. É AGPL-3.0 e ultrapassou 4.000 estrelas no GitHub. - Patchright é um substituto drop-in para Playwright Python que corrige as falhas que a própria superfície de automação do Playwright expõe — mesma API,
from patchright.sync_api import sync_playwright, licenciado sob Apache-2.0. - Ambos reportam
navigator.webdrivercomofalseimediatamente — verificado ao vivo abaixo em cada um — que é a primeira bandeira lida pela maioria dos detectores de bots. - Nenhum fornece IPs ou resolve páginas de desafio. A furtividade ao nível do driver oculta automação; não faz nada pela reputação do IP ou por uma parede de validação de tráfego. Scrapeless Scraping Browser adiciona proxies residenciais em mais de 195 países e manipulação de desafios na mesma sessão.
- Gratuito para começar. Novas contas Scrapeless incluem um tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.
Introdução: duas maneiras de parecer indetectável, uma coisa que não fazem
Os sistemas anti-bot detectam automação em dois lugares amplos: o navegador (superfícies de impressão digital como WebGL e fontes) e o driver (a maquinaria que controla o navegador — a propriedade navigator.webdriver do especificação WebDriver do W3C, artefatos do Protocolo DevTools do Chrome, o controle de automação que as ferramentas padrão expõem). Ferramentas ao nível do motor, como um Firefox modificado, reestruturam o primeiro. Nodriver e Patchright atacam o segundo: eles mantêm um Chromium normal, mas removem os sinais que um empilhamento de automação normal deixa para trás.
Eles abordam isso de direções opostas. nodriver descarta totalmente o Selenium e controla o Chrome através do Protocolo DevTools a partir do Python assíncrono. Patchright mantém Playwright exatamente como está e corrige as falhas por baixo dele, assim, o código existente do Playwright funciona sem mudanças. Este guia instala ambos, executa a mesma tarefa em cada um, mostra a limitação compartilhada que nenhum deles resolve e explica como um navegador na nuvem gerenciado preenche essa lacuna.
O que essas ferramentas são — e o que "ao nível do driver" significa
A furtividade ao nível do driver diz respeito a como o navegador é controlado, não o que o navegador é. Uma sessão padrão do Selenium ou Playwright vaza sua natureza através de artefatos de canal de controle: a propriedade navigator.webdriver definida como true, ganchos de tempo de execução do CDP, uma extensão de automação. Detectores buscam exatamente isso. Nodriver e Patchright os removem enquanto mantém você em um Chromium comum.
nodriver é o sucessor mantido do amplamente usado undetected-chromedriver. É um framework Python focado em assíncrono que fala CDP diretamente — sem executável chromedriver, sem camada webdriver do Selenium, portanto, não há binário do webdriver para imprimir em primeiro lugar. Sua própria descrição o enquadra como um framework rápido para automação e scraping que ultrapassa sistemas como Cloudflare e hCaptcha, e é licenciado como AGPL-3.0.
Patchright segue a rota da compatibilidade: é uma reimplementação indetectável do pacote Playwright Python que corrige as falhas de detecção na superfície de automação do Playwright. Você o instala no lugar do Playwright e altera uma importação; todo o resto — seletores, contextos, evaluate — é o Playwright que você já escreve. É Apache-2.0, uma licença mais permissiva do que a copyleft do nodriver, o que pode ser importante quando você o embute em um produto comercial.
Instale ambos
Nodriver instala do PyPI e traz seu próprio gerenciamento do Chrome; Patchright instala como o Playwright e baixa uma versão do Chromium:
bash
# nodriver — framework assíncrono CDP, sucessor do undetected-chromedriver
pip install nodriver
# Patchright — Playwright indetectável drop-in, além de sua versão do Chromium
pip install patchright
patchright install chromium
nodriver: CDP assíncrono, sem camada webdriver
A API do nodriver é assíncrona e nativa do CDP. Isso inicia o Chrome, navega e lê de volta a bandeira de automação:
python
import nodriver as uc
async def main():
browser = await uc.start(headless=True)
page = await browser.get("https://example.com")
await page.sleep(1)
print("TÍTULO:", await page.evaluate("document.title"))
print("WEBDRIVER:", await page.evaluate("navigator.webdriver"))
browser.stop()
nodriver envia seu próprio auxiliar de loop para que a limpeza do teardown permaneça limpa
uc.loop().run_until_complete(main())
Isso imprime `TÍTULO: Domínio Exemplo` e `WEBDRIVER: False`. Não há processo `chromedriver` e nenhum Selenium na pilha — o canal de controle é CDP bruto, então o sinal do webdriver está ausente em vez de ser corrigido. Usar `uc.loop()` em vez de um mero `asyncio.run` mantém a limpeza do teardown do próprio loop de eventos do nodriver.
## Patchright: o mesmo Playwright, menos os vazamentos
Se você já tem código Playwright, o Patchright é uma troca de uma linha — a importação muda e nada mais muda:
```python
# A única mudança em relação ao Playwright: importar do patchright, não do playwright
from patchright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://example.com")
print("TÍTULO:", page.title())
print("WEBDRIVER:", page.evaluate("navigator.webdriver"))
browser.close()
Isso também imprime WEBDRIVER: False. Como a API é idêntica à do Playwright, um scraper Playwright existente adota a ocultação do Patchright simplesmente trocando a importação — sem reescrita, sem novo modelo mental.
Obtenha sua chave de API no plano gratuito: app.scrapeless.com
Qual deles — e a brecha que ambos deixam em aberto
Escolher entre eles se resume ao seu ponto de partida. Se você está escrevendo Python assíncrono novo e quer o caminho direto mais leve do CDP sem legado do Selenium, o nodriver se encaixa — note sua copyleft AGPL-3.0 antes de incorporá-lo comercialmente. Se você tem código Playwright ou uma equipe fluente na API do Playwright, o Patchright oferece a mesma superfície com os vazamentos corrigidos e uma licença permissiva Apache-2.0. Ambos mantém você no Chromium comum; nenhum pede que você aprenda um novo motor.
A brecha que eles compartilham é a parte importante. A ocultação em nível de driver esconde que uma sessão é automatizada. Não muda de onde a sessão vem, e não responde a uma página de desafio. Três modos de falha estão totalmente fora do que essas ferramentas abordam:
- Reputação de IP. Suas solicitações saem do IP da sua máquina. Um alvo que bloqueia intervalos de datacenter ou limita a taxa do seu endereço bloqueia uma sessão sem webdriver impecável exatamente tão rápido quanto uma ingênua.
- Páginas de desafio. Um intersticial de validação de tráfego ainda precisa ser resolvido. Parecer não automatizado reduz a frequência com que uma aparece; não elimina as que aparecem.
- Profundidade da impressão digital. Essas ferramentas focam no canal de controle, não na superfície completa da impressão digital em nível de motor que um navegador anti-detectores dedicado reescreve.
Todos os três são problemas de rede e infraestrutura, e nenhuma biblioteca em nível de driver os resolve porque não são problemas em nível de driver.
Onde o Scrapeless Scraping Browser se encaixa
Quando o alvo faz verificação de reputação de IP ou apresenta desafios — não apenas na bandeira do webdriver — as peças faltantes são a saída residencial e o manuseio de desafios. O Scrapeless Scraping Browser oferece ambos em uma sessão gerenciada: um navegador em nuvem anti-deteção impulsionado por Chromium desenvolvido internamente, com proxies residenciais em mais de 195 países selecionados por sessão, exposto como um endpoint CDP. Como o Patchright é Playwright, conectar-se a ele é a mesma chamada connect_over_cdp que o Playwright já usa:
python
import os
from playwright.sync_api import sync_playwright
# Cloud Chromium com saída residencial — o nível de IP + desafio
API_KEY = os.environ["SCRAPELESS_API_KEY"]
ws_endpoint = (
"wss://browser.scrapeless.com/api/v2/browser"
f"?token={API_KEY}&session_ttl=180&proxy_country=US"
)
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(ws_endpoint)
page = browser.contexts[0].new_page() if browser.contexts else browser.new_page()
page.goto("https://example.com", wait_until="domcontentloaded")
print("TÍTULO:", page.title())
browser.close()
O padrão prático é um modelo em camadas: nodriver ou Patchright para execuções auto-hospedadas contra alvos que apenas verificam o driver, e uma sessão Scrapeless para alvos que também ponderam o IP e emitem desafios. A documentação do Scrapeless tem a referência completa de parâmetros, e preços são baseados no uso com um nível gratuito. Para a parte de página de desafio especificamente, o guia sobre resolver Cloudflare com Python mostra a sessão gerenciada limpando o que uma pilha apenas do driver não consegue.
Conclusão: esconda o driver, então resolva a rede
nodriver e Patchright são as duas respostas mais fortes em nível de driver para a detecção de automação — nodriver descartando Selenium para CDP direto, Patchright corrigindo Playwright no lugar — e ambos limpam a flag do webdriver que cada detector verifica primeiro. Escolha conforme seu código-fonte e necessidades de licença, e tenha clareza sobre a fronteira: eles escondem a automação, não a infraestrutura.
Para alvos que também julgam a reputação do IP e lançam desafios, mantenha uma sessão do Scrapeless Scraping Browser na rotação. Tudo aqui fala CDP ou Playwright, então direcionar uma solicitação de uma execução furtiva auto-hospedada para uma sessão em nuvem gerenciada é apenas uma mudança na string de conexão, não uma reescrita.
Pronto para Construir Seu Pipeline de Dados Potencializado por AI?
Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores construindo pipelines de automação não detectados: Discord · Telegram.
Inscreva-se em app.scrapeless.com para um tempo de execução gratuito do Scraping Browser e direcione seus alvos de IP e desafios através dele enquanto nodriver ou Patchright lidam com os exclusivamente de driver.
FAQ
Q: Qual é a diferença entre nodriver e Patchright?
nodriver é um framework assíncrono que controla o Chrome diretamente via CDP sem Selenium ou chromedriver, e é o sucessor do undetected-chromedriver. Patchright é um substituto que se encaixa para o pacote Playwright Python que corrige as vazamentos de detecção do Playwright enquanto mantém a exata API do Playwright. Escolha nodriver para uma pilha nativa CDP fresca, Patchright para adicionar furtividade a um código Playwright existente.
Q: O nodriver e o Patchright escondem navigator.webdriver?
Sim — ambos reportam navigator.webdriver como false por padrão, verificado ao vivo neste guia. nodriver remove o sinal do webdriver ao não usar uma camada de webdriver; Patchright o corrige na superfície do Playwright.
Q: Esses navegadores anti-detect são como o Camoufox?
Não. Camoufox é um navegador anti-detect em nível de motor que reescreve superfícies de impressão digital dentro do Firefox. nodriver e Patchright são em nível de driver: eles executam o Chromium comum e escondem o canal de controle de automação. As duas abordagens tratam de diferentes camadas de detecção e podem ser complementares.
Q: Qual licença devo verificar antes de usá-los comercialmente?
nodriver é AGPL-3.0 (copyleft, com obrigações de uso em rede); Patchright é Apache-2.0 (permissiva). Se os termos de licença restringirem seu produto, Patchright é a mais permissiva das duas — mas revise ambas de acordo com suas próprias exigências.
Q: Por que adicionar Scrapeless se minha sessão já parecer não automatizada?
Porque parecer não automatizado apenas derrota as verificações em nível de driver. Alvos difíceis também consideram a reputação do IP e exibem páginas de desafio, e nenhuma biblioteca em nível de driver move seu IP ou resolve um desafio. O Scrapeless Scraping Browser agrupa proxies residenciais em mais de 195 países e o manuseio de desafios em uma única sessão CDP gerenciada, cobrindo a camada que essas ferramentas não cobrem.
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.



