# 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.

- Autor: [Brandon Perry](https://fineproxy.org/pt/brandon-perry/)
- Publicado: 2024-06-03T11:05:26.000Z
- Atualizado: 2024-05-27T11:43:25.000Z
- URL canônica: https://fineproxy.org/pt/selenium-python-3-how-to-bypass-selenium-detection-using-python-user-agents-and-background-execution/

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**:

```python
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**:

```python
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**:

```python
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**:

```python
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**:

```python
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.
