Cómo configurar un proxy con autenticación en Selenium WebDriver
Actualizado:
El argumento estándar de ChromeDriver --proxy-server=http://ip:port ignora las credenciales en línea user:pass y muestra una ventana emergente de inicio de sesión que bloquea la ejecución. Para utilizar proxies HTTP(S) autenticados de VinaProxy en Selenium, pase sus credenciales mediante selenium-wire o cargue una extensión en segundo plano para Chrome basada en onAuthRequired.
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 1 IP40.000 ₫
- 5+ IPs35.000 ₫
- 10+ IPs25.000 ₫
- 20+ IPs25.000 ₫
- 50+ IPs25.000 ₫
- 100+ IPs25.000 ₫
- 200+ IPs25.000 ₫
- 500+ IPs25.000 ₫
- 1000+ IPs22.000 ₫
- 2000+ IPs20.000 ₫
- 1 IP75.000 ₫
- 3+ IPs70.000 ₫
- 5+ IPs65.000 ₫
- 10+ IPs60.000 ₫
- 50+ IPs60.000 ₫
- 100+ IPs60.000 ₫
- 200+ IPs60.000 ₫
- 500+ IPs55.000 ₫
Dos formas fiables de autenticar proxies en Selenium
Seleccione la solución adecuada según su entorno de desarrollo y controlador:
| Enfoque | Sintaxis de configuración | Ideal para |
|---|---|---|
selenium-wire (Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | La configuración más rápida en Python; permite cambiar de proxy en caliente durante la sesión |
| Extensión Auth de Chrome | Cargar una extensión ZIP que gestione chrome.webRequest.onAuthRequired | Selenium estándar en Python, Java, C# y undetected-chromedriver |
| Migrar a Playwright | browser.newContext({ proxy: { server, username, password } }) | Autenticación de proxy nativa por contexto sin necesidad de extensiones |
Consejos de rendimiento para scraping con Selenium sobre proxies
- Establezca
options.page_load_strategy = 'eager'para que WebDriver interactúe en cuanto el DOM esté listo sin esperar a los rastreadores lentos - Utilice
--headless=new(Chrome 109+) en modo sin interfaz gráfica para que las extensiones y la autenticación funcionen idénticamente al modo normal - Deshabilite la carga de imágenes en las preferencias de Chrome al extraer datos de texto para ahorrar ancho de banda y acelerar la navegación
- Envuelva siempre el controlador en un bloque
try / finally: driver.quit()para evitar que queden procesos huérfanos de Chromium
Paso a paso
- 1
Instalar selenium-wire
Ejecute
pip install selenium-wireen su entorno virtual de Python. - 2
Definir el diccionario del proxy de VinaProxy
Estructure sus credenciales como
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}. - 3
Iniciar webdriver.Chrome con seleniumwire_options
Inicialice el navegador mediante
driver = webdriver.Chrome(seleniumwire_options=sw_options). - 4
Verificar la dirección IP de salida
Navegue a
driver.get('https://vinaproxy.com/api/my-ip')y confirme que el JSON muestra la IP del proxy.
Preguntas frecuentes
¿Por qué no funciona '--proxy-server=http://user:pass@ip:port' en ChromeOptions?
Chromium elimina deliberadamente user:pass@ de los argumentos --proxy-server de la línea de comandos. El uso de selenium-wire, una extensión onAuthRequired o la migración a Playwright soluciona esto por completo.
¿Puedo cambiar de proxy sin reiniciar Chrome en selenium-wire?
Sí. Asigne un nuevo diccionario a driver.proxy = {'http': 'http://...', 'https': 'http://...'} en cualquier momento para conmutar el proxy en tiempo real.
¿Funcionan las extensiones de proxy de Chrome en modo headless?
Sí, siempre que utilice el argumento --headless=new en lugar de la bandera antigua --headless.
Ejecute Selenium WebDriver a gran escala con IP estáticas sin límite
Proxies IPv4 dedicados e ISP estáticos al instante en 7 países.
Comprar proxies para Selenium