使用Selenium webdriver在Firefox中动态更改代理

 275514908_9369d7 发布于 2023-02-07 08:29

使用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)

提前致谢.

1 个回答
  • 这是一个稍微陈旧的问题.但实际上可以通过" 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代码更改首选项.

    2023-02-07 08:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有