如何在Selenium 4+Python+Firefox中配置带认证的Socks5代理
Selenium 4 + Firefox 配置带用户名密码认证的Socks5代理(无头模式)
以下是无需额外扩展、无需UI操作的解决方案,适配Ubuntu 22.04服务器无头运行场景:
from selenium import webdriver options = webdriver.FirefoxOptions() # 代理信息配置 PROXY_ADDR = 'XXX.XXX.XXX.XXX:YYYY' PROXY_USER = '你的代理用户名' PROXY_PASS = '你的代理密码' PROXY_IP, PROXY_PORT = PROXY_ADDR.split(':') # 基础代理参数设置 options.set_preference('network.proxy.type', 1) # 手动指定代理模式 options.set_preference('network.proxy.socks', PROXY_IP) options.set_preference('network.proxy.socks_port', int(PROXY_PORT)) options.set_preference('network.proxy.socks_version', 5) # 明确指定Socks5协议 # 代理认证参数 options.set_preference('network.proxy.socks_username', PROXY_USER) options.set_preference('network.proxy.socks_password', PROXY_PASS) # 无头模式及服务器环境适配参数 options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # 初始化驱动 driver = webdriver.Firefox(options=options) # 测试示例:访问验证代理IP driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()
关键参数说明
network.proxy.type=1:强制使用手动配置的代理,而非系统自动检测或无代理模式network.proxy.socks_version=5:明确指定Socks5协议,避免默认值可能引发的兼容性问题network.proxy.socks_username/network.proxy.socks_password:直接传入认证凭证,Firefox会自动完成代理认证,无需任何UI交互
注意事项
- 确认Dante代理服务器已正确配置用户名密码认证(检查
/etc/danted.conf中的client pass规则,需包含method username password配置) - 适配版本:该方案适用于Firefox 90+ 配合 Selenium 4.x,低版本可能存在参数兼容问题
- 生产环境建议:不要硬编码用户名密码,可从环境变量或加密配置文件中读取
内容的提问来源于stack exchange,提问作者Reily Bourne
相关产品推荐
相关产品推荐

