# Proxy en Selenium: Chrome y Firefox con una IP ISP estática | ProxyJam

Cómo configurar un proxy en Selenium para Chrome y Firefox, por qué fallan las credenciales en --proxy-server y cómo las sustituye la lista blanca de IP. Código Python probado.

- Canonical: https://proxyjam.com/es/integrations/selenium/
- Updated: 2026-10-23
- Language: es

Ejecuta Chrome o Firefox con Selenium a través de una dirección ISP estática. Cada ejemplo de esta página se ejecutó contra un proxy local antes de publicarse, y lo que no funcionó se dice claramente.


En Chrome, pasa `--proxy-server=http://HOST:PORT` como argumento; en Firefox, configura un Proxy manual en las opciones. Firefox puede responder a la petición de contraseña del proxy mediante el handler de WebDriver BiDi de Selenium, `add_authentication_handler`. Chrome no pudo en nuestra prueba: ignora las credenciales en `--proxy-server`, y los dos handlers de BiDi agotaron el tiempo de espera. Para Chrome, pon en la lista blanca del proxy la IP desde la que se ejecutan tus pruebas, y el proxy no necesita credenciales, ni por HTTP ni por SOCKS5.


## Configurar un proxy en Selenium

1. **Averigua la IP pública desde la que se ejecutan tus pruebas** La dirección de la máquina o del runner de CI tal como la ve internet, no la local. [Cuál es mi IP](/es/what-is-my-ip/) la muestra.
2. **Pon esa IP en la lista blanca del proxy** Una llamada a la API, `PUT /orders/ORDER_ID/whitelist`, o la herramienta `set_proxy_whitelist` del servidor MCP; el panel todavía no tiene ningún control para ello. La lista blanca admite direcciones IPv4 y sustituye la lista en cada llamada. Mientras hay una lista blanca establecida, el proxy solo admite las direcciones de la lista y el usuario y la contraseña dejan de funcionar para ese pedido; si envías una lista vacía, la lista blanca se desactiva y el inicio de sesión con contraseña vuelve a funcionar.
3. **Copia el host y el puerto del pedido** Desde Mis Proxies o desde la API. Con la lista blanca establecida, el usuario y la contraseña no hacen falta.
4. **Configura el proxy en las opciones del navegador** Chrome: `--proxy-server=http://HOST:PORT`, o `socks5://HOST:PORT` después de cambiar el proxy a SOCKS5. Firefox: un `Proxy` manual con `httpProxy` y `sslProxy`.
5. **Abre una página y comprueba la dirección de salida** Carga una vez Cuál es mi IP en el navegador controlado y confirma que muestra la dirección que compraste; después ejecuta la suite.

## Código probado para Selenium 4 en Python

El ejemplo de Firefox con contraseña envía usuario y contraseña, así que necesita un pedido sin lista blanca establecida. Los demás ejemplos de navegador suponen que la IP de tu máquina está en la lista blanca del proxy; el de SOCKS5 necesita además el proxy cambiado antes a SOCKS5, lo que da un puerto nuevo. Sustituye los valores en mayúsculas por los de tu pedido, y ORDER_ID, YOUR_API_KEY y YOUR_IP en la llamada de la lista blanca.

### Chrome

Chrome a través de un proxy HTTP.

```
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent: Chrome ignores them in --proxy-server anyway.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=http://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Firefox con contraseña

Firefox responde a la petición de contraseña del proxy.

```
# Selenium 4.51+ with WebDriver BiDi; pip install selenium
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.enable_bidi = True
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    # Answers the proxy's 407 with your username and password
    driver.network.add_authentication_handler(
        lambda request: request.provide_credentials("USERNAME", "PASSWORD")
    )
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Firefox

Firefox a través de un proxy HTTP con lista blanca.

```
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent. For a password instead, see selenium-firefox-auth.
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Chrome SOCKS5

Chrome a través de un proxy SOCKS5.

```
# Switch the proxy to SOCKS5 first, then use the port the order shows.
# The whitelist applies to SOCKS5 as well, so no credentials here either.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=socks5://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Llamada de lista blanca

Añade tu IP a la lista blanca del proxy.

```
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"whitelisted_ips": ["YOUR_IP"]}'
```


## Opciones de proxy en Selenium, navegador por navegador

|  | Proxy HTTP | Proxy SOCKS5 | Usuario y contraseña |
|---|---|---|---|
| Chrome | --proxy-server=http://HOST:PORT | --proxy-server=socks5://HOST:PORT | Ignorados en --proxy-server; usa la lista blanca |
| Firefox | Proxy con httpProxy y sslProxy | Proxy con socksProxy y socksVersion 5 | Funcionó mediante add_authentication_handler (BiDi), por HTTP |
| Chrome, handlers de BiDi | add_auth_handler y add_authentication_handler: los dos agotaron el tiempo de espera | No probado | Usa la lista blanca hasta que una versión posterior de Selenium o de Chrome cambie esto |

Probado el 2026-10-22 con Selenium 4.51, Chrome y Firefox en modo headless, contra un proxy local que exigía contraseña en un puerto y aceptaba un cliente en la lista blanca en otro.


## Qué obtiene una prueba de navegador de la dirección

