SeleniumBase está diseñado como un envoltorio para ejecutar instancias de Selenium en un entorno de pruebas. Dicho esto, es mucho más que un simple envoltorio. SeleniumBase nos permite ejecutar Selenium utilizando un Proxy autenticado.
Problemas inherentes al Proxy con Selenium
Selenium no tiene un buen soporte para proxies. Aunque se puede pasar un argumento --proxy-server a Selenium, no hay soporte para proxies autenticados. Pero la cosa empeora. Durante años, SeleniumWire fue la opción preferida para usar proxies con Selenium. La integración era increíblemente fácil. Lamentablemente, SeleniumWire quedó obsoleto hace más de un año y no ha recibido ninguna actualización en más de dos años.

Introducción
Para empezar, tenemos que instalar SeleniumBase y escribir un caso de prueba. El caso de prueba es lo que realmente controla Selenium y ejecuta nuestra instancia de webdriver por nosotros.
Instalación
pip install seleniumbase
Escribir un caso de prueba
Aquí hay un caso de prueba sencillo. El código siguiente realiza una solicitud a la API de IPinfo. Una vez que recibimos nuestra respuesta JSON, la analizamos y imprimimos su contenido en la consola.
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
#ir al sitio
self.driver.get("https://ipinfo.io/json")
#cargar la respuesta json
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#iterar a través del diccionario e imprimir su contenido
for k,v in location_info.items():
print(f"{k}: {v}")
Invocar la prueba
Para ejecutar realmente el código, necesitamos ejecutar la prueba. En lugar de usar python nombre_de_tu_script.py, vamos a usar pytest.
Sin Proxy
Si desea ejecutar su script de prueba sin un Proxy, puede utilizar el siguiente comando.
pytest proxy_test.py -s
Recibirá una respuesta similar a esta.
=================================================== inicio de la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
directorio raíz: /home/nultinator/clients/bright-data/seleniumbase-Proxies
complementos: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
ciudad: Westland
región: Michigan
país: EE. UU.
ubicación: 42.3242, -83.4002
org: AS12083 WideOpenWest Finance LLC
postal: 48185
zona horaria: America/Detroit
léame: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 1,01 s ====================================================
Configuración del Proxy
Para utilizar un Proxy, solo tenemos que usar el indicador --proxy seguido de la URL de nuestro Proxy. Consulte el formato a continuación.
--proxy=tu_url_proxy:tu_puerto_proxy
Proxy gratuito
A continuación se muestra un ejemplo en el que se utiliza un Proxy gratuito. La dirección IP es 155.54.239.64 y nos comunicamos con él en el puerto 80.
--Proxy=155.54.239.64:80
Proxy autenticado
Los proxies autenticados se gestionan de la misma manera. Con un Proxy autenticado, solo tienes que incluir tu nombre de usuario y contraseña en la URL.
Proxy=<TU_NOMBRE_DE_USUARIO>:<TU_CONTRASEÑA>@<URL_DEL_PROXY>:<PUERTO_DEL_PROXY>
Mejores tipos y proveedores de proxies autenticados
Cuando se utilizan proxies autenticados con Selenium, las mejores opciones son los Proxies residenciales, los Proxies de centro de datos y los Proxies ISP, cada uno de los cuales ofrece diferentes niveles de anonimato y fiabilidad. Los proxies residenciales proporcionan las tasas de éxito más altas al utilizar direcciones IP de usuarios reales, lo que los hace ideales para eludir la detección de bots. Los proxies de centro de datos son más rápidos y rentables, pero más fáciles de detectar. Los proxies ISP combinan las ventajas de ambos, ofreciendo velocidad con altos niveles de confianza.
Proveedores recomendados:
- geolocalización
- Proxy rotativo
Para el scraping con SeleniumBase, los Proxies residenciales de Bright Data son la opción más fiable, ya que garantizan altas tasas de éxito y un mínimo de bloqueos.
Funcionamiento con un Proxy
El ejemplo siguiente está configurado para ejecutarse con uno de nuestros proxies aquí en Bright Data. Asegúrese de sustituir el nombre de usuario, el nombre de la zona y la contraseña por los suyos propios.
pytest proxy_test.py --proxy=brd-customer-<TU-NOMBRE-DE-USUARIO>-zone-<TU-NOMBRE-DE-ZONA>:<TU-CONTRASEÑA>@brd.superproxy.io:33335 -s
Cuando lo ejecutamos, obtenemos el siguiente resultado. Si lo miras detenidamente, verás que nuestra ubicación ha cambiado.
=================================================== inicio de la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
ciudad: Piscataway
región: Nueva Jersey
país: EE. UU.
ubicación: 40.4993, -74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
zona horaria: America/New_York
léame: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 3,25 s ====================================================
Control de su ubicación
Con nuestros Proxies, incluso puede elegir su ubicación. Para ello, utilice la bandera del país. Cada país tiene un código de dos letras que puede introducir en el Proxy.
pytest proxy_test.py --proxy=brd-customer-<SU-NOMBRE-DE-USUARIO>-zone-<SU-NOMBRE-DE-ZONA>:<SU-CONTRASEÑA>[email protected]:33335 -s
Cuando utiliza es (España) como código de país, se le redirige a través de un Proxy en España. Puede verificarlo en la siguiente salida.
=================================================== inicio de la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 176.119.14.158
ciudad: Paracuellos de Jarama
región: Madrid
país: ES
ubicación: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28860
zona horaria: Europe/Madrid
léame: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 3,98 s ====================================================
Puede consultar nuestra documentación sobre geolocalización aquí.
Proxy rotativo
Con solo los conceptos básicos de Python, puede crear un sistema de Proxy bastante bueno. En el código siguiente, utilizamos un conjunto de códigos de país, pero estos se pueden sustituir fácilmente por IP de Proxy reales. countries contiene nuestra lista de códigos de país. A continuación, los iteramos y ejecutamos nuestra prueba de Proxy utilizando los cuatro códigos de país.
us: Estados Unidoses: Españail: Israelgb: Gran Bretaña
import subprocess
#lista de códigos de países
countries = [
"us",
"es",
"il",
"gb",
]
#iterar a través de los países y crear un comando de shell para cada uno
for country in countries:
comando = f"pytest proxy_test.py --proxy=brd-customer-<TU-NOMBRE-DE-USUARIO>-<TU-NOMBRE-DE-ZONA>-país-{país}:[email protected]:33335 -s"
#ejecuta el comando de shell
subproceso.ejecutar(comando, shell=True)
Puede ejecutar esto como un archivo Python normal.
python rotate_proxies.py
Al ejecutar el código, debería obtener un resultado similar a este.
(Linux utiliza --headless de forma predeterminada. Para anularlo, utilice --headed / --gui. Para el modo Xvfb, utilice --xvfb. También puede ocultar esta información utilizando --headless / --headless2 / --uc).
=================================================== inicio de la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 164.90.142.33
ciudad: Clifton
región: Nueva Jersey
país: EE. UU.
ubicación: 40.8344, -74.1377
org: AS14061 DigitalOcean, LLC
postal: 07014
zona horaria: America/New_York
léame: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 3,84 s ====================================================
(Linux utiliza --headless de forma predeterminada. Para anularlo, utilice --headed / --gui. Para el modo Xvfb, utilice --xvfb. También puede ocultar esta información utilizando --headless / --headless2 / --uc).
=================================================== Comienza la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 5.180.9.15
ciudad: Madrid
región: Madrid
país: ES
ubicación: 40.4066,-3.6724
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28007
zona horaria: Europe/Madrid
léame: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 3,60 s ====================================================
(Linux utiliza --headless de forma predeterminada. Para anularlo, utilice --headed / --gui. Para el modo Xvfb, utilice --xvfb. También puede ocultar esta información utilizando --headless / --headless2 / --uc).
=================================================== Comienza la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
directorio raíz: /home/nultinator/clients/bright-data/seleniumbase-Proxies
complementos: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 64.79.233.151
ciudad: Tel Aviv
región: Tel Aviv
país: IL
ubicación: 32.0809,34.7806
org: AS9009 M247 Europe SRL
zona horaria: Asia/Jerusalén
léame: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 3,36 s ====================================================
(Linux utiliza --headless de forma predeterminada. Para anularlo, utilice --headed / --gui. Para el modo Xvfb, utilice --xvfb. También puede ocultar esta información utilizando --headless / --headless2 / --uc).
=================================================== Comienza la sesión de prueba ===================================================
plataforma linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
directorio raíz: /home/nultinator/clients/bright-data/seleniumbase-Proxies
complementos: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 elemento recopilado
proxy_test.py ip: 185.37.3.107
ciudad: Londres
región: Inglaterra
país: GB
ubicación: 51.5085,-0.1257
org: AS9009 M247 Europe SRL
postal: E1W
timezone: Europe/London
readme: https://ipinfo.io/missingauth.
==================================================== 1 aprobado en 2,90 s ====================================================
Como puede ver, con muy poco código, estamos controlando Proxies en EE. UU., España, Israel y Gran Bretaña.
Conclusión
Al realizar el scraping web, SeleniumBase abre capacidades en Selenium que muchas personas consideran imposibles. A lo largo de esta guía, ha aprendido a configurar proxies, controlar su geolocalización e incluso utilizar proxies rotativos. Estas herramientas le ayudarán a superar la mayoría de los mecanismos de bloqueo que se le presenten.
Aproveche todo el potencial del rastreo basado en Selenium con los servicios de Proxy líderes en el sector de Bright Data. ¡Comience hoy mismo su prueba gratuita y disfrute de una recopilación de datos fluida y fiable a gran escala!