Saltar al contenido

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

Después de mucho trabajar ya dimos con el arreglo de esta problema que algunos de nuestros usuarios de este sitio han presentado. Si tienes algo más que compartir puedes dejar tu comentario.

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

Paso 1: Visitando “acerca de: config”

driver.get("about:config");

Paso 2 : Ejecutar script 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 coloca sus variables, en el ejemplo anterior estoy usando ES6 que maneja la concatenación como se muestra, puede usar otros métodos de concatenación de su elección, dependiendo de su idioma. (El Guión de configuración es un string que contiene el script que se ejecutará encerrado por “)

Paso 3: : Visite su sitio

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

Explicación: el código anterior aprovecha la API de Firefox para cambiar las preferencias mediante 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://....")

Agradecemos que desees añadir valor a nuestro contenido participando con tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

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