Python Selenium 求Chrome代理配置对应的Firefox适配实现
Firefox 端等价Selenium代理配置实现
Chrome通过命令行参数--proxy-server注入全局代理的逻辑,在Firefox上需要通过浏览器内置偏好设置实现,最终可完全对齐原Chrome配置的代理生效范围,适配代码如下:
from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() # 启用手动代理模式,参数值1代表采用手动指定的代理规则,而非系统/自动PAC代理 firefox_options.set_preference("network.proxy.type", 1) # 配置HTTP代理地址 firefox_options.set_preference("network.proxy.http", "server.address") # 配置HTTP代理端口,必须传入整数类型,字符串格式会导致配置无法识别 firefox_options.set_preference("network.proxy.http_port", 8080) # 同步配置HTTPS流量的代理规则,对齐Chrome全流量代理的默认行为,避免HTTPS请求直连 firefox_options.set_preference("network.proxy.ssl", "server.address") firefox_options.set_preference("network.proxy.ssl_port", 8080) # 移除Firefox默认的本地地址绕过代理规则,与Chrome代理的无分流逻辑保持一致 firefox_options.set_preference("network.proxy.no_proxies_on", "") # 携带代理配置初始化Firefox驱动 driver = webdriver.Firefox(options=firefox_options)
配置对齐说明
- 仅单独配置HTTP代理项时,Firefox默认会让HTTPS流量走直连,和原Chrome
--proxy-server覆盖全流量的行为存在明显偏差,必须同步配置SSL代理参数才能实现效果完全一致 - 代理端口字段不接受字符串格式的入参,直接传入
"8080"会触发配置失效 - 如果原Chrome代理为SOCKS协议类型,需要额外补充
network.proxy.socks、network.proxy.socks_port的对应偏好设置,匹配代理的协议类型
内容的提问来源于stack exchange,提问作者JohnsonR
相关产品推荐
相关产品推荐

