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.