Sin KYC — sin ID, sin selfie, sin documentos · Pagar con criptomonedas: BTC, USDT, USDC, ETH, SOL, LTC · Recarga desde 25 US$
Idioma: Español
Ver precios

Guía · Selenium

Configuración de proxy estático en Selenium para Chrome

Chrome acepta un host y un puerto de proxy, no un login. Autoriza tu máquina por IP, o deja que un pequeño reenviador local añada el login.

Última actualización: · 6 min de lectura

Respuesta rápida

¿Cómo uso un proxy estático con Selenium y Chrome?

Para un proxy estático en Selenium con Chrome, no pongas el usuario y la contraseña en --proxy-server: Chrome solo acepta ahí un esquema, un host y un puerto. Usa uno de estos dos métodos que funcionan. Autoriza tu máquina en la lista de IPs permitidas del proxy, o ejecuta un pequeño reenviador local que añada el login para Chrome. SteadyProxy opciones de login: Usuario y contraseña, o una lista blanca de IP (hasta 10 IPs). Actualizado el 19 de octubre de 2026.

¿Cuáles son los datos clave?

Conmutador de Chrome--proxy-server=http://host:port, sin campo para un login
Método 1Lista de IPs permitidas: hasta 10 IPs propias se conectan sin contraseña
Método 2Reenviador local en 127.0.0.1:8899 que añade la cabecera Proxy-Authorization
Evitauser:password dentro de --proxy-server; extensiones de navegador de origen desconocido
ComprobarAbre api.ipify.org en el navegador controlado
ProbadoEl reenviador envió solicitudes HTTPS y HTTP a través de un proxy de prueba protegido con contraseña, 19 de octubre de 2026

¿Por qué Chrome rechaza las credenciales en la URL del proxy?

El conmutador --proxy-server de Chrome acepta un esquema, un host y un puerto. La documentación de configuración de red de Chromium no muestra usuario ni contraseña en ese formato. Cuando un proxy pide un login, una persona vería un cuadro de inicio de sesión, pero un script controlado por Selenium no puede rellenarlo de forma fiable. Así que el login debe ocurrir fuera de Chrome: o el proxy confía en la IP de tu máquina, o un asistente en tu máquina envía el login por Chrome.

¿Cómo uso la lista de IPs permitidas con Selenium?

Este es el método más sencillo. Averigua la IP pública de tu máquina abriendo api.ipify.org sin el proxy. Añade esa IP a la lista de permitidas de tu cuenta de SteadyProxy; puedes registrar hasta 10 IPs de origen. Luego pasa solo el host y el puerto a Chrome. El ejemplo usa el puerto HTTP; SOCKS5 funciona igual con socks5:// y el puerto SOCKS5. Nuestra guía de listas de permitidas explica ambas direcciones de las listas de permitidas.

selenium_allowlist.py: Chrome solo con host y puerto
"""Selenium + Chrome through a static proxy authorised by IP allowlist.

Install: python -m pip install selenium
Before running: add this machine's public IP to the allowlist of your account.
"""
import os

from selenium import webdriver
from selenium.webdriver.common.by import By

HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_PORT", "7777")

