C# Selenium 4.0用Chrome Driver BiDi API配置认证代理时卡顿如何解决
解决方案
问题根因
- 未在ChromeOptions中显式开启BiDi协议支持,Selenium的Network系列BiDi API依赖BiDi协议通道,未开启时调用
StartMonitoring()会阻塞网络请求,导致页面无法跳转。 - 监控启停时机错误,导航执行后立刻停止监控,代理身份认证的请求还未完成就被中断。
修正后的完整代码
var options = new ChromeOptions(); // 关键:显式启用BiDi协议支持 options.UseBiDi = true; options.Proxy = new Proxy {HttpProxy = "1.1.1.1:12345", SslProxy = "1.1.1.1:12345", Kind = ProxyKind.Manual}; var driver = new ChromeDriver(ChromeDriverService.CreateDefaultService(), options, TimeSpan.FromMinutes(2)); NetworkAuthenticationHandler handler = new NetworkAuthenticationHandler() { // 可按需缩小匹配范围,避免不必要的认证尝试,示例为全局匹配 UriMatcher = d => true, Credentials = new PasswordCredentials("proxy_user", "proxy_pass") }; var networkInterceptor = driver.Manage().Network; networkInterceptor.AddAuthenticationHandler(handler); networkInterceptor.StartMonitoring(); driver.Navigate().GoToUrl("https://stackoverflow.com/"); // 等待页面加载完成,可根据实际场景替换为显式等待目标元素加载的逻辑 Thread.Sleep(3000); networkInterceptor.StopMonitoring(); driver.Quit();
额外注意事项
- 保证Selenium WebDriver版本 ≥ 4.0,Chrome与ChromeDriver版本 ≥ 110,该版本区间对BiDi API的支持更稳定。
- 不需要全局认证的场景可调整
UriMatcher的匹配逻辑,仅对目标域名的请求触发认证,降低性能开销。
内容的提问来源于stack exchange,提问作者yazilimprogram
相关产品推荐
相关产品推荐

