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.
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.
- Configuração do Firefox: Abra a página de configuração do Firefox digitando
about:configna barra de endereço. Localize a flag relacionada ao WebDriver e defina-a parafalse. - 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:
- 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" - 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:
- 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.