How to change proxy on my webdriver multiple times on a single session? How to change proxy on my webdriver multiple times on a single session? selenium selenium

How to change proxy on my webdriver multiple times on a single session?


According to this topic, here is your solution :

Solution link : Python Selenium Webdriver - Changing proxy settings on the fly

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 secdriver.sleep(1000);


I was able to solve this issue by setting up the preferences through JS on aboutLconfig and then used execute_script in selenium to deploy the js through python:

regions = {'US': '', #USA is the default server'Australia': #json response through the api,'Canada': #json response through the api,'France': #json response through the api,'Germany': #json response through the api,'UK': #json request response the api}       for region in regions:        driver.get("about:config")        time.sleep(3)        driver.find_element_by_css_selector("window#config deck#configDeck vbox#warningScreen vbox#warningBox.container vbox.description hbox.button-container button#warningButton.primary").click()        time.sleep(3)        driver.execute_script('var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); prefs.setIntPref("network.proxy.type", 1); prefs.setCharPref("network.proxy.socks", "' + regions[region] + '"); prefs.setIntPref("network.proxy.socks_port", 9998);')        time.sleep(3)        driver.get('https://www.whatsmyip.com/')        time.sleep(10)

With the script im executing i am changing service value of the socks host and socks host with the region and the port respectively.

It essentially is the same as setting up a profile through selenium but this way you do it while the bot is running. You could also change user agent and pretty much anything you'd like this way.