Cambiar idioma
Español English Русский Deutsch Français Italiano Українська Tiếng Việt Türkçe Bahasa Indonesia हिन्दी 日本語 中文
Menú
Precios
Proxies
TIPOS DE PROXY
POR UBICACIÓN77 ubicaciones
Soluciones
Recursos

Cómo usar un proxy con Selenium

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 resumen: 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.

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.

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 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.

# 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()
# 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()
# 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()
# 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()
# 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"]}'

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.

Documentación completa de la API

Opciones de proxy en Selenium, navegador por navegador

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.
Proxy HTTPProxy SOCKS5Usuario y contraseña
Chrome--proxy-server=http://HOST:PORT--proxy-server=socks5://HOST:PORTIgnorados en --proxy-server; usa la lista blanca
FirefoxProxy con httpProxy y sslProxyProxy con socksProxy y socksVersion 5Funcionó mediante add_authentication_handler (BiDi), por HTTP
Chrome, handlers de BiDiadd_auth_handler y add_authentication_handler: los dos agotaron el tiempo de esperaNo probadoUsa la lista blanca hasta que una versión posterior de Selenium o de Chrome cambie esto

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.

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

Otras guías y el producto

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. SOCKS5

¿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. Política de Uso Aceptable

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, consulta la página de precios y configura la misma dirección en llamadas HTTP sin navegador con la guía de Python requests.

Fuentes