使用selenium webdriver时,有没有办法动态更改Firefox使用的代理?
目前我有使用代理配置文件的代理支持但有没有办法在浏览器处于活动状态并运行时更改代理?
我目前的代码:
proxy = Proxy({ 'proxyType': 'MANUAL', 'httpProxy': proxy_ip, 'ftpProxy': proxy_ip, 'sslProxy': proxy_ip, 'noProxy': '' # set this value as desired }) browser = webdriver.Firefox(proxy=proxy)
提前致谢.
这是一个稍微陈旧的问题.但实际上可以通过" hacky方式 " 动态更改代理我将使用Selenium JS和Firefox,但您可以按照您想要的语言进行操作.
第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,如图所示,您可以使用您选择的其他串联方法,具体取决于您的语言.
第3步:访问您的网站
driver.get("http://whatismyip.com");
说明:上面的代码利用Firefox的API来使用JavaScript代码更改首选项.