Como Rotacionar Proxies no Selenium Python: Um Tutorial Abrangente
Lead Scraping Automation Engineer
Domine sua raspagem com Selenium Python utilizando Scrapeless Proxies — a estrutura confiável para rotação de proxies sem interrupções e evitamento de bloqueios.
Principais Conclusões
- A rotação de proxies é essencial para raspagem de grandes volumes com Selenium para prevenir bans de IP e CAPTCHAs.
- A biblioteca
selenium-wireé a maneira mais simples de gerenciar e rotacionar proxies dentro de um script Selenium Python. - A rotação manual de proxies é viável para pequenos projetos, mas se torna ineficiente e pouco confiável para raspagem em nível de produção.
- Proxies residenciais rotativos premium, como os oferecidos pela Scrapeless, fornecem uma solução automatizada de alta taxa de sucesso para gerenciamento de proxies.
Para conseguir contornar sistemas sofisticados de anti-bot e evitar bloqueios ao raspar com Selenium, você deve implementar uma estratégia robusta de rotação de proxies. Este artigo o guiará através dos passos técnicos para alcançar isso em Python.
Por que você precisa rotacionar proxies para raspagem na web
A rotação de proxies é a prática de usar um endereço IP diferente para cada requisição, ou após um número definido de requisições, durante seu processo de raspagem. Enquanto usar um único proxy estático pode ocultar seu IP original, ele será eventualmente identificado e bloqueado pelos sites-alvo devido ao alto volume de requisições que dele se originam.
A rotação de proxies é crítica ao raspar a web com Selenium [1] porque encaminha suas requisições por um pool de IPs diversos. Isso faz com que seu raspador pareça como inúmeros usuários orgânicos, melhorando significativamente suas chances de contornar medidas anti-bot e bans de IP.
Você verá como implementar essa rotação na próxima seção. Antes disso, você deve estar familiarizado com configurando um único proxy no Selenium [2].
Como rotacionar proxies no Selenium Python
Implementar a rotação de proxies diretamente com Selenium puro pode ser complexo. Felizmente, uma extensão chamada Selenium Wire simplifica o processo permitindo que você configure proxies facilmente para sua instância de navegador.
Para começar, instale o Selenium Wire usando pip. Este comando também instalará as dependências necessárias do Selenium puro:
bash
pip install selenium-wire
Etapa 1: Construa seu Script Com Selenium Wire
O Selenium Wire mantém a mesma sintaxe da biblioteca padrão do Selenium, tornando a integração fluida. Vamos configurar um script básico para verificar seu endereço IP padrão.
Primeiro, importe as bibliotecas necessárias e configure uma instância do driver:
scraper.py
python
# importe as bibliotecas necessárias
from seleniumwire import webdriver
from selenium.webdriver.common.by import By
# configure uma instância do driver
driver = webdriver.Chrome()
Em seguida, envie uma requisição para um serviço de verificação de IP para visualizar seu endereço IP padrão:
scraper.py
python
# ...
# envie uma requisição para visualizar seu endereço IP atual
driver.get('https://httpbin.io/ip')
ip_address = driver.find_element(By.TAG_NAME, 'body').text
# imprima o endereço IP
print(ip_address)
A saída mostrará o IP atual da sua máquina:
{
"origin": "101.118.0.XXX:YYY"
}
Etapa 2: Obtenha uma Lista de Proxies
A próxima etapa é compilar uma lista de proxies para rotação. Para este tutorial, usaremos uma lista de exemplo. Observação: Proxies gratuitos são altamente não confiáveis e não devem ser usados para raspagem em produção.
python
# crie uma matriz de proxies
proxy_list = [
{'http': '103.160.150.251:8080', 'https': '103.160.150.251:8080'},
{'http': '38.65.174.129:80', 'https': '38.65.174.129:80'},
{'http': '46.105.50.251:3128', 'https': '46.105.50.251:3128'},
]
Etapa 3: Implemente e Teste a Rotação de Proxies
O Selenium Wire permite que você mude as configurações de proxy de uma instância de navegador em execução, o que é crucial para a rotação.
Primeiro, inicie o navegador com o primeiro proxy da sua lista:
scraper.py
python
# ...
# inicie a instância do driver com o primeiro proxy
driver = webdriver.Chrome(seleniumwire_options= {
'proxy': proxy_list[0],
})
# visite um site para disparar uma requisição
driver.get('https://httpbin.io/ip')
# obtenha o elemento do valor do proxy
ip = driver.find_element(By.TAG_NAME, 'body').text
# imprima o endereço IP atual
print(ip)
Para rotacionar, basta atualizar o valor driver.proxy e recarregar a página:
scraper.py
python
# ...
# mude para o segundo proxy:
driver.proxy = proxy_list[1]
recarregar a página com a mesma instância
driver.get('https://httpbin.io/ip')
obter o elemento de valor do proxy
ip2 = driver.find_element(By.TAG_NAME, 'body').text
imprimir o segundo endereço IP
print(ip2)
mudar para o terceiro proxy:
driver.proxy = proxy_list[2]
recarregar a página com a mesma instância
driver.get('https://httpbin.io/ip')
obter o elemento de valor do proxy
ip3 = driver.find_element(By.TAG_NAME, 'body').text
print(ip3)
driver.quit()
Este método de rotação manual demonstra o conceito central. No entanto, para raspagem em alto volume e em nível de produção, você precisa de uma solução mais robusta e automatizada.
Rotação de Proxy Automatizada com Scrapeless
Embora a rotação manual usando uma lista de proxies gratuitos seja um bom exercício de aprendizado, não é sustentável para raspagem web séria. Proxies gratuitos são lentos, pouco confiáveis e rapidamente são banidos. Para extração de dados profissional, especialmente para tarefas como raspar dados de redes sociais ou raspagem de SERP, você precisa de um serviço premium que gerencie a rotação automaticamente.
Scrapeless Proxy oferece uma solução automatizada de alto desempenho que elimina a necessidade de gestão manual de listas de proxies e lógica de rotação.
Scrapeless fornece um vasto pool de IPs residenciais rotativos que mudam automaticamente a cada solicitação, garantindo uma alta taxa de sucesso e mínimas interrupções. Ao simplesmente configurar seu script Selenium Wire para usar o endpoint do Scrapeless, o serviço gerencia todo o processo de rotação, incluindo tentativas de repetição e verificações de saúde de IP, nos bastidores.
Por que escolher Scrapeless para rotação de Proxy com Selenium?
- Rotação Automática: A plataforma gerencia toda a rotação de IP, eliminando a necessidade de código manual.
- Alta Taxa de Sucesso: Aproveitando um enorme pool de proxies residenciais e de ISP, Scrapeless garante que suas solicitações sejam bem-sucedidas.
- Integração Simplificada: Integre-se com Selenium Wire usando um único endpoint autenticado.
- Foco nos Dados: Você pode se concentrar totalmente em sua lógica de raspagem em vez da infraestrutura de proxy.
Para experimentar o poder da rotação automatizada de proxies, você pode iniciar um teste gratuito com Scrapeless:
Etapa 4 (Opcional): Adicionando Autenticação de Proxy
Ao usar um serviço premium como Scrapeless, você precisará incluir os detalhes de autenticação. Isso geralmente é feito passando as credenciais dentro do dicionário seleniumwire_options.
python
# Substitua pelos seus dados de autenticação do Scrapeless
PROXY_HOST = 'gate.scrapeless.com'
PROXY_PORT = 8000
PROXY_USER = 'seu_usuario'
PROXY_PASS = 'sua_senha'
proxy_options = {
'proxy': {
'http': f'http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}',
'https': f'https://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}',
'no_proxy': 'localhost,127.0.0.1' # Excluir endereços locais
}
}
driver = webdriver.Chrome(seleniumwire_options=proxy_options)
# ... seu código de raspagem
Ao usar um provedor premium, você ganha acesso a proxies confiáveis e de alta qualidade que gerenciam a rotação e as verificações de saúde automaticamente, permitindo que seu scraper Selenium funcione em grande escala sem interrupção.
Conclusão
A rotação de proxies é um requisito inegociável para qualquer projeto sério e em grande escala de raspagem web usando Selenium Python. Embora selenium-wire forneça a estrutura necessária para configuração de proxy, a verdadeira eficiência e confiabilidade vêm do uso de um serviço de proxy premium e automatizado como Scrapeless. Ao descarregar a complexidade da gestão de proxies, você pode garantir uma alta taxa de sucesso e se concentrar na extração dos dados valiosos que precisa.
Perguntas Frequentes (FAQ)
O que é um proxy rotativo?
Um proxy rotativo é um tipo de servidor proxy que atribui um novo endereço IP de seu pool a um usuário para cada solicitação de conexão, ou em intervalos regulares. Essa rotação torna difícil para os sites-alvo identificarem e bloquearem a atividade de raspagem do usuário, uma vez que as solicitações parecem vir de muitos usuários distintos e diferentes.
Por que a rotação de proxy é necessária para Selenium?
O Selenium é frequentemente usado para tarefas complexas de scraping que requerem renderização de navegador, o que geralmente envolve um alto volume de solicitações. Sem rotação de proxy, o único endereço IP usado pela instância do Selenium seria rapidamente sinalizado e bloqueado por sistemas anti-bot, interrompendo o processo de scraping.
O selenium-wire é a única maneira de rotacionar proxies em Python?
Não, não é a única maneira, mas é um dos métodos mais convenientes para integrar proxies diretamente com uma instância do navegador Selenium. Outros métodos incluem usar uma camada separada de gerenciamento de proxy ou integrar-se com uma API de proxy dedicada que gerencia a rotação antes que a solicitação chegue ao seu script.
Quais são os benefícios de usar um serviço de proxy premium como o Scrapeless?
Serviços premium como o Scrapeless oferecem vários benefícios em relação a proxies gratuitos ou gerenciados por conta própria:
- Alta Confiabilidade: Acesso a um grande pool de IPs residenciais e de ISP limpos e de alta qualidade.
- Rotação Automática: O serviço gerencia toda a rotação, tentativas e verificações de saúde de IP.
- Velocidade e Desempenho: Garantia de baixa latência e alta disponibilidade.
- Integração Simplificada: Configuração fácil com um único ponto de autenticação.
Referências
[1] Documentação do Selenium WebDriver
[2] Documentação do Socket do Python
[3] Especificação de Proxy HTTP do W3C
[4] Design das Configurações de Proxy do Chromium
[5] Tutorial de Web Scraping em Python do DataCamp
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.



