Selenium+ChromeDriver87项目从Mac迁移至Windows Server出现SSL握手失败报错
Windows Server环境Selenium(v87 ChromeDriver)功能异常定位排查
- 冗余报错识别
日志中输出的
[Error:device_event_log_impl.cc(211)]Bluetooth: bluetooth_adapter_win GetBluetoothAdapterStaticsActivationFactory failed: Class not registered属于Windows Server场景下Chrome的固有冗余报错,服务器无蓝牙硬件组件、对应COM类未注册时必然触发,不影响核心自动化流程,无需针对性修复。 - 核心故障根因(页面无法捕获内容、SSL握手失败)排查步骤
- 系统权限与文件解锁配置
- 从压缩包解压得到的v87版本Chrome、ChromeDriver程序,Windows会默认给外部来源文件附加「网络来源锁定」标记,该标记存在时程序虽能启动,但网络栈、本地进程通信会被系统静默拦截。需要右键对应exe文件,进入属性页勾选「解除锁定」后保存配置。
- 为Chrome、ChromeDriver、运行自动化脚本的宿主程序(Python解释器、Java虚拟机等)配置管理员权限兼容:右键程序入口-属性-兼容性-勾选「以管理员身份运行此程序」。Windows Server的UAC权限管控逻辑和macOS不同,非提权进程的本地调试端口通信、HTTPS网络请求会被系统严格拦截,直接触发SSL握手阶段的连接阻断,返回错误码-100。
- 浏览器启动参数补全适配
在初始化Chrome选项时追加以下参数,适配Windows Server无交互桌面、严格网络校验的环境:
--ignore-certificate-errors:跳过自签名证书、系统证书库缺失导致的校验拦截--allow-running-insecure-content:允许混合协议内容加载--disable-features=RendererCodeIntegrity:关闭渲染端代码完整性校验,避免DOM数据捕获被拦截--no-sandbox:关闭沙箱机制,消除沙箱对DevTools调试端口通信的静默阻断--no-proxy-server:强制Chrome走直连发起网络请求,避免系统全局代理未配置凭证导致的SSL握手失败
- 本地通信规则放行
- 日志中打印的
dev tools listening on ws://127.0.0.1:xxxx/devtools/browser/...仅代表Chrome侧已开启调试监听端口,不代表Selenium端已成功建立有效连接。Windows Defender防火墙默认会拦截本地环回地址的进程间调试通信,需要在入站规则中为Chrome、ChromeDriver进程放开127.0.0.1地址段的全端口访问权限,否则会出现端口监听显示正常、但实际无法拉取页面DOM、捕获元素为空的问题。
内容的提问来源于stack exchange,提问作者Alora
相关产品推荐
相关产品推荐

