Cómo configurar proxies en Selenium para Web Scraping

Cómo hacerlo, Python, Proxies, 27 de noviembre de 20245 minutos de lectura

Cuando se trabaja con Selenium para el web scraping o la automatización, la integración de proxies es una necesidad. Los proxies le permiten evitar prohibiciones, límites de velocidad y restricciones geográficas, haciendo que sus tareas sean fluidas y eficientes. Pero configurar proxies en Selenium puede ser un reto, especialmente si se trata de autenticación o se necesita monitorizar peticiones HTTP. Aquí es donde entra Selenium Wire.

Selenio-Wire

Selenium Wire es una versión extendida de Selenium que le añade funciones avanzadas adicionales permitiéndole autenticar proxies fácilmente, interceptar peticiones y respuestas HTTP y depurar el tráfico de red.

En esta guía, le mostraremos cómo configurar proxies en Selenium utilizando selenium-wire y el webdriver-manager. Normalmente, es necesario descargar los archivos binarios de los webdrivers de los navegadores y mantenerlos actualizados periódicamente. El sitio webdriver-manager simplifica este proceso encargándose de estas tareas por usted.

Al final de este blog, tendrás una configuración de Selenium totalmente adaptada a los proxies de ProxyScrape , lista para afrontar cualquier reto que se te presente. ¡A trabajar!

TL;DR

Para acceder al script completo sin pasar por todo el tutorial, haga clic en este enlace para copiar el código completo.

Requisitos previos 

Antes de sumergirnos en la configuración de proxies en Selenium, asegúrate de que tienes las siguientes herramientas y librerías instaladas y listas:

  • Python instalado
    • Asegúrese de tener Python 3.7 o superior instalado en su sistema.
    • Puede descargar la última versión desde el sitio web oficial de Python.
  • Paquetes Python necesarios (instalación Pip)
    • selenium-wire
    • webdriver-manager

Ejecute el siguiente comando para instalar todas las dependencias:

pip install selenium-wire webdriver-manager

Nota: Es posible que aparezca el error "ModuleNotFoundError: No module named blinker._saferef". Esto se puede resolver mediante la actualización de la biblioteca de parpadeo a la versión 1.7.0

  • Empiece por Desinstalación de la versión actual de intermitente
pip uninstall blinker
  • A continuación, instale la versión específica mencionada anteriormente:
pip install blinker==1.7.0

Una vez establecidos los requisitos previos, vamos a desglosar la configuración del script en tres sencillos pasos:

Configuración de proxies en Selenium: El script

Ahora que ya hemos cubierto los requisitos previos, pasemos al guión propiamente dicho. Esta guía paso a paso le ayudará a integrar ProxyScrape apoderados residenciales con Selenium utilizando selenium-wire y webdriver-manager.

1. Importación de las bibliotecas necesarias

Empezaremos por importar las bibliotecas necesarias:

importar re
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Servicio
from selenium.webdriver.chrome.options import Opciones
from webdriver_manager.chrome import ChromeDriverManager

2. Configuración del proxy

Defina los detalles de su proxy ProxyScrape :

dirección_proxy = "rp.proxyscrape.com:6060"
nombre_usuario_proxy = "tu_nombre_usuario_proxy"
contraseña_proxy = "tu_contraseña_proxy"
  • Sustituir los marcadores de posición (nombre_usuario_proxy, contraseña_proxy) con sus credenciales reales de ProxyScrape .
  • rp.proxyscrape.com:6060 es el punto final del proxy residencial ProxyScrape .

3. Opciones de cable de selenio

Configure el proxy en Selenium Wire:

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

4. Configuración de las opciones de Chrome

Optimiza la configuración de Chrome para mejorar el rendimiento:

chrome_options = Opciones()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

5. Inicializar WebDriver

Puesta en marcha selenium-wire con webdriver-manager:

service = Servicio(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, seleniumwire_options=sw_options, options=chrome_options)
  • ChromeDriverManager: Descarga y configura automáticamente el binario ChromeDriver correcto para la versión de tu navegador.
  • seleniumwire_options: Configura el proxy para Selenium Wire.
  • Opciones: Aplica la configuración específica de Chrome.

6. Acceder al sitio web de destino

Navegue hasta el endpoint ProxyScrape Judge para probar su proxy:

driver.get('https://ssl-judge2.api.proxyscrape.com/')
  • ProxyScrape Juez: Este endpoint devuelve información sobre el proxy que se está utilizando, como su dirección IP y cabeceras.

7. Analizar la respuesta

Extraer y mostrar su dirección IP proxy utilizando regex:

# Ejemplo: Extraer la IP de la respuesta
respuesta = conductor.fuente_página

# usando simple regex para parsear ip de origen
print("Respuesta:", respuesta)
print("Su IP es:", re.search("HTTP_X_FORWARDED_FOR = (\d+\.)+\d+", response).group().split("=")[-1])
# salir de la instancia del navegador
driver.quit()
  • Explicación Regex:
    • Coincide con la cabecera HTTP_X_FORWARDED_FOR y extrae la IP proxy
    • Divide el resultado para aislar la dirección IP

Conclusión

En conclusión, el uso de proxies residencialesProxyScrape con Selenium Wire es una solución robusta para cualquiera que necesite capacidades avanzadas de web scraping y automatización con mayor privacidad y seguridad.

Siguiendo esta guía, puede configurar un entorno sin problemas que no sólo evita las restricciones, sino que también requiere esfuerzos de configuración mínimos. Este método aprovecha potentes herramientas como Selenium Wire y WebDriver Managerpara gestionar y enrutar eficazmente el tráfico a través de proxies, garantizando que las tareas de scraping sigan siendo eficientes y fiables.

Si necesita ayuda con el web scraping o tiene preguntas sobre nuestro producto, no dude en ponerse en contacto con nosotros a través del chat en directo. También puede unirse a nuestra comunidad de Discord para recibir asistencia y actualizaciones.