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.
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:PORTcomo 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.
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.
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.
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.
Desde Mis Proxies o desde la API. Con la lista blanca establecida, el usuario y la contraseña no hacen falta.
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.
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"]}'
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.
| 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 |
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.
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.
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.
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.
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.
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.
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
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.
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.
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
--proxy-server y sus esquemas