如何配置带用户名密码的Socks5代理启动Selenium WebDriver
解决Selenium配置带用户名密码的Socks5代理无效问题
问题原因
Chrome浏览器目前不支持直接在Socks5代理URL中嵌入用户名密码(socks5://user:pass@host:port格式会被忽略密码),且Selenium内置的Proxy类的socks_username和socks_password参数在新版本Chrome/ChromeDriver中无法正确传递认证信息,导致代理不生效。
解决方案:使用Chrome代理扩展处理认证
通过自定义Chrome扩展自动完成代理认证,是目前最可靠的实现方式:
步骤1:创建代理扩展文件
在本地新建一个文件夹,放入以下两个文件:
- manifest.json(扩展配置文件)
{ "version": "1.0.0", "manifest_version": 3, "name": "Socks5 Proxy Auth", "permissions": ["proxy", "storage", "activeTab", "scripting"], "background": { "service_worker": "background.js" }, "minimum_chrome_version": "100.0.0.0" }
- background.js(代理逻辑脚本)
const config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "socks5", host: "1.2.3.4", port: 59101 }, bypassList: ["localhost"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, () => {}); chrome.webRequest.onAuthRequired.addListener( (details, callbackFn) => { callbackFn({ authCredentials: { username: "username", password: "password" } }); }, {urls: ["<all_urls>"]}, ["blocking"] );
步骤2:在Selenium中加载扩展
修改你的Selenium代码,通过ChromeOptions加载上述扩展文件夹:
from selenium import webdriver options = webdriver.ChromeOptions() # 替换为你存放扩展文件的文件夹路径 options.add_argument(r'--load-extension=C:\path\to\your\proxy-extension-folder') # 禁用扩展自动更新,避免干扰代理配置 options.add_argument('--disable-extensions-except=C:\path\to\your\proxy-extension-folder') options.add_argument('--disable-component-update') driver = webdriver.Chrome( executable_path=r"C:\Users\User\Downloads\chromedriver-win64\chromedriver.exe", options=options ) # 访问IP检测网站验证代理是否生效 driver.get("https://whatsmyip.org/")
备选方案:旧版Chrome启动参数配置(仅适用于Chrome 99及以下)
如果使用的是旧版Chrome,可以尝试直接通过启动参数设置代理,但该方式在新版Chrome中已被禁用:
from selenium import webdriver options = webdriver.ChromeOptions() # 设置Socks5代理地址 options.add_argument('--proxy-server=socks5://1.2.3.4:59101') driver = webdriver.Chrome( executable_path=r"C:\Users\User\Downloads\chromedriver-win64\chromedriver.exe", options=options )
注意事项
- 确保ChromeDriver版本与你的Chrome浏览器版本完全匹配,版本不兼容会导致代理配置失败
- 启动前关闭所有已打开的Chrome窗口,避免用户数据目录干扰代理设置
- 扩展文件中的代理地址、用户名、密码需与实际代理信息完全一致
内容的提问来源于stack exchange,提问作者frontenddevel0per
相关产品推荐
相关产品推荐