options = webdriver.ChromeOptions()
# Host and port only: Chrome's --proxy-server switch has no field for a username or password
options.add_argument("--proxy-server=http://" + HOST + ":" + PORT)

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://api.ipify.org?format=json")
    print("Exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
    driver.quit()

¿Cómo añade el login un reenviador local?

Un reenviador local escucha en 127.0.0.1, recibe las solicitudes de proxy de Chrome sin login, añade la cabecera Proxy-Authorization y las pasa a tu proxy estático. Usa solo la biblioteca estándar de Python. Gestiona HTTPS mediante túneles CONNECT, y http:// simple con una solicitud por conexión. Mantenlo vinculado a 127.0.0.1, para que ninguna otra máquina pueda usar tu proxy a través de él. Lo probamos el 19 de octubre de 2026 con curl sobre HTTPS y HTTP, a través de un proxy de prueba que rechaza solicitudes sin el login correcto.

local_forwarder.py: 127.0.0.1:8899 a tu proxy estático
"""Local forwarder: Chrome -> 127.0.0.1:8899 (no login) -> static proxy (with login).

It adds the Proxy-Authorization header for you. Keep it bound to 127.0.0.1.
Run: python local_forwarder.py   (standard library only)
"""
import asyncio
import base64
import os

LISTEN_PORT = int(os.environ.get("LOCAL_PORT", "8899"))
UPSTREAM_HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
UPSTREAM_PORT = int(os.environ.get("PROXY_PORT", "7777"))
CREDENTIALS = os.environ.get("PROXY_USER", "USERNAME") + ":" + os.environ.get("PROXY_PASS", "PASSWORD")
AUTH = "Proxy-Authorization: Basic " + base64.b64encode(CREDENTIALS.encode()).decode()
DROP = ("proxy-authorization:", "proxy-connection:", "connection:")


async def pipe(reader, writer):
    try:
        while data := await reader.read(65536):
            writer.write(data)
            await writer.drain()
    except ConnectionError:
        pass
    finally:
        writer.close()


async def handle(client_reader, client_writer):
    try:
        head = await client_reader.readuntil(b"\r\n\r\n")
    except (asyncio.IncompleteReadError, asyncio.LimitOverrunError):
        client_writer.close()
        return
    lines = head.decode("latin-1").split("\r\n")
    headers = [h for h in lines[1:] if h and not h.lower().startswith(DROP)]
    headers.append(AUTH)
    if not lines[0].upper().startswith("CONNECT "):
        headers.append("Connection: close")  # plain http:// - one request per connection
    try:
        up_reader, up_writer = await asyncio.open_connection(UPSTREAM_HOST, UPSTREAM_PORT)
    except OSError:
        client_writer.write(b"HTTP/1.1 502 Bad Gateway\r\nContent-Length: 0\r\n\r\n")
        client_writer.close()
        return
    up_writer.write(("\r\n".join([lines[0]] + headers) + "\r\n\r\n").encode("latin-1"))
    await up_writer.drain()
    await asyncio.gather(pipe(client_reader, up_writer), pipe(up_reader, client_writer))


async def main():
    server = await asyncio.start_server(handle, "127.0.0.1", LISTEN_PORT)
    print("Forwarding 127.0.0.1:%d -> %s:%d" % (LISTEN_PORT, UPSTREAM_HOST, UPSTREAM_PORT))
    async with server:
        await server.serve_forever()


if __name__ == "__main__":
    asyncio.run(main())

Inicia el reenviador en una terminal y luego ejecuta Selenium con la dirección local. Chrome nunca ve la contraseña, y el login permanece en variables de entorno en tu máquina.

selenium_forwarder.py: Chrome a través del reenviador local
"""Selenium + Chrome through the local forwarder (username/password kept out of Chrome).

Start local_forwarder.py first, then run this file.
"""
from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://api.ipify.org?format=json")
    print("Exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
    driver.quit()

¿Cómo ejecuto varias IPs estáticas con Selenium?

Ejecuta un reenviador por IP en su propio puerto local, como 8899, 8900 y 8901, cada uno con las credenciales de esa IP. Inicia un driver de Chrome por puerto. Con la lista de IPs permitidas, te saltas los reenviadores y pasas el host y el puerto de cada IP a su propio driver. Da a cada driver su propio --user-data-dir si debe conservar cookies entre ejecuciones. Comprueba cada driver con api.ipify.org antes del trabajo real.

¿Existe el mismo problema con Firefox y Selenium?

Sí, de forma similar. Firefox lee el host y el puerto del proxy desde sus preferencias, y un login de proxy HTTP aparece como un diálogo que la automatización no puede rellenar de forma fiable. Funcionan los mismos dos métodos: la lista de IPs permitidas, o el reenviador local con el proxy HTTP de Firefox configurado en 127.0.0.1 y el puerto 8899. Para una herramienta de automatización de navegador con login de proxy integrado, consulta la guía de Playwright.

¿Qué más pregunta la gente sobre Selenium y los proxies estáticos?

¿Puedo escribir http://user:password@host:port en --proxy-server?

No funciona de forma fiable. El formato documentado de Chrome para --proxy-server no tiene lugar para un login, así que las credenciales no se usan. Las solicitudes fallan entonces con un error de autenticación de proxy o muestran un cuadro de inicio de sesión. Usa la lista de IPs permitidas o el reenviador local descritos en esta página.

¿Es una buena idea una extensión de Chrome para enviar el login del proxy?

Puede funcionar, pero añade código con permisos amplios al navegador que automatizas, y las reglas de las extensiones cambian entre versiones de Chrome. Los dos métodos de aquí no tienen piezas móviles dentro de Chrome. Si usas una extensión, escríbela tú o audítala, y mantenla fuera de los perfiles que uses para otros trabajos.

¿Es seguro el reenviador local?

Escucha solo en 127.0.0.1, por lo que solo los programas de tu máquina pueden usarlo. Cualquiera con acceso a tu máquina también podría usarlo, ya que podría leer tus variables de entorno. Detenlo cuando termine la tarea. No registra nada por defecto; añade registro solo sin el encabezado Proxy-Authorization.

¿Cómo encuentro la IP pública para añadir a la lista de permitidos?

En la máquina que ejecuta Selenium, abre https://api.ipify.org sin el proxy. Esa es la dirección que ve el proxy. Si tu oficina o servidor tiene una IP fija, añádela a la lista de permitidos una vez. Una conexión doméstica cuya IP cambia no es adecuada; usa el reenviador con nombre de usuario y contraseña en su lugar.

¿Selenium Wire o una biblioteca similar resuelven esto?

Algunas bibliotecas añaden inicio de sesión de proxy a Selenium ejecutando su propio proxy de interceptación, similar al reenviador de aquí. Verifica que una biblioteca siga mantenida antes de depender de ella. El reenviador de esta página tiene unas 60 líneas de Python de biblioteca estándar que puedes leer por completo.

¿Cuántas IP puedo añadir a la lista de permitidos para máquinas Selenium?

Hasta 10 IP de origen en tu cuenta SteadyProxy, lo que cubre la mayoría de oficinas y flotas de servidores. Nuestras opciones de inicio de sesión son: Usuario y contraseña, o una lista blanca de IP (hasta 10 IPs). Si ejecutas Selenium en más máquinas, enrútalas a través de un servidor con IP fija, o usa el reenviador con nombre de usuario y contraseña en cada máquina.

¿Qué fuentes usa esta guía? (3)
  1. Configuración de red (formato --proxy-server) — The Chromium Projects (2026-10-19)
  2. flujos asyncio — Python Software Foundation (2026-10-19)
  3. Selenium WebDriver: opciones de Chrome — Selenium (2026-10-19)

Desde 2,24 US$ por IP de ISP · 30 días · sin KYC

Ver precios