一尘不染

Python Selenium Webdriver-快速更改代理设置

selenium

我目前正在成功使用以下代码在Selenium
Webdriver中使用代理。不幸的是,如果不重新启动整个浏览器,我似乎无法使其更改代理设置。我曾希望仅更新代理服务器设置(就像我将代理服务器设置为开始那样)会更改代理服务器,但似乎不起作用。在这个问题上的任何帮助将不胜感激。

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", proxyAddress)
profile.set_preference("network.proxy.http_port", proxyPort)
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)

阅读 1660

收藏
2020-06-26

共1个答案

一尘不染

这是一个有点老的问题。但是实际上有可能通过“ hacky way ” 动态地更改代理,我将在 Firefox中 使用 Selenium
JS,
但是您可以使用想要的语言。

第1步: 访问“ about:config”

driver.get("about:config");

步骤2: 运行更改代理的脚本

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);

当使用 $ {ABCD} 是你把你的变量,在上面的例子中,我使用ES6它处理级联如图所示,你可以使用你选择的其他拼接方法,根据您的语言。(该
SetupScript
是一个 字符串 包含要运行的脚本用``)括起来

步骤3 :访问您的网站

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

说明:以上代码利用Firefox的API来使用JavaScript代码更改首选项。

2020-06-26