我目前正在成功使用以下代码在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)
这是一个有点老的问题。但是实际上有可能通过“ 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代码更改首选项。