千家信息网

Selenium + Firefox怎么用带用户名密码认证的HTTP代理

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,小编给大家分享一下Selenium + Firefox怎么用带用户名密码认证的HTTP代理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起
千家信息网最后更新 2025年11月09日Selenium + Firefox怎么用带用户名密码认证的HTTP代理

小编给大家分享一下Selenium + Firefox怎么用带用户名密码认证的HTTP代理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

熟悉Firefox的同学都知道,Firefox在配置HTTP代理时无法设置用户名和密码。而收费的HTTP代理大多都是需要进行用户名和密码认证的(有的也支持IP白名单,但前提是你的IP需要固定不变)。这就使得使用Selenium + Firefox进行自动化操作非常不方便,因为每次启动一个新的浏览器实例就会弹出一个授权验证窗口,被要求输入用户名和密码(如下图所示),打断了自动化操作流程。

另外,Firefox也没有提供设置用户名密码的命令行参数(PS:phantomjs就有--proxy-auth这样的参数)。难道真的没有解决方法了?

鲲之鹏的技术人员通过研究终于找到了一个有效并且稳定的解决方案:

先介绍一个重要的角色,它的主页是 https://addons.mozilla.org/en-US/firefox/addon/close-proxy-authentication/ 。close-proxy-authentication实现了自动完成代理用户名密码认证(Proxy Authentication)的功能,它提供了一个extensions.closeproxyauth.authtoken参数用来设置代理的用户名和密码,其值为经过base64编码后的用户名密码对(如下图所示)。close-proxy-authentication会使用该值构造出"Proxy-Authorization: Basic dGVzdDp0ZXN0"头发给代理服务器,以通过认证,这就是它的工作原理。

我们就是要借助这个插件在Selenium + Firefox时自动完成HTTP代理认证,流程是这样的:

(1)通过Firefox配置选项动态添加close-proxy-authentication这个插件(默认不加载任何插件);

(2)通过配置选项设置HTTP代理的IP和端口参数;

(3)设置extensions.closeproxyauth.authtoken的值为base64encode("用户名:密码");

(4)后续访问网站的时候close-proxy-authentication插件将自动完成代理的授权验证过程,不会再弹出认证窗口;

下面是完整的测试代码:

view plain copy to clipboard print ?

  1. # coding: utf-8

  2. # selenium_firefox_proxy_auto_auth.py

  3. import sys

  4. import time

  5. from base64 import b64encode

  6. from selenium import webdriver

  7. # close-proxy-authentication插件的路径

  8. # https://addons.mozilla.org/en-US/firefox/addon/close-proxy-authentication/

  9. PROXY_HELPER_DIR = 'close_proxy_authentication-1.1.xpi'

  10. def test():

  11. # HTTP(S)类型代理参数

  12. proxy_host = '221.229.204.91'

  13. proxy_port = 8888

  14. proxy_username = '******'

  15. proxy_password = '******'

  16. fp = webdriver.FirefoxProfile()

  17. # 添加代理认证插件

  18. fp.add_extension(PROXY_HELPER_DIR)

  19. # 设置代理参数

  20. fp.set_preference('network.proxy.type', 1)

  21. fp.set_preference('network.proxy.http', proxy_host)

  22. fp.set_preference('network.proxy.http_port', proxy_port)

  23. # 给close-proxy-authentication插件设置authtoken(即代理认证的用户名和密码)

  24. credentials = '{}:{}'.format(proxy_username, proxy_password)

  25. credentials = b64encode(credentials)

  26. fp.set_preference('extensions.closeproxyauth.authtoken', credentials)

  27. firefox = webdriver.Firefox(firefox_profile=fp)

  28. # 访问http://httpbin.org/ip回显当前IP

  29. firefox.get('http://httpbin.org/ip')

  30. time.sleep(1000)

  31. if __name__ == '__main__':

  32. test()

测试环境:

view plain copy to clipboard print ?

  1. Firefox V53.0

  2. geckodriver v0.18.0

  3. selenium V3.8.0

  4. close-proxy-authentication V1.1

上述环境涉及文件打包下载地址: http://pan.webscraping.cn:8000/index.php/s/PMDjc77gbCFJzpO

需要特别注意的是:

(1)close-proxy-authentication的最新版本目前是V1.1,它并不兼容最新版的Firefox,鲲之鹏的技术人员测试发现Firefox V56.0以下版本能够兼容close-proxy-authentication V1.1。

(2)不同geckodriver(Firefox的webdriver程序)版本,支持的Firefox版本也不相同,具体支持哪些版本,在geckodriver的releases页面上有说明。

测试结果如下图所示。没有再弹出认证窗口,访问httpbin.org/ip直接回显了HTTP代理的IP:

以上是"Selenium + Firefox怎么用带用户名密码认证的HTTP代理"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

代理 密码 用户 用户名 认证 插件 参数 版本 测试 篇文章 支持 配置 人员 内容 就是 技术 流程 环境 自动化 验证 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网站服务器配置要求条件 服务器配置在哪查 身份证号码的网络安全 平安银行数据库面试题 软件开发进度清单 消逝的光芒2登不上服务器 邮件和服务器无法连接 深圳服务器设备供货商哪家好 网络安全法适用范畴 外派到沃尔玛做软件开发好吗 数据库事务中更新记录失败 三门县软件开发 太原慧推移动网络技术 数据库的update是什么意思 oracle数据库规划 优选科技互联网行业三大etf 网络安全和网贷安全教育目的 网络安全法律保障 怎样远程管理网站服务器 有一个云服务器赚钱 怎么用电脑创建ftp服务器 外卖配送管理系统数据库设计 销售软件开发需要有资质证书 内蒙古科技大学的网络安全 网络安全生产总结报告范文 第一集网络安全法 怎么安装服务器系统 网络安全设备兼容性测试工具 虚拟机做数据库服务器和本机通信 东二小学网络安全教育
0