Chrome启动时显示“正受到自动软件的控制”是v60起的正常安全提示,由WebDriver驱动触发;disable-infobars仅隐藏横幅但不消除navigator.webdriver等指纹特征,需配合--disable-blink-features=AutomationControlled等参数及运行时JS注入才能有效反检测。

Chrome 启动时显示“正受到自动软件的控制”是正常行为
这不是 bug,而是 Chrome 从 v60 开始加入的主动安全提示,用于标识当前浏览器实例由 WebDriver(如 webdriver.Chrome())驱动,而非用户手动启动。它的底层机制是 Chrome 自动注入一个 cdc_ 类型的检测标记(比如修改 window.navigator.webdriver 值为 true),并渲染顶部横幅。只要没加对应规避配置,就一定会出现。
disable-infobars 参数能隐藏横幅但不消除指纹
加 option.add_argument('disable-infobars') 可以让顶部提示条不显示,这是最常用、见效最快的方案。但它只影响 UI 层,不影响底层自动化特征:
-
window.navigator.webdriver仍为true,多数反爬网站能直接读取该属性识别 Selenium - Chrome 依然加载了
chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb这类调试扩展(即使不可见) - 默认 User-Agent 末尾带
HeadlessChrome或含AutomationControlled字样(取决于版本)
真正绕过检测需要组合多个启动参数
仅靠 disable-infobars 不足以应对较严格的反爬逻辑。常见有效组合包括:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
-
--disable-blink-features=AutomationControlled:重置 navigator.webdriver 等关键属性 -
--user-agent=xxx:覆盖默认 UA,避免暴露自动化痕迹 -
--disable-extensions:禁用所有扩展,防止调试插件干扰 -
--no-sandbox和--disable-dev-shm-usage:常用于容器环境,但非反爬必需
注意:--headless 模式下该横幅默认不显示,但 window.navigator.webdriver 仍为 true,所以仍需配合 disable-blink-features 才算完整。
有些网站会主动拦截,光隐藏横幅没用
像知乎、淘宝、极验等站点,不会看你有没有横幅,而是直接执行 JS 检测脚本,检查 navigator.webdriver、chrome.runtime、permissions API 是否可用、甚至监听 document.documentElement.outerHTML 中是否含调试相关 class。这时候:
- 单靠启动参数只能应付基础检测
- 必须在页面加载后通过
driver.execute_cdp_cmd()注入 JS 覆盖属性,或用driver.execute_script()动态改写navigator对象 - 更彻底的做法是使用 undetected-chromedriver3 或 playwright 的 stealth 插件,它们封装了上述全部补丁
横幅只是表象,背后那套自动化指纹才是关键。别只盯着能不能藏掉那行字,得看页面 JS 实际读到的是什么值。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










