SeleniumBasic(VBA)如何配置Edge以IE模式访问安全站点
针对SeleniumBasic(VBA)操控Edge访问安全站点问题的可行方案
解决debug模式被站点拦截的问题
SeleniumBasic默认启动Edge时会携带enable-automation标记、固定远程调试端口,这类特征是安全站点拦截自动化访问的核心判断依据,按以下步骤处理即可绕过:
- 自定义浏览器启动参数,移除自动化特征
初始化驱动前先构造EdgeOptions配置对象,追加反检测参数,参考代码如下:Dim driver As New EdgeDriver Dim edgeOpt As New EdgeOptions ' 移除Blink内核的自动化控制标记 edgeOpt.AddArgument "--disable-blink-features=AutomationControlled" ' 排除启动参数里的enable-automation开关,去掉顶部"正被自动化软件控制"的提示 edgeOpt.AddExcludedArgument "enable-automation" ' 随机分配远程调试端口,避免固定端口被特征扫描命中 edgeOpt.AddArgument "--remote-debugging-port=0" ' 禁用信息栏、扩展弹窗干扰 edgeOpt.AddArgument "--disable-infobars" ' 指定固定的用户数据目录,不要用默认生成的临时测试配置 edgeOpt.AddArgument "--user-data-dir=C:\SeleniumEdgeProfile" ' 按自定义配置启动浏览器 driver.Start "msedge", options:=edgeOpt - 若参数调整后仍被拦截,改用预启动实例绑定方案:
- 打开任务管理器,结束所有msedge.exe相关进程
- 打开命令提示符,执行命令启动普通权限的Edge:
msedge.exe --remote-debugging-port=9222 --user-data-dir=C:\SeleniumEdgeProfile - 回到VBA代码,不调用Start方法新建浏览器,直接通过debug端口绑定已经启动的Edge实例,这种方式启动的浏览器和手动打开的客户端特征完全一致,不会触发debug模式拦截。
解决站点强制要求Edge IE模式的适配问题
SeleniumBasic原生EdgeDriver不支持直接调用IE模式,可通过IEDriver兼容层对接Edge IE模式内核,步骤如下:
- 提前配置Edge本地规则:打开Edge设置-默认浏览器,将目标安全站点添加到IE模式站点列表,重启Edge后手动验证访问该站点时可自动切换到IE模式。
- 下载和本地Edge大版本一致的IEDriverServer.exe,放到SeleniumBasic的驱动存放目录(默认路径为
C:\Users\你的用户名\AppData\Local\SeleniumBasic)。 - 改用IEDriver启动对接IE模式,参考代码如下:
Dim driver As New IEDriver Dim ieOpt As New IEOptions ' 关闭IE保护模式校验,避免启动失败 ieOpt.SetCapability "ignoreProtectedModeSettings", True ' 指定使用Edge Chromium内核承载IE模式 ieOpt.SetCapability "ie.edgechromium", True ' 填写本地Edge的实际安装路径 ieOpt.SetCapability "ie.edgepath", "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" driver.Start options:=ieOpt driver.Get "目标安全站点的完整URL" - 若内嵌IE模式下元素定位异常,可在Edge默认浏览器设置中开启「在独立IE窗口中打开IE模式站点」选项,兼容性会明显提升。
注意:使用上述方案前请先将本地SeleniumBasic升级到最新版本,旧版本不支持
ie.edgechromium相关配置参数,会直接抛出启动错误。
内容的提问来源于stack exchange,提问作者alcapps
相关产品推荐
相关产品推荐

