Saltar al contenido

Python Selenium Webdriver: cambio de la configuración del proxy sobre la marcha

Solución:

Ésta es una pregunta un poco vieja. Pero en realidad es posible cambiar los proxies dinámicamente a través de un “camino hacky“Voy a usar Selenium JS con Firefox pero puede seguir en el idioma que desee.

Paso 1: Visitando “about: config”

driver.get("about:config");

Paso 2 : Ejecutar secuencia de comandos que cambia de proxy

var setupScript=`var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);

prefs.setIntPref("network.proxy.type", 1);
prefs.setCharPref("network.proxy.http", "${proxyUsed.host}");
prefs.setIntPref("network.proxy.http_port", "${proxyUsed.port}");
prefs.setCharPref("network.proxy.ssl", "${proxyUsed.host}");
prefs.setIntPref("network.proxy.ssl_port", "${proxyUsed.port}");
prefs.setCharPref("network.proxy.ftp", "${proxyUsed.host}");
prefs.setIntPref("network.proxy.ftp_port", "${proxyUsed.port}");
                  `;    

//running script below  
driver.executeScript(setupScript);

//sleep for 1 sec
driver.sleep(1000);

Donde usar $ {abcd} es donde pones tus variables, en el ejemplo anterior estoy usando ES6 que maneja la concatenación como se muestra, puedes usar otros métodos de concatenación de tu elección, dependiendo de tu idioma. SetupScript es un cuerda que contiene el script que se ejecutará encerrado por “)

Paso 3: : Visita tu sitio

driver.get("https://whatismyip.com");

Explicación: el código anterior aprovecha la API de Firefox para cambiar las preferencias usando código JavaScript.

Para configurar un proxy sobre la marcha con Firefox:

def set_proxy(driver, http_addr="", http_port=0, ssl_addr="", ssl_port=0, socks_addr="", socks_port=0):

    driver.execute("SET_CONTEXT", {"context": "chrome"})

    try:
        driver.execute_script("""
          Services.prefs.setIntPref('network.proxy.type', 1);
          Services.prefs.setCharPref("network.proxy.http", arguments[0]);
          Services.prefs.setIntPref("network.proxy.http_port", arguments[1]);
          Services.prefs.setCharPref("network.proxy.ssl", arguments[2]);
          Services.prefs.setIntPref("network.proxy.ssl_port", arguments[3]);
          Services.prefs.setCharPref('network.proxy.socks', arguments[4]);
          Services.prefs.setIntPref('network.proxy.socks_port', arguments[5]);
          """, http_addr, http_port, ssl_addr, ssl_port, socks_addr, socks_port)

    finally:
        driver.execute("SET_CONTEXT", {"context": "content"})

Uso:

 driver = webdriver.Firefox()

 set_proxy(driver, http_addr="212.35.56.21", http_port=8080)

 driver.get("http://....")

 set_proxy(driver, http_addr="212.35.56.22", http_port=8888)

 driver.get("http://....")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *