SeleniumBase está diseñado como un wrapper para ejecutar instancias de Selenium en un entorno de pruebas. Dicho esto, es mucho más que un simple wrapper. SeleniumBase nos permite ejecutar Selenium usando un proxy autenticado.
Problemas Inherentes de Proxy Con Selenium
Selenium no tiene muy buen soporte de proxy. Aunque puedes pasar un argumento --proxy-server a Selenium, no hay soporte para proxies autenticados. Pero se pone peor. Durante años, SeleniumWire fue la opción preferida al 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 actualizaciones en más de dos años.

Primeros Pasos
Para empezar, necesitamos instalar SeleniumBase y escribir un caso de prueba. El caso de prueba es lo que realmente controla Selenium y ejecuta nuestra instancia de webdriver.
Instalación
pip install seleniumbase
Escribiendo un Caso de Prueba
Aquí tienes un caso de prueba simple. El código a continuación hace una solicitud a la API de IPinfo. Una vez que recibimos nuestra respuesta JSON, la parseamos e 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):
#go to the site
self.driver.get("https://ipinfo.io/json")
#load the json response
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#iterate through the dict and print its contents
for k,v in location_info.items():
print(f"{k}: {v}")
Invocando La Prueba
Para ejecutar realmente el código, necesitamos ejecutar la prueba. En lugar de usar python name_of_your_script.py, en realidad vamos a usar pytest.
Sin Proxy
Si deseas ejecutar tu script de prueba sin un proxy, puedes usar el comando a continuación.
pytest proxy_test.py -s
Recibirás una respuesta similar a esta.
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
city: Westland
region: Michigan
country: US
loc: 42.3242,-83.4002
org: AS12083 WideOpenWest Finance LLC
postal: 48185
timezone: America/Detroit
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 1.01s ====================================================
Configuración de Proxy
Para usar un proxy, simplemente necesitamos usar la bandera --proxy seguida de nuestra url de proxy. Mira el formato a continuación.
--proxy=your_proxy_url:your_proxy_port
Proxy Gratuito
Aquí tienes un ejemplo usando un proxy gratuito. La dirección IP es 155.54.239.64 y nos comunicamos con ella en el puerto 80.
--proxy=155.54.239.64:80
Proxy Autenticado
Los proxies autenticados se manejan de la misma manera. Con un proxy autenticado, simplemente necesitas incluir tu nombre de usuario y contraseña en la url.
proxy=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>
Mejores Tipos y Proveedores de Proxy Autenticado
Al usar proxies autenticados con Selenium, las mejores opciones son proxies residenciales, proxies de centro de datos, y proxies ISP, cada uno ofreciendo diferentes niveles de anonimato y fiabilidad. Los proxies residenciales ofrecen las tasas de éxito más altas al usar IPs de usuarios reales, haciéndolos ideales para evadir la detección de bots. Los proxies de centro de datos son más rápidos y económicos pero más fáciles de detectar. Los proxies ISP combinan los beneficios de ambos, ofreciendo velocidad con altos niveles de confianza.
Proveedores Recomendados:
- segmentación geográfica
- Proxies rotativos
Para scraping con SeleniumBase, los proxies residenciales de Bright Data son la opción más confiable, asegurando altas tasas de éxito y bloqueos mínimos.
Ejecutando Con un Proxy
El ejemplo a continuación está configurado para ejecutarse con uno de nuestros proxies aquí en Bright Data. Asegúrate de reemplazar el nombre de usuario, el nombre de la zona y la contraseña con los tuyos propios.
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -s
Cuando lo ejecutamos obtenemos la siguiente salida. Si miras de cerca, verás que nuestra ubicación ha cambiado.
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
city: Piscataway
region: New Jersey
country: US
loc: 40.4993,-74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.25s ====================================================
Controlando Tu Ubicación
Con nuestros proxies, incluso puedes elegir tu ubicación. Puedes hacer esto usando la bandera country. Cada país tiene un código de dos letras que puedes pasar al proxy.
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>[email protected]:33335 -s
Cuando usas es (España) como código de país, te diriges a través de un proxy en España. Puedes verificar esto en la salida a continuación.
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 176.119.14.158
city: Paracuellos de Jarama
region: Madrid
country: ES
loc: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28860
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.98s ====================================================
Puedes ver nuestra documentación de geolocalización aquí.
Proxies Rotativos
Con solo los conceptos básicos de Python, puedes crear un sistema de proxies bastante bueno. En el código a continuación, usamos un conjunto de códigos de país, pero estos se pueden reemplazar fácilmente con IPs de proxy reales. countries contiene nuestra lista de códigos de país. Luego iteramos a través de ellos y ejecutamos nuestra prueba de proxy usando los cuatro códigos de país.
us: Estados Unidoses: Españail: Israelgb: Gran Bretaña
import subprocess
#list of country codes
countries = [
"us",
"es",
"il",
"gb",
]
#iterate through the countries and make a shell command for each one
for country in countries:
command = f"pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-<YOUR-ZONE-NAME>-country-{country}:[email protected]:33335 -s"
#run the shell command
subprocess.run(command, shell=True)
Puedes ejecutar esto como un archivo Python normal.
python rotate_proxies.py
Cuando ejecutes el código, deberías recibir una salida similar a esta.
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 164.90.142.33
city: Clifton
region: New Jersey
country: US
loc: 40.8344,-74.1377
org: AS14061 DigitalOcean, LLC
postal: 07014
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.84s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 5.180.9.15
city: Madrid
region: Madrid
country: ES
loc: 40.4066,-3.6724
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28007
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.60s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 64.79.233.151
city: Tel Aviv
region: Tel Aviv
country: IL
loc: 32.0809,34.7806
org: AS9009 M247 Europe SRL
timezone: Asia/Jerusalem
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.36s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform 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
collected 1 item
proxy_test.py ip: 185.37.3.107
city: London
region: England
country: GB
loc: 51.5085,-0.1257
org: AS9009 M247 Europe SRL
postal: E1W
timezone: Europe/London
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 2.90s ====================================================
Como puedes ver, con una cantidad muy pequeña de código, estamos controlando proxies en Estados Unidos, España, Israel y Gran Bretaña.
Conclusión
Al hacer scraping web, SeleniumBase abre capacidades en Selenium que muchas personas consideran imposibles. A lo largo de esta guía, has aprendido cómo configurar proxies, controlar tu geolocalización e incluso rotar proxies. Estas herramientas te ayudarán a superar la mayoría de los mecanismos de bloqueo que encuentres en tu camino.
Desbloquea todo el potencial del scraping basado en Selenium con los servicios de proxy líderes en la industria de Bright Data. ¡Comienza hoy y experimenta una recopilación de datos fluida y confiable a gran escala!