Como usar o ChromeDriver não detectado para Web Scraping

Advanced Data Extraction Specialist
Descubra como o Undetected ChromeDriver ajuda a contornar sistemas anti-bot para web scraping, juntamente com orientação passo a passo, métodos avançados e limitações principais. Além disso, aprenda sobre o Scrapeless - uma alternativa mais robusta para necessidades profissionais de scraping.
Neste guia, você aprenderá:
- O que é o Undetected ChromeDriver e como ele pode ser útil
- Como ele minimiza a detecção de bots
- Como usá-lo com Python para web scraping
- Uso e métodos avançados
- Suas principais limitações e desvantagens
- Alternativa recomendada: Scrapeless
- Análise técnica dos mecanismos de detecção anti-bot
Vamos mergulhar!
O que é o Undetected ChromeDriver?
O Undetected ChromeDriver é uma biblioteca Python que fornece uma versão otimizada do ChromeDriver do Selenium. Isso foi corrigido para limitar a detecção por serviços anti-bot como:
- Imperva
- DataDome
- Distil Networks
- e mais ...
Ele também pode ajudar a contornar certas proteções do Cloudflare, embora isso possa ser mais desafiador.
Se você já usou ferramentas de automação de navegador como o Selenium, sabe que elas permitem controlar navegadores programaticamente. Para tornar isso possível, eles configuram os navegadores de forma diferente das configurações de usuários comuns.
Os sistemas anti-bot procuram essas diferenças, ou "vazamentos", para identificar bots de navegador automatizados. O Undetected ChromeDriver corrige os drivers do Chrome para minimizar esses sinais reveladores, reduzindo a detecção de bots. Isso o torna ideal para sites de web scraping protegidos por medidas anti-scraping!
Como o Undetected ChromeDriver funciona?
O Undetected ChromeDriver reduz a detecção do Cloudflare, Imperva, DataDome e soluções semelhantes empregando as seguintes técnicas:
- Renomear variáveis do Selenium para imitar aquelas usadas por navegadores reais
- Usar strings User-Agent legítimas e do mundo real para evitar detecção
- Permitir que o usuário simule interação humana natural
- Gerenciar cookies e sessões corretamente ao navegar em sites
- Habilitar o uso de proxies para contornar o bloqueio de IP e evitar limitação de taxa
Esses métodos ajudam o navegador controlado pela biblioteca a contornar várias defesas anti-scraping de forma eficaz.
Usando o Undetected ChromeDriver para Web Scraping: Guia passo a passo
Etapa #1: Pré-requisitos e configuração do projeto
O Undetected ChromeDriver possui os seguintes pré-requisitos:
- Versão mais recente do Chrome
- Python 3.6+: Se o Python 3.6 ou posterior não estiver instalado em sua máquina, baixe-o do site oficial e siga as instruções de instalação.
Observação: A biblioteca baixa e corrige automaticamente o binário do driver para você, portanto, não há necessidade de baixar o ChromeDriver manualmente.
Crie um diretório para seu projeto:
language
mkdir undetected-chromedriver-scraper
cd undetected-chromedriver-scraper
python -m venv env
Ative o ambiente virtual:
language
# No Linux ou macOS
source env/bin/activate
# No Windows
env\Scripts\activate
Etapa #2: Instale o Undetected ChromeDriver
Instale o Undetected ChromeDriver via pacote pip:
language
pip install undetected_chromedriver
Esta biblioteca instalará automaticamente o Selenium, pois é uma de suas dependências.
Etapa #3: Configuração inicial
Crie um arquivo scraper.py e importe undetected_chromedriver:
language
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
import json
# Inicializa uma instância do Chrome
driver = uc.Chrome()
# Conecta-se à página de destino
driver.get("https://scrapeless.com")
# Lógica de scraping...
# Fecha o navegador
driver.quit()
Etapa #4: Implemente a lógica de scraping
Agora vamos adicionar a lógica para extrair dados da página da Apple:
language
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
import json
import time
# Cria uma instância do driver web do Chrome
driver = uc.Chrome()
# Conecta-se ao site da Apple
driver.get("https://www.apple.com/fr/")
# Dá algum tempo para a página carregar completamente
time.sleep(3)
# Dicionário para armazenar informações do produto
apple_products = {}
try:
# Encontra seções de produtos (usando as classes do HTML fornecido)
product_sections = driver.find_elements(By.CSS_SELECTOR, ".homepage-section.collection-module .unit-wrapper")
for i, section in enumerate(product_sections):
try:
# Extrai o nome do produto (título)
headline = section.find_element(By.CSS_SELECTOR, ".headline, .logo-image").get_attribute("textContent").strip()
# Extrai a descrição (subtítulo)
subhead_element = section.find_element(By.CSS_SELECTOR, ".subhead")
subhead = subhead_element.text
# Obtém o link se disponível
link = ""
try:
link_element = section.find_element(By.CSS_SELECTOR, ".unit-link")
link = link_element.get_attribute("href")
except:
pass
apple_products[f"product_{i+1}"] = {
"name": headline,
"description": subhead,
"link": link
}
except Exception as e:
print(f"Erro ao processar a seção {i+1}: {e}")
# Exporta os dados raspados para JSON
with open("apple_products.json", "w", encoding="utf-8") as json_file:
json.dump(apple_products, json_file, indent=4, ensure_ascii=False)
print(f"Produtos da Apple raspados com sucesso: {len(apple_products)}")
except Exception as e:
print(f"Erro durante a raspagem: {e}")
finally:
# Fecha o navegador e libera seus recursos
driver.quit()
Execute com:
language
python scraper.py
Undetected ChromeDriver: Uso avançado
Agora que você sabe como a biblioteca funciona, está pronto para explorar alguns cenários mais avançados.
Escolha uma versão específica do Chrome
Você pode especificar uma versão específica do Chrome para a biblioteca usar definindo o argumento version_main:
language
import undetected_chromedriver as uc
# Especifica a versão de destino do Chrome
driver = uc.Chrome(version_main=105)
Com sintaxe
Para evitar chamar manualmente o método quit() quando você não precisar mais do driver, você pode usar a sintaxe with:
language
import undetected_chromedriver as uc
with uc.Chrome() as driver:
driver.get("https://example.com")
# Resto do seu código...
Limitações do Undetected ChromeDriver
Embora o undetected_chromedriver seja uma biblioteca Python poderosa, ele possui algumas limitações conhecidas:
Bloqueios de IP
A biblioteca não oculta seu endereço IP. Se você estiver executando um script de um data center, é muito provável que a detecção ainda ocorra. Da mesma forma, se seu IP doméstico tiver má reputação, você também poderá ser bloqueado.
Para ocultar seu IP, você precisa integrar o navegador controlado a um servidor proxy, como demonstrado anteriormente.
Sem suporte para navegação GUI
Devido ao funcionamento interno do módulo, você deve navegar programaticamente usando o método get(). Evite usar a GUI do navegador para navegação manual — interagir com a página usando o teclado ou o mouse aumenta o risco de detecção.
Suporte limitado para modo sem cabeça
Oficialmente, o modo sem cabeça não é totalmente suportado pela biblioteca undetected_chromedriver. No entanto, você pode experimentar usando:
language
driver = uc.Chrome(headless=True)
Problemas de estabilidade
Os resultados podem variar devido a inúmeros fatores. Nenhuma garantia é fornecida, além de esforços contínuos para entender e combater algoritmos de detecção. Um script que contorna com sucesso os sistemas anti-bot hoje pode falhar amanhã se os métodos de proteção receberem atualizações.
Alternativa recomendada: Scrapeless
Dadas as limitações do Undetected ChromeDriver, o Scrapeless oferece uma alternativa mais robusta e confiável para web scraping sem ser bloqueado.
Nós protegemos firmemente a privacidade do site. Todos os dados neste blog são públicos e são usados apenas como demonstração do processo de rastreamento. Não salvamos nenhuma informação e dados.
Por que o Scrapeless é superior
Scrapeless é um serviço de navegador remoto que aborda os problemas inerentes à abordagem Undetected ChromeDriver:
-
Atualizações constantes: Ao contrário do Undetected ChromeDriver, que pode parar de funcionar após atualizações do sistema anti-bot, o Scrapeless é continuamente atualizado por sua equipe.
-
Rotação de IP integrada: O Scrapeless oferece rotação automática de IP, eliminando o problema de bloqueio de IP do Undetected ChromeDriver.
-
Configuração otimizada: Os navegadores Scrapeless já são otimizados para evitar detecção, o que simplifica muito o processo.
-
Resolução automática de CAPTCHA: O Scrapeless pode resolver automaticamente os CAPTCHAs que você pode encontrar.
-
Compatível com várias estruturas: Funciona com Playwright, Puppeteer e outras ferramentas de automação.
Acesse o Scrapeless para uma avaliação gratuita.
Leitura recomendada: Como contornar o Cloudflare com o Puppeteer
Como usar o Scrapeless para raspar a web (sem ser bloqueado)
Veja como implementar uma solução semelhante com o Scrapeless usando o Playwright:
Etapa 1: Registre-se e faça login no Scrapeless
Etapa 2: Obtenha a CHAVE DE API do Scrapeless

