---
title: "Proxy con SeleniumBase: autenticación y rotación"
description: "SeleniumBase acepta proxies con usuario y contraseña, algo con lo que Selenium solo no puede. Configuración, prueba y una rotación sencilla."
url: https://proxynet.io/es/blog/how-to-use-proxy-with-seleniumbase
date: 2025-02-13
author: "Acar Diveroli"
category: "Integración, Tutoriales, Proxy 101"
lang: es
---

# Proxy con SeleniumBase: autenticación y rotación

SeleniumBase es un marco de pruebas construido sobre Selenium, y acepta proxies **con credenciales**. Eso es justo lo que Selenium por sí solo no consigue, y por eso el rodeo merece la pena en cualquier trabajo de scraping.

## El problema de los proxies en Selenium

Selenium puede fijar un proxy, pero no autenticarse en él: Chrome ignora el usuario y la contraseña en el argumento `--proxy-server` y abre en su lugar una ventana de acceso que el WebDriver no puede rellenar. La herramienta que antes cubría ese hueco, SeleniumWire, lleva tiempo sin mantenimiento y ya no es recomendable.

## Primeros pasos

### Instalación

```bash
pip install seleniumbase
```

### Un caso de prueba

La siguiente prueba pide la información en JSON de IPinfo y la escribe en la consola: así ves de inmediato qué dirección se muestra hacia fuera.

```python
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json

class ProxyTest(BaseCase):
    def test_proxy(self):
        # Abrir la página
        self.driver.get("https://ipinfo.io/json")

        # Leer la respuesta JSON
        location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)

        # Imprimir el contenido
        for k, v in location_info.items():
            print(f"{k}: {v}")
```

## Ejecutar la prueba

Se lanza con pytest.

### Sin proxy

```bash
pytest proxy_test.py -s
```

En la consola aparecen tu propia IP y tu ubicación.

### Con proxy

```bash
pytest proxy_test.py --proxy=USUARIO:CONTRASENA@pr.proxynet.io:8000 -s
```

El usuario, la contraseña, el nombre de host y el puerto están en tu panel de Proxynet. La salida se parece a esto:

```
=================================== test session starts ===================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
plugins: seleniumbase-4.34.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item

proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.pxnet.io
city: Piscataway
region: New Jersey
country: US
timezone: America/New_York
.

==================================== 1 passed in 3.25s ====================================
```

La dirección ha cambiado y no ha aparecido ninguna ventana de acceso: ese es todo el propósito.

### Rotar proxies

Con lo que trae Python de serie montas una rotación sencilla. El script siguiente lanza la misma prueba una vez por país:

```python
import subprocess

USER = "USUARIO"
PASSWORD = "CONTRASENA"

# Países desde los que debe salir la petición
countries = ["us", "es", "gb", "tr"]

for country in countries:
    # En Proxynet el país de destino va dentro del nombre de usuario
    proxy = f"{USER}-country-{country}:{PASSWORD}@pr.proxynet.io:8000"
    subprocess.run(f"pytest proxy_test.py --proxy={proxy} -s", shell=True)
```

La forma exacta de indicar el país está en tu panel y cambia según el producto. Cómo resolver lo mismo dentro de un script, en vez de desde la línea de comandos, lo explicamos en [Cómo rotar proxies en Python](/es/blog/how-to-rotate-proxies-in-python).

## Conclusión

Con SeleniumBase, una prueba de Selenium sale por un proxy con autenticación, comprueba la ubicación visible y la cambia entre ejecuciones: tres cosas que con Selenium a secas cuestan bastante más trabajo.

Cuáles de nuestros [productos de proxy](/es/proxy) sirven para esto:

- [Proxies residenciales](https://proxynet.io/es/residential-proxy)
- [Proxies ISP](https://proxynet.io/es/static-isp-residential-proxy)
- [Proxies móviles](https://proxynet.io/es/mobile-proxy)
- [Proxies de centro de datos](https://proxynet.io/es/datacenter-proxy)
