PyInstaller打包的Selenium+Chromedriver程序触发WinError 10061问题咨询
结合你描述的场景(无头模式正常、非无头模式后续URL报错、仅单台机器出现),这个错误本质是Python程序与ChromeDriver/Chrome实例的通信连接被拒绝,可能的原因如下:
安全软件拦截Chrome进程
目标机器的杀毒软件、防火墙或EDR工具,可能将非无头模式的Chrome判定为“可疑自动化程序”,在访问特定站点时主动终止Chrome进程,导致Python无法与已退出的ChromeDriver通信。无头模式因无界面运行,未触发安全软件的拦截规则。Chrome运行时组件异常
目标机器的Chrome浏览器组件损坏,非无头模式下加载界面渲染、扩展等组件时崩溃,进而导致ChromeDriver退出。无头模式无需界面渲染,避开了故障组件,所以能正常运行。另外也可能是Chrome版本与ChromeDriver版本存在隐性兼容性问题,仅在非无头模式下暴露。通信端口/网络策略限制
非无头模式下Chrome会占用更多端口资源,目标机器的端口被其他程序占用,或网络策略限制了Chrome与ChromeDriver的本地通信,导致切换URL时连接中断。无头模式的端口使用逻辑更简洁,未触发端口冲突或策略限制。缺少关键启动参数
非无头模式下未配置--no-sandbox、--disable-dev-shm-usage、--disable-gpu等参数,目标机器的低权限环境、资源不足或显卡驱动问题,会导致Chrome在加载新页面时崩溃。无头模式通常默认启用部分这类参数,因此不受影响。系统资源耗尽
非无头模式下Chrome的内存、CPU占用远高于无头模式,目标机器本身资源紧张,后续加载新页面时资源耗尽,系统强制终止Chrome进程,引发连接拒绝错误。
内容的提问来源于stack exchange,提问作者frumsky

