Como configurar proxies no Selenium para Web Scraping

Como fazer, Pitão, Proxies, 27 de novembro de 20245 minutos de leitura

Ao trabalhar com o Selenium para raspagem ou automação da Web, a integração de proxies é uma obrigação. Os proxies permitem-lhe contornar proibições, limites de taxa e restrições geográficas, tornando as suas tarefas simples e eficientes. Mas configurar proxies no Selenium pode ser um desafio, especialmente se estiver a lidar com autenticação ou precisar de monitorizar pedidos HTTP. É aí que entra o Selenium Wire.

Selénio-Fio

O Selenium Wire é uma versão alargada do Selenium que adiciona funcionalidades avançadas extra, permitindo-lhe autenticar facilmente proxies, intercetar pedidos e respostas HTTP e depurar o tráfego de rede.

Neste guia, mostraremos como configurar proxies no Selenium usando fio de selénio e o gerenciador de webdriver. Normalmente, é necessário descarregar os ficheiros binários para os webdrivers dos navegadores e manter actualizações regulares. O gerenciador de webdriver simplifica este processo, tratando destas tarefas por si.

No final deste blogue, terá uma configuração do Selenium totalmente configurada e adaptada a ProxyScrape proxies, pronta para enfrentar quaisquer desafios que surjam no seu caminho. Vamos mergulhar de cabeça!

TL;DR

Para aceder ao script completo sem passar por todo o tutorial, clique nesta ligação para copiar o código completo.

Pré-requisitos 

Antes de nos debruçarmos sobre a configuração de proxies no Selenium, certifique-se de que tem as seguintes ferramentas e bibliotecas instaladas e prontas:

  • Python instalado
    • Certifique-se de que tem o Python 3.7 ou superior instalado no seu sistema.
    • Pode descarregar a versão mais recente a partir do sítio Web oficial do Python.
  • Pacotes Python necessários (instalação do Pip)
    • fio de selénio
    • gerenciador de webdriver

Execute o seguinte comando para instalar todas as dependências:

pip install selenium-wire webdriver-manager

Nota: Poderá deparar-se com o erro "ModuleNotFoundError: Nenhum módulo chamado blinker._saferef". Isso pode ser resolvido fazendo o downgrade da biblioteca blinker para a versão 1.7.0

  • Comece por Desinstalação a versão atual do pisca-pisca
pip uninstall blinker
  • Em seguida, instale a versão específica mencionada acima:
pip install blinker==1.7.0

Com os pré-requisitos estabelecidos, vamos decompor a configuração do script em três passos simples:

Configurando Proxies no Selenium: O Script

Agora que já abordámos os pré-requisitos, vamos passar ao guião propriamente dito. Este guia passo a passo ajudá-lo-á a integrar ProxyScrape procurações residenciais com o Selenium utilizando fio de selénio e gerenciador de webdriver.

1. Importar as bibliotecas necessárias

Começamos por importar as bibliotecas necessárias:

importar re
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

2. Configuração de proxy

Defina os detalhes do seu proxy ProxyScrape :

proxy_address = "rp.proxyscrape.com:6060"
 nome_de_utilizador_do_proxy= "o seu nome_de_utilizador_do_proxy"
palavra-passe_proxy = "a sua palavra-passe_proxy"
  • Substituir os marcadores de posição (nome_de_utilizador do proxy, palavra-passe do proxy) com as suas credenciais reais ProxyScrape .
  • rp.proxyscrape.com:6060 é o ponto de extremidade do proxy residencial ProxyScrape .

3. Opções do fio de selénio

Configurar o proxy no Selenium Wire:

sw_options = {
   'proxy': {
       'http': f'http://{proxy_username}:{proxy_password}@{proxy_address}',
       'https': f'https://{proxy_username}:{proxy_password}@{proxy_address}',
   }
}

4. Configurar as opções do Chrome

Otimizar as definições do Chrome para um melhor desempenho:

chrome_options = Opções()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

5. Inicializar o WebDriver

Configurar fio de selénio com gerenciador de webdriver:

serviço = Serviço(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, seleniumwire_options=sw_options, options=chrome_options)
  • ChromeDriverManager: Descarrega e configura automaticamente o binário correto do ChromeDriver para a versão do seu browser.
  • seleniumwire_options: Configura o proxy para o Selenium Wire.
  • opções: Aplica definições específicas do Chrome.

6. Aceder ao sítio Web de destino

Navegue até o ponto de extremidade ProxyScrape Judge para testar seu proxy:

driver.get('https://ssl-judge2.api.proxyscrape.com/')
  • ProxyScrape Julgar: Este ponto final devolve informações sobre o proxy que está a ser utilizado, como o seu endereço IP e cabeçalhos.

7. Analisar a resposta

Extraia e apresente o seu endereço IP proxied utilizando regex:

# Exemplo: Extrair o IP da resposta
resposta = driver.page_source

# usando regex simples para analisar o IP de origem
print("Resposta:", resposta)
print("O seu IP é:", re.search("HTTP_X_FORWARDED_FOR = (\d+\.)+\d+", response).group().split("=")[-1])
# sair da instância do browser
driver.quit()
  • Explicação de Regex:
    • Corresponde ao cabeçalho HTTP_X_FORWARDED_FOR e extrai o IP proxied
    • Divide o resultado para isolar o endereço IP

Conclusão

Em conclusão, a utilização de proxies residenciaisProxyScrape com o Selenium Wire é uma solução robusta para qualquer pessoa que necessite de capacidades avançadas de automatização e recolha de dados da Web com maior privacidade e segurança.

Seguindo este guia, você pode configurar um ambiente contínuo que não apenas contorna as restrições, mas também exige esforços mínimos de configuração. Este método aproveita ferramentas poderosas como o Selenium Wire e o WebDriver Managerpara gerir e encaminhar eficazmente o tráfego através de proxies, assegurando que as suas tarefas de recolha de dados permanecem eficientes e fiáveis.

Se precisar de ajuda com a raspagem da Web ou tiver dúvidas sobre o nosso produto, não hesite em contactar-nos através do chat em direto. Também pode juntar-se à nossa comunidade Discord para obter apoio e actualizações.