Cómo usar SeleniumBase con proxies: guía completa 2026
TL;DR
SeleniumBase lee un proxy desde uno de tres puntos de entrada intercambiables — el flag de línea de comandos --proxy de pytest, el argumento proxy de Driver(), o el argumento proxy del administrador de contexto SB() — y los tres recorren el mismo código interno para lanzar el controlador.
Los proxies HTTP/HTTPS autenticados en Chrome y Edge funcionan sin un popup de inicio de sesión porque SeleniumBase escribe una extensión de navegador de Manifest V3 sobre la marcha que responde automáticamente a cada desafío 407; nunca necesitas una capa de proxy de anonimato separada para esos dos navegadores.
Firefox maneja los proxies de manera diferente y no autocompleta las credenciales. SeleniumBase establece las preferencias nativas network.proxy.* de Firefox (incluyendo SOCKS4/5/5h), pero no hay un paso de inyección de credenciales, por lo que un proxy autenticado aún activa el propio aviso de inicio de sesión de Firefox.
SOCKS4, SOCKS5 y SOCKS5h son esquemas de proxy válidos tanto en el flag de línea de comandos como en el constructor de Python (por ejemplo socks5://host:port), confirmado directamente desde la fuente proxy_helper.validate_proxy_string() de SeleniumBase 4.51.10.
El Modo UC acepta el mismo argumento proxy= que una sesión estándar, pero SeleniumBase no proporciona un programador de rotación integrado por solicitud — rotar IPs entre solicitudes debe venir del propio gateway proxy o de relanzar el controlador con un nuevo valor.
Un cambio en la extensión de Chrome 137 rompió brevemente la extensión de autenticación de proxy de SeleniumBase. Las versiones actuales incluyen la solución; en versiones más nuevas de Chrome donde aún aparece un popup de inicio de sesión, cambiar a Modo CDP antes de navegar es la solución documentada.
El gateway residencial de Nstproxy se conecta a cualquiera de los tres puntos de integración con una cadena (username:password@gw-us.nstproxy.com:24125), omitiendo la capa de proxy de anonimato local que las configuraciones estándar de Selenium, Puppeteer y Playwright típicamente necesitan para proxies autenticados.
Introducción: Lo que cubre el soporte de proxy de SeleniumBase
SeleniumBase es un marco de automatización y prueba de navegadores en Python construido sobre Selenium WebDriver y pytest, y agrega una capa de proxy que va más allá de lo que Selenium puro expone de forma predeterminada. Donde la opción --proxy-server de Chrome en Selenium simple no puede llevar un nombre de usuario y contraseña, SeleniumBase analiza una cadena username:password@host:port, construye una pequeña extensión de navegador sobre la marcha para navegadores Chromium, y conecta esa extensión para responder automáticamente a los desafíos de autenticación. El marco, publicado como seleniumbase en PyPI, está actualmente en la versión 4.51.10 y es mantenido por Michael Mintz en GitHub. La documentación de proxy del marco cubre la sintaxis del flag de la línea de comandos utilizada en toda esta guía en su referencia de configuración detallada.
Esta guía cubre las tres formas de proporcionar un proxy a SeleniumBase, qué ocurre realmente en el fondo para proxies autenticados, dónde encajan SOCKS5 y Modo UC, cuáles son los límites reales (manejo de credenciales en Firefox, la falta de un programador de rotación, una regresión real en la versión de Chrome), y cómo configurar el acceso al gateway residencial de Nstproxy.
Instalar SeleniumBase y confirmar la configuración
Instalar SeleniumBase incluye Selenium, pytest y las herramientas de gestión de controladores del propio marco en un solo paso:
seleniumbase install chromedriver descarga una construcción de chromedriver que coincide con la versión de Chrome ya instalada en la máquina, lo que hace que las pruebas de proxy posteriores sean predecibles — un par de controlador/navegador desajustado produce sus propios errores de conexión que no tienen nada que ver con la configuración del proxy y son fáciles de diagnosticar erróneamente como un problema de proxy. Confirma la instalación con:
Esto debería imprimir 4.51.10 o una versión más reciente.
Configurar un Proxy: Flag de línea de comandos, Driver() y SB()
SeleniumBase responde a esto en una línea: pasa el proxy como una cadena, y el formato es idéntico ya sea que provenga de la línea de comandos o de Python. La línea de comandos lo acepta como un flag de pytest:
La API de Python expone el mismo valor como un argumento de palabra clave tanto en Driver() como en el administrador de contexto SB() — confirmado al inspeccionar ambas firmas directamente en el paquete instalado:
from seleniumbase import Driver
import inspect
print(inspect.signature(Driver).parameters["proxy"].default)# None
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.get("https://example.com")driver.quit()
Los proxies no autenticados eliminan completamente la parte USERNAME:PASSWORD@; la función validate_proxy_string() de SeleniumBase trata un ip_address:port o server:port simple como igualmente válido.
Implementación básica: Un proxy autenticado de extremo a extremo
Pasar proxy="user:pass@host:port" a Driver() es respondido por un mecanismo específico en Chrome y Edge: la función create_proxy_ext() de SeleniumBase escribe una extensión de Manifiesto V3 con una llamada a chrome.proxy.settings.set() y un listener chrome.webRequest.onAuthRequired que devuelve las credenciales almacenadas cada vez que el proxy emite un desafío 407. Para verificar que esto es real y no solo un comportamiento documentado, esta guía lo ejecutó contra un proxy autenticado local (mitmproxy, configurado con un nombre de usuario y contraseña de prueba) y capturó el tráfico:
from seleniumbase import Driver
driver = Driver( browser="chrome", headless=True, proxy="testuser:testpass123@127.0.0.1:8899",)driver.get("http://internal-test-host:9000/")print(driver.page_source[:80])driver.quit()
El propio registro del proxy mostró exactamente la secuencia que implica la fuente de SeleniumBase: la primera solicitud del navegador llegó sin encabezado de autenticación y recibió una respuesta de 407 Proxy Authentication Required, luego se activó la devolución de llamada onAuthRequired de la extensión, y se volvió a intentar la solicitud idéntica con las credenciales almacenadas, devolviendo 200 OK con el cuerpo de página esperado — sin pop-up, sin reintentos manuales y sin bibliotecas adicionales. Ese apretón de manos, no solo la presencia de un parámetro proxy, es lo que significa "soporte de proxy autenticado" en SeleniumBase.
Echa un vistazo rápido
Si las ejecuciones de tu SeleniumBase siguen mostrando pop-ups de autenticación de proxy o son bloqueadas a mitad de sesión, la puerta de enlace residencial de Nstproxy te proporciona una cadena `username:password@host:port` estable y preautenticada con control de sesión incorporado, por lo que el mismo argumento `proxy=` anterior seguirá funcionando.
Confirmar que el proxy está activo significa verificar la IP que ve el sitio objetivo, no solo comprobar que driver.get() devolvió una página:
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.get("https://api.ipify.org")print("IP de salida:", driver.get_text("body"))driver.quit()
Si la IP impresa coincide con la dirección del proxy en lugar de la IP real de la máquina, el proxy está en la ruta de solicitud. Una discrepancia aquí generalmente significa que el valor del proxy estaba malformado (un prefix http:// errante delante de una cadena SOCKS ya con prefix de esquema es una causa común) en lugar de un fallo de autenticación, ya que los fallos de autenticación en Chrome normalmente se presentan como una pestaña en blanco o una navegación abortada en lugar de una IP incorrecta.
Elegir un proveedor de proxy para la automatización del navegador
Una cadena de proxy es solo tan confiable como las IP detrás de ella, y la automatización del navegador es más difícil en un grupo de proxies que las solicitudes HTTP simples: un flujo de SeleniumBase de varias páginas necesita que la misma IP de salida persista a través de varias navegaciones, y un grupo de IP de centros de datos marcadas o sobreutilizadas aparece como inicios de sesión fallidos y muros CAPTCHA en lugar de errores limpios. Nstproxy es un proveedor de infraestructura de proxy cuyas líneas residenciales están diseñadas precisamente alrededor de ese requisito de persistencia, vendidas ya sea como tráfico de pago por uso o como paquetes mensuales, y se ajustan a equipos que ejecutan automatización de scraping, monitoreo de precios o gestión de cuentas a través de herramientas como SeleniumBase en lugar de a través de clientes HTTP en bruto. La puerta de enlace toma la misma forma username:password@host:port utilizada a lo largo de esta guía, por lo que cambiar un conjunto de pruebas de un proxy temporal a uno de producción es un cambio de una línea.
Sesiones pegajosas o rotativas bajo demanda — Residential Prime Proxies soporta tanto una sesión fija (la misma IP de salida mientras se necesite para un flujo de inicio de sesión o un rastreo de varias páginas) como rotación por solicitud, coincidiendo con cómo el argumento proxy= de SeleniumBase trata una sesión como un punto final fijo durante la vida del controlador.
HTTP(S) y SOCKS5 en la misma puerta de enlace — ambos protocolos se mapean directamente a los valores de esquema que validate_proxy_string() de SeleniumBase ya acepta (http, https, socks4, socks5, socks5h), por lo que probar ambos transportes es un cambio de una línea, no una integración diferente.
195 ubicaciones rastreadas con targeting de país, ciudad y ASN — útil cuando una suite de SeleniumBase necesita verificar cómo se renderiza una página o restringe contenido para una región específica.
Un punto de entrada prepago para suites más pequeñas — Proxies Residenciales Lite cubren más de 50 millones de IPs en más de 200 países y regiones, facturados en paquetes prepaid que comienzan en $10 por 10GB ($1.00/GB), lo cual es un punto de partida razonable antes de que un proyecto necesite los controles de sesión de los Proxies Residenciales Prime.
Los Proxies Residenciales Prime tienen una tasa de éxito del 99.98% contra más de 110 millones de IPs residenciales a $1.60/GB en el paquete de 50GB, y los Proxies Residenciales Lite tienen una tasa de éxito del 99.5%; ambas cifras provienen de las propias páginas de precios de Nstproxy y vale la pena verificarlas nuevamente allí antes de basar una decisión de compra en ellas, ya que los proveedores de proxies actualizan el tamaño del grupo y los precios con frecuencia.
La puerta de enlace en sí es un único host y puerto compartido a través de protocolos, documentado en la guía de integración de Nstproxy:
from seleniumbase import Driver
driver = Driver( browser="chrome", headless=True, proxy="USERNAME:PASSWORD@gw-us.nstproxy.com:24125",)driver.get("https://api.ipify.org")print("IP de salida:", driver.get_text("body"))driver.quit()
Los propios ejemplos de integración de Nstproxy para Selenium en estado puro, Puppeteer y Playwright enrutan esta misma puerta de enlace a través de la biblioteca proxy-chain para sortear la falta de credenciales de proxy en línea de esas herramientas, un paso que la gestión de extensiones integrada de SeleniumBase hace innecesario.
Patrones Avanzados: SOCKS5, Modo UC y Rotación
SOCKS5 funciona a través del mismo argumento proxy=, solo que con el esquema escrito completamente:
from seleniumbase import Driver
driver = Driver(browser="chrome", headless=True, proxy="socks5://USERNAME:PASSWORD@SERVER:PORT")driver.get("https://api.ipify.org")driver.quit()
El analizador de esquemas de SeleniumBase también acepta socks4:// y socks5h:// (este último resuelve DNS a través del proxy en lugar de localmente), y pasa cualquier esquema detectado a la misma extensión de Chrome que maneja la autenticación HTTP, por lo que un proxy SOCKS5 autenticado pasa por el mismo flujo de onAuthRequired verificado arriba en lugar de un camino de código separado.
El Modo UC — la integración de SeleniumBase con undetected-chromedriver para sitios con detección de bots más estricta — toma el mismo argumento:
from seleniumbase import Driver
driver = Driver(uc=True, headless=False, proxy="USERNAME:PASSWORD@SERVER:PORT")driver.uc_open_with_reconnect("https://example.com", reconnect_time=4)driver.quit()
Lo que el Modo UC no añade es un programador de rotación. SeleniumBase proporciona una estática PROXY_LIST "guía telefónica" en seleniumbase/config/proxy_list.py para que una clave nombrada pueda representar una cadena de proxy completa en la CLI, y una bandera --multi-proxy que existe específicamente para permitir que los trabajadores paralelos de pytest (pytest -n) cada uno construya su propia extensión de proxy sin contendencia de bloqueo de archivos; ninguna de las dos rotan la IP de salida entre solicitudes dentro de una sola ejecución. La rotación entre solicitudes debe proceder de reiniciar el controlador con un valor de proxy diferente o de que la puerta de enlace misma rote IPs del lado del servidor, que es para lo que sirve un plan de proxy de sesión rotativa.
Límites Honestamente
Tres límites son dignos de planificación en lugar de descubrirse a mitad del proyecto. Primero, Firefox no es un sustituto directo de Chrome aquí: SeleniumBase establece el proxy de Firefox a través de network.proxy.type, network.proxy.http, y las preferencias network.proxy.socks*, incluyendo soporte completo para SOCKS4/5/5h, pero no hay equivalente a la auto-relleno de credenciales de la extensión de Chrome, por lo que un proxy autenticado en Firefox aún produce un aviso de inicio de sesión del navegador nativo que una ejecución sin cabeza no puede descartar. Segundo, el mecanismo basado en extensiones está ligado a la propia plataforma de extensiones de Chrome, lo que significa que puede fallar cuando Chrome cambia esa plataforma: una actualización de Chrome 137 cambió los internos de la extensión de una manera que rompió la extensión de proxy-autenticación de SeleniumBase sobre la marcha por un período en 2025, documentada en un hilo de discusión del mantenedor, y la solución se incluyó en un lanzamiento de SeleniumBase en lugar de ser algo que un usuario pudiera sortear en su propio código de prueba. Tercero, no hay un programador de rotación incorporado, como se cubrió anteriormente: SeleniumBase te da un primitivo limpio de un solo proxy por sesión, y construir una estrategia de rotación sobre eso (o comprar una del proveedor de proxy) queda a cargo del llamador.
Solución de Problemas de Errores Comunes de Proxy
Aparecer un mensaje emergente de autenticación de proxy a pesar de tener una cadena proxy="user:pass@host:port" correctamente formateada es casi siempre un problema de versión de Chrome en lugar de un problema de credenciales: confirma que SeleniumBase está en una versión actual (pip install -U seleniumbase), y en versiones muy recientes de Chrome donde aún aparece un mensaje emergente, la guía del propio mantenedor de SeleniumBase es habilitar el Modo CDP antes de la primera navegación, lo que evita las API de extensiones afectadas.
Un 407 Proxy Authentication Required que se presenta como una página en blanco en lugar de un mensaje emergente generalmente significa que las credenciales son incorrectas o que la lista de permitidos de IP de la cuenta no incluye la IP actual de la máquina, ambos aspectos que vale la pena verificar directamente en el panel de control del proveedor de proxy antes de tocar el código de prueba.
Un proxy que se conecta pero devuelve la IP de salida incorrecta (verificada como se muestra en la sección de verificación anterior) generalmente se remonta a una cadena de proxy mal formada: un http:// errante frente a un valor con prefijo socks5://, o un puerto faltante, en lugar de un proxy roto.
Respuestas lentas o intermitentes a través de un proxy que funciona y está correctamente autenticado señalan al propio grupo de proxies: los nodos de salida residenciales con límite de ancho de banda o sobrecargados se comportan exactamente como una red lenta en lugar de como un error de configuración.
Los equipos que realizan las mismas verificaciones contra Playwright en lugar de SeleniumBase se encuentran con una lista corta similar de causas: valores de proxy mal formados, ámbito incorrecto y autenticación rechazada, ya que los modos de falla provienen de la capa de proxy, no del marco de automatización específico en la parte superior. Para los equipos que construyen su propio proxy directo en lugar de comprar acceso a una puerta de enlace, los compromisos sobre el manejo del tráfico HTTP y HTTPS y la aplicación de la autenticación se cubren en una guía separada para construir un servidor proxy en Python.
Conclusión
El soporte de proxy de SeleniumBase se reduce a un formato de cadena manejado de manera consistente a través de la bandera de la CLI, Driver() y SB(), con la verdadera complejidad ocultándose en lo que sucede con los proxies autenticados en Chrome frente a Firefox y en la ausencia de cualquier rotación automática entre solicitudes. Verificar la IP de salida después de cada cambio de proxy, mantener SeleniumBase actualizado para evitar las regresiones de la extensión de Chrome que ocasionalmente ocurren, y elegir un puerto de proxy que maneje la persistencia de sesiones y rotación por su cuenta en lugar de esperar que el código de prueba lo haga cubrirán la mayor parte de lo que sale mal en la práctica.
P: ¿SeleniumBase soporta proxies autenticados sin una biblioteca de terceros?
Sí, pasar proxy="username:password@host:port" a Driver(), SB(), o la bandera CLI --proxy es suficiente en Chrome y Edge, porque SeleniumBase genera su propia extensión de Manifest V3 para responder al desafío de autenticación del proxy; no se requiere una capa de anonymización al estilo proxy-chain como en algunas configuraciones de Selenium en bruto.
P: ¿Funciona el soporte de proxy autenticado de SeleniumBase en Firefox?
No, no la parte automática: la configuración de proxy de Firefox pasa por preferencias nativas network.proxy.*, que cubren SOCKS4/5/5h, pero SeleniumBase no inyecta credenciales guardadas para Firefox, por lo que un proxy autenticado aún activa el propio aviso de inicio de sesión de Firefox.
P: ¿Puede SeleniumBase rotar proxies automáticamente durante una ejecución de prueba?
No, SeleniumBase proporciona un primitivo de un solo proxy por sesión y una búsqueda estática llamada PROXY_LIST, pero no hay un programador de rotación por solicitud incorporado; rotar IPs entre solicitudes requiere volver a lanzar el controlador con un nuevo valor de proxy o usar una puerta de enlace de proxy que rote IPs por su cuenta.
P: ¿Por qué aparece un mensaje emergente de autenticación de proxy incluso con una cadena proxy= correcta?
Esto es más a menudo un problema de versión de Chrome: un cambio en Chrome 137 rompió temporalmente el mecanismo de extensión que SeleniumBase utiliza para la autenticación de proxy, y las versiones actuales de SeleniumBase incluyen la solución, con el Modo CDP como la solución alternativa documentada en versiones más nuevas de Chrome donde aún aparece un mensaje emergente.
P: ¿SeleniumBase admite proxies SOCKS5?
Sí, socks4://, socks5://, y socks5h:// son todos prefijos de esquema válidos en la misma cadena de proxy utilizada para proxies HTTP, y los proxies SOCKS5 autenticados pasan por el mismo flujo de autenticación de extensión de Chrome que los proxies HTTP autenticados.
P: ¿Es seguro ejecutar SeleniumBase con un proxy contra un sitio que no poseo?
Solo si la automatización se mantiene dentro de los términos de servicio de ese sitio y de la ley aplicable: un proxy cambia la IP de salida desde la que se ve una solicitud, pero no cambia si el scraping, la automatización de cuentas o la carga contra un objetivo dado está autorizada, por lo que esa verificación debe hacerse antes de la configuración del proxy, no después.
Marcus Chen
Aug. 6th 2026
110M+ IP reales con 99.9% de acceso exitoso
Respuesta media ultrarrapida ~0.5s para tareas de alta concurrencia
Desde solo $0.1/GB
Acceso inmediato a pools premium de proxies residenciales, datacenter, IPv6 e ISP.