- **Sin contraseña en el navegador:** La lista blanca admite la dirección IPv4 de tu runner, así que no hay ningún secreto en las opciones ni en los logs
- **Los dos esquemas del navegador:** http:// para las páginas normales, socks5:// una vez cambiado el pedido
- **El mismo origen en cada ejecución:** La ejecución de ayer y la de hoy salen desde una misma IP, conservada durante todo el periodo de facturación
- **Drivers en paralelo:** Varios drivers pueden compartir la dirección, o cada driver puede tener la suya

## Qué sale mal con Selenium y los proxies

### Credenciales dentro de --proxy-server

Chrome descarta el usuario y la contraseña de ese argumento sin ningún error, se conecta sin ellos y recibe un 407 del proxy. La página no llega a cargar, y eso parece un problema de red y no de autenticación.

### La descarga del driver pasa por el proxy

Cuando las opciones de Firefox llevan un proxy, Selenium Manager descarga el driver a través de ese mismo proxy. Con un proxy que solo admite contraseña, esa descarga falla antes de que arranque el navegador; con la lista blanca, funciona.

### La lista blanca tiene la dirección equivocada

Un runner de CI suele salir desde una IP pública distinta de la de tu portátil, y algunos la cambian entre ejecuciones. Pon en la lista blanca la dirección desde la que se ejecutan las pruebas, y actualízala cuando cambie, ya que cada llamada sustituye la lista.

### SOCKS5 en el navegador antes del cambio

Una dirección configurada en HTTP no responde por SOCKS5. Cambia antes el proxy en tu pedido y usa el puerto que muestra entonces; cambiar solo el esquema en el argumento deja un navegador que no puede conectarse.


## Preguntas sobre proxies en Selenium

### ¿Cómo uso un proxy con autenticación en Selenium?

En Firefox, activa WebDriver BiDi y registra con driver.network.add_authentication_handler un handler que proporcione el usuario y la contraseña; eso funcionó con Selenium 4.51. En Chrome no funcionó nada que envíe credenciales en nuestra prueba: las ignora en el switch del proxy, y los dos handlers de BiDi agotaron el tiempo de espera. Para Chrome, pon en la lista blanca la IP pública desde la que se ejecutan tus pruebas, y el navegador se conecta sin ninguna credencial.

### ¿Cómo configuro un proxy en Selenium con Python para Chrome?

Crea ChromeOptions, añade el argumento --proxy-server=http://HOST:PORT y pasa las opciones a webdriver.Chrome. Para SOCKS5, cambia el proxy a SOCKS5 en tu pedido y usa socks5://HOST:PORT con el puerto que el pedido muestra entonces.

### ¿La lista blanca de IP funciona con SOCKS5?

Sí. Una dirección en la lista blanca se acepta sin credenciales por HTTP y por SOCKS5, y eso es lo que hace que SOCKS5 se pueda usar desde Chrome, ya que Chrome no puede enviar un usuario y una contraseña de SOCKS5. La lista blanca se establece a través de la API o del servidor MCP y admite direcciones IPv4.

### ¿Cada navegador de una suite de pruebas puede usar un proxy distinto?

Sí, uno por driver: el proxy forma parte de las opciones con las que arranca un driver, así que dos drivers pueden usar dos direcciones. No se puede cambiar el proxy de un Chrome en ejecución; arranca un driver nuevo.

### ¿Una suite larga cambiará de dirección a mitad de camino?

No. El driver conserva la dirección con la que arrancó hasta que se cierra, y la propia dirección sigue asignada a ti durante todo el periodo de facturación. Las suites que necesitan muchos orígenes a la vez necesitarían un pool que los cambie, y eso todavía no está a la venta.

### ¿Para qué puedo usar el proxy?

Las pruebas end-to-end de tu propio producto, las comprobaciones regionales de tu tienda, la verificación de anuncios, la investigación de precios y la protección de marca se pueden hacer sin revisión previa según nuestra política de uso aceptable. Controlar un navegador para burlar CAPTCHAs, defensas contra bots, límites de frecuencia o bloqueos de cuentas es otra cosa: la dirección no lo hace, y la política prohíbe intentarlo.


Una dirección estática hace que las pruebas de navegador sean repetibles: la misma suite, ejecutada la semana que viene, llega desde el mismo sitio, así que un cambio en el resultado viene del sitio web. Pide una dirección en la [página de proxies ISP](/es/isp-proxies/), consulta la [página de precios](/es/pricing/) y configura la misma dirección en llamadas HTTP sin navegador con la guía de [Python requests](/es/integrations/python-requests/).



## Fuentes

- [Selenium documentation, Proxy](https://www.selenium.dev/documentation/webdriver/drivers/options/#proxy): cómo configurar un proxy en las opciones del navegador
- [Selenium documentation, Selenium Manager](https://www.selenium.dev/documentation/selenium_manager/): cómo se descargan los drivers, y que para ello se usa el proxy configurado
- [Chromium, network settings](https://www.chromium.org/developers/design-documents/network-settings/): el switch `--proxy-server` y sus esquemas




Selenium no enruta el tráfico por sí mismo: arranca un navegador y le entrega el proxy como parte de sus opciones. Por eso la respuesta es distinta en Chrome y en Firefox, y por eso la autenticación del proxy es donde fallan la mayoría de las configuraciones.

## Proxy en Selenium con Python para Chrome y Firefox

Chrome lee el proxy de un switch de línea de comandos; Firefox, de un objeto proxy en sus opciones. Los dos aceptan un proxy con lista blanca sin más configuración; Firefox también puede responder a la petición de contraseña del proxy mediante WebDriver BiDi, cosa que Chrome no hizo en nuestra prueba.

