Selenium IE Driver启动浏览器超时,疑受Edge跟踪防护干扰
我开发了一款用Selenium实现自动化数据采集的应用,上周起IE Driver代码突然失效。因为对接设备都用IE8、IE11,常规Edge没法正常加载页面,所以只能用IE Driver。最近更新Edge版本后,Selenium代码受影响:IE Driver能启动浏览器,但会超时。不过如果在60秒超时前手动关闭Edge跟踪防护,代码就能正常运行。
试过适配MS Edge测试,果然遇到SSL证书不兼容问题(ERR_SSL_KEY_USAGE_INCOMPATIBLE),手动开IE模式刷新能绕过,但这不是我要的解决方案。
请问有没有办法在IE Driver里规避Edge跟踪防护的影响?
环境规格
Selenium规格
- Selenium.WebDriver 版本4.24.0
- Selenium.WebDriver.IEDriver 版本4.14.0
- Selenium.Support 版本4.24.0
MS Edge规格
- Microsoft Edge 128.0.2739.42(官方版本,64位)
- 版本修订号:015505d79c9432c75e2a9131c445776c61af592
- Chromium版本:128.0.6613.85
- 操作系统:Windows 10 Version 22H2(内部版本19045.4780)
- JavaScript引擎:V8 12.8.36.6
相关代码
我试过加和不加ieOptions.BrowserCommandLineArguments的情况,也试过不指定初始URL启动,仅启动基础IE Driver实例也会出现同样问题:
var ieOptions = new InternetExplorerOptions { AttachToEdgeChrome = true, EdgeExecutablePath = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe", //ieOptions.PageLoadStrategy = PageLoadStrategy.Eager; IntroduceInstabilityByIgnoringProtectedModeSettings = true, InitialBrowserUrl = Url, IgnoreZoomLevel = true, RequireWindowFocus = false, //AcceptInsecureCertificates = true, //ForceCreateProcessApi = true, }; ieOptions.BrowserCommandLineArguments = "--disable-features=msEnhancedTrackingPreventionEnabled --ignore-certificate-errors --allow-running-insecure-content --allow-insecure-localhost"; ieOptions.SetLoggingPreference(LogType.Browser, LogLevel.Off); ieOptions.SetLoggingPreference(LogType.Client, LogLevel.Off); ieOptions.SetLoggingPreference(LogType.Driver, LogLevel.Off); ieOptions.SetLoggingPreference(LogType.Profiler, LogLevel.Off); ieOptions.SetLoggingPreference(LogType.Server, LogLevel.Off); var driverService = InternetExplorerDriverService.CreateDefaultService(); driverService.HideCommandPromptWindow = true; IWebDriver driver = new InternetExplorerDriver(driverService, ieOptions); driver.Manage().Window.Maximize();
针对Edge跟踪防护导致IE Driver超时的问题,可尝试以下几种方法:
1. 用组策略禁用Edge跟踪防护
通过组策略强制关闭增强跟踪防护,让自动化启动的Edge实例默认生效:
- 打开本地组策略编辑器(运行
gpedit.msc) - 导航到
计算机配置 > 管理模板 > Microsoft Edge - 找到配置增强型跟踪防护策略,设置为已禁用
- 重启Edge后生效
2. 修改Edge用户配置文件
直接修改自动化使用的Edge配置文件,默认关闭跟踪防护:
- 找到Edge用户数据目录(默认路径:
C:\Users\<你的用户名>\AppData\Local\Microsoft\Edge\User Data) - 打开
Default\Preferences文件,找到enhanced_tracking_prevention相关配置,将level设为0(0=关闭,1=基本,2=严格) - 保存文件后,IE Driver启动时会沿用该配置
3. 修正命令行参数
你当前用的--disable-features=msEnhancedTrackingPreventionEnabled可能在新版本Edge中失效,尝试替换为更全面的参数:
ieOptions.BrowserCommandLineArguments = "--disable-features=EnhancedTrackingPrevention,msEnhancedTrackingPreventionEnabled --ignore-certificate-errors --allow-running-insecure-content --allow-insecure-localhost";
同时确保AttachToEdgeChrome和EdgeExecutablePath配置正确,避免Edge默认配置覆盖命令行参数。
4. 降级Edge到之前可用版本
如果上述方法都无效,可暂时回退到更新前的Edge版本:
- 从微软官网下载对应旧版本安装包
- 安装时选择覆盖现有版本,再通过组策略设置阻止Edge自动更新
另外针对SSL证书问题,除了手动开IE模式,还可以尝试:
- 在
InternetExplorerOptions中添加ieOptions.AddAdditionalCapability("ie.edgechromium", true);(适配部分版本) - 把目标站点添加到IE的受信任站点,并降低对应区域的安全级别
内容的提问来源于stack exchange,提问作者literallythenoob