Etapa 3: Você pode integrar o seguinte código ao seu projeto
language
const {chromium} = require('playwright-core');
// URL de conexão do Scrapeless com seu token
const connectionURL = 'wss://browser.scrapeless.com/browser?token=YOUR_TOKEN_HERE&session_ttl=180&proxy_country=ANY';
(async () => {
// Conecta-se ao navegador remoto Scrapeless
const browser = await chromium.connectOverCDP(connectionURL);
try {
// Cria uma nova página
const page = await browser.newPage();
// Navega para o site da Apple
console.log('Navegando para o site da Apple...');
await page.goto('https://www.apple.com/fr/', {
waitUntil: 'domcontentloaded',
timeout: 60000
});
console.log('Página carregada com sucesso');
// Aguarda as seções de produtos ficarem disponíveis
await page.waitForSelector('.homepage-section.collection-module', { timeout: 10000 });
// Obtém produtos em destaque da página inicial
const products = await page.evaluate(() => {
const results = [];
// Obtém todas as seções de produtos
const productSections = document.querySelectorAll('.homepage-section.collection-module .unit-wrapper');
productSections.forEach((section, index) => {
try {
// Obtém o nome do produto - pode estar em .headline ou .logo-image
const headlineEl = section.querySelector('.headline') || section.querySelector('.logo-image');
const headline = headlineEl ? headlineEl.textContent.trim() : 'Produto Desconhecido';
// Obtém a descrição do produto
const subheadEl = section.querySelector('.subhead');
const subhead = subheadEl ? subheadEl.textContent.trim() : '';
// Obtém o link do produto
const linkEl = section.querySelector('.unit-link');
const link = linkEl ? linkEl.getAttribute('href') : '';
results.push({
name: headline,
description: subhead,
link: link
});
} catch (err) {
console.error(`Erro ao processar a seção ${index}: ${err.message}`);
}
});
return results;
});
// Exibe os resultados
console.log('Produtos da Apple encontrados:');
console.log(JSON.stringify(products, null, 2));
console.log(`Total de produtos encontrados: ${products.length}`);
} catch (error) {
console.error('Ocorreu um erro:', error);
} finally {
// Fecha o navegador
await browser.close();
console.log('Navegador fechado');
}
})();
Você também pode entrar no Discord do Scrapeless para participar do programa de suporte ao desenvolvedor e receber até 500 mil créditos de uso da API SERP gratuitamente.
Análise técnica aprimorada
Detecção de bot: Como funciona
Os sistemas anti-bot usam várias técnicas para detectar automação:
-
Impressão digital do navegador: Coleta dezenas de propriedades do navegador (fontes, canvas, WebGL, etc.) para criar uma assinatura única.
-
Detecção de WebDriver: Procura a presença da API WebDriver ou seus artefatos.
-
Análise comportamental: Analisa os movimentos do mouse, cliques, velocidade de digitação que diferem entre humanos e bots.
-
Detecção de anomalia de navegação: Identifica padrões suspeitos, como solicitações muito rápidas ou falta de carregamento de imagem/CSS.
Leitura recomendada: Como contornar o anti-bot
Como o Undetected ChromeDriver contorna a detecção
O Undetected ChromeDriver contorna essas detecções por:
-
Remover indicadores do WebDriver: Elimina a propriedade
navigator.webdriver
e outros rastros do WebDriver. -
Corrigir Cdc_: Modifica as variáveis do Controlador do Driver do Chrome que são assinaturas conhecidas do ChromeDriver.
-
Usar User-Agents realistas: Substitui os User-Agents padrão por strings atualizadas.
-
Minimizar as alterações de configuração: Reduz as alterações no comportamento padrão do navegador Chrome.
Código técnico mostrando como o Undetected ChromeDriver corrige o driver:
language
Extrato simplificado do código-fonte do Undetected ChromeDriver
def _patch_driver_executable():
"""
Corrige o binário do ChromeDriver para remover sinais reveladores de automação
"""
linect = 0
replacement = os.urandom(32).hex()
with io.open(self.executable_path, "r+b") as fh:
for line in iter(lambda: fh.readline(), b""):
if b"cdc_" in line.lower():
fh.seek(-len(line), 1)
newline = re.sub(
b"cdc_.{22}", b"cdc_" + replacement.encode(), line
)
fh.write(newline)
linect += 1
return linect
Por que o Scrapeless é mais eficaz
O Scrapeless adota uma abordagem diferente por:
-
Ambiente pré-configurado: Usando navegadores já otimizados para imitar usuários humanos.
-
Infraestrutura baseada em nuvem: Executando navegadores na nuvem com impressão digital adequada.
-
Rotação inteligente de proxy: Rotulando automaticamente os IPs com base no site de destino.
-
Gerenciamento avançado de impressões digitais: Mantendo impressões digitais de navegador consistentes durante a sessão.
-
Supressão de WebRTC, Canvas e Plugin: Bloqueando técnicas comuns de impressão digital.
Acesse o Scrapeless para uma avaliação gratuita.
Conclusão
Neste artigo, você aprendeu como lidar com a detecção de bots no Selenium usando o Undetected ChromeDriver. Esta biblioteca fornece uma versão corrigida do ChromeDriver para web scraping sem ser bloqueado.
O desafio é que tecnologias anti-bot avançadas como o Cloudflare ainda serão capazes de detectar e bloquear seus scripts. Bibliotecas como undetected_chromedriver são instáveis — embora possam funcionar hoje, podem não funcionar amanhã.
Para necessidades profissionais de scraping, soluções baseadas em nuvem como o Scrapeless oferecem uma alternativa mais robusta. Elas fornecem navegadores remotos pré-configurados, especificamente projetados para contornar medidas anti-bot, com recursos adicionais como rotação de IP e resolução de CAPTCHA.
A escolha entre Undetected ChromeDriver e Scrapeless depende de suas necessidades específicas:
- Undetected ChromeDriver: Bom para projetos menores, gratuito e de código aberto, mas requer mais manutenção e pode ser menos confiável.
- Scrapeless: Melhor para necessidades profissionais de scraping, mais confiável, constantemente atualizado, mas com um custo de assinatura.
Ao entender como essas tecnologias de desvio anti-bot funcionam, você pode escolher a ferramenta certa para seus projetos de web scraping e evitar as armadilhas comuns da coleta automatizada de dados.
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.