Selenium初始化WebDriver时出现Proxy代理错误
解决Selenium初始化WebDriver时的代理401未授权错误
出现这个问题是因为Chrome启动阶段会自动发起后台请求(比如扩展更新、安全校验),这些请求走了配置的代理但未携带认证信息,直接触发企业防火墙的401拦截。以下是几种可行的解决方式:
方式一:给代理添加认证信息
如果企业代理支持账号密码认证,直接把认证信息嵌入代理地址:
from selenium import webdriver import urllib.parse # 密码含@、:等特殊字符时,用urllib.parse.quote做URL编码 username = "your_username" password = urllib.parse.quote("your_password") proxy = f'{username}:{password}@x.x.x.x:xxx' chrome_options = webdriver.ChromeOptions() chrome_options.add_argument(f'--proxy-server={proxy}') # 禁用Chrome启动时的后台请求,减少触发代理认证的概率 chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--disable-background-networking') chrome_options.add_argument('--no-default-browser-check') driver = webdriver.Chrome(options=chrome_options)
方式二:使用系统代理设置
如果电脑已配置好可通过企业防火墙的系统代理(比如域账号自动认证),让Chrome直接复用系统代理:
from selenium import webdriver chrome_options = webdriver.ChromeOptions() # 自动检测系统代理 chrome_options.add_argument('--proxy-auto-detect') # 或者强制使用系统代理配置 # chrome_options.add_argument('--system-proxy') driver = webdriver.Chrome(options=chrome_options)
方式三:处理NTLM域代理认证
如果企业代理用的是NTLM域认证,账号密码嵌入地址的方式无效,可借助Chrome代理认证插件:
- 下载支持NTLM认证的Chrome插件(如Proxy Auto Auth)
- 用
add_extension加载插件到Chrome配置:
from selenium import webdriver chrome_options = webdriver.ChromeOptions() # 替换为你的插件本地路径 chrome_options.add_extension('proxy_auth_plugin.crx') driver = webdriver.Chrome(options=chrome_options)
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

