NOVO! |Uma chamada de API, dados limpos de volta. Sem precisar de scrapers.Ganhe 10.000 tokens grátis →

Selenium Python (3). Como Contornar Detecção de Selenium Usando Python: User Agents e Execução em Segundo Plano

Aprenda como contornar a detecção de navegação automatizada usando Python, user agents e execução em segundo plano. Aperfeiçoe suas habilidades de web scraping e automação.

Publicado3 de junho de 2024
Tempo de leitura3 min

Web scraping e automação de navegador tornaram-se essenciais para muitas empresas e desenvolvedores. No entanto, muitos sites agora detectam e bloqueiam a navegação automatizada. Este artigo explorará como ignorar a detecção do Selenium usando Python, manipulando agentes de usuário e executando o Selenium em segundo plano. Iremos nos aprofundar em etapas detalhadas, ferramentas e práticas recomendadas para garantir web scraping bem-sucedido.

Entendendo Detecção de Selenium#

Antes de contornar a detecção, vamos entender como ela funciona. Websites podem detectar Selenium verificando a presença de certas flags e propriedades do web driver. Quando um site identifica essas flags, pode bloquear o acesso ou apresentar dados enganosos. Por exemplo, quando você abre um site usando um navegador Chrome padrão, ele responde como esperado. Porém, quando você abre o mesmo site usando Selenium, o website pode detectar a automação e bloqueá-la. Essa detecção acontece porque o Selenium define flags específicas que os websites podem procurar.

Alterando WebDriver Flags#

Para contornar a detecção de Selenium, um método eficaz é modificar as flags do WebDriver.

  1. Configuração do Firefox: Abra a página de configuração do Firefox digitando about:config na barra de endereço. Localize a flag relacionada ao WebDriver e defina-a para false.
  2. Implementação de Código:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

Este script desabilita a flag detecção do WebDriver, fazendo o navegador aparecer como uma instância conduzida por um usuário comum.

Agentes do usuário#

Um user agent é uma string que um navegador envia para um servidor web para se identificar. Alterar a string do user agent pode fazer requisições do Selenium serem indistinguíveis de requisições regulares do navegador.

Etapas para Alterar User Agent:

  1. Identifique uma string de user agent comum: Exemplo: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. Implemente a Alteração no Selenium:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

Ao definir um user agent customizado, podemos contornar muitas detecções básicas.

Executando Selenium em Segundo Plano#

Executar o navegador em segundo plano é outro aspecto crucial para evitar detecção. Isso pode ser alcançado executando o navegador em modo headless.

Implementação:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

Executar em modo headless significa que nenhuma interface gráfica é exibida, o que é essencial para executar tarefas automatizadas em servidores.

Desabilitando Notificações e Sons do Navegador#

A navegação automatizada geralmente envolve lidar com pop-ups e notificações inesperadas. Desabilitar esses elementos pode agilizar o processo.

Exemplo de código:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

Este script desabilita notificações e silencia o áudio, garantindo automação ininterrupta.

Exemplo de Análise de Dados#

Vamos considerar um exemplo prático de análise de nicknames de um site que gera nomes de usuário aleatórios.

Etapas:

  1. Carregue o site e interaja com os elementos:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

Conclusão#

Ao manipular sinalizadores do WebDriver, alterar os agentes do usuário, executar o Selenium em segundo plano e desativar as notificações do navegador, você pode ignorar efetivamente a detecção do Selenium. Essas técnicas são essenciais para web scraping e automação contínua e não detectada. A implementação desses métodos garante que suas tarefas automatizadas permaneçam ininterruptas e eficientes. Lembre-se de sempre usar web scraping e automação de forma ética, respeitando os termos de serviço do site e as leis de privacidade de dados. Para técnicas mais avançadas e atualizações regulares, fique ligado em nosso blog em FineProxy.org. Sinta-se à vontade para compartilhar suas idéias e comentários nos comentários abaixo. Se você gostou deste artigo, não esqueça de se inscrever em nosso canal e deixar seu like. Boa raspagem!

Implementando essas etapas e ajustando as configurações conforme necessário, você pode garantir que seus projetos de automação funcionem sem problemas e sem ser detectados.