光靠--disable-blink-features=automationcontrolled等基础配置已无法绕过90%现代网站检测,必须分层处理:启动前用cdp抹除navigator.webdriver及$cdc_等动态js变量、加载中注入脚本隐藏指纹、运行时模拟非线性鼠标轨迹与真实交互节奏,三者缺一不可。

直接说结论:光靠 options.add_argument("--disable-blink-features=AutomationControlled") 这类基础配置,90% 的现代网站(尤其是药监局、电商、小红书、Cloudflare 保护站点)已经无法绕过检测。真正有效的方案必须分层处理——启动前抹除指纹、加载中劫持 JS 环境、运行时模拟行为节奏,三者缺一不可。
为什么 navigator.webdriver = false 失效了
这不是代码没写对,而是执行时机错了。大多数反爬脚本在 DOMContentLoaded 事件触发前就执行了,而你用 driver.execute_script("navigator.webdriver = false") 是在页面加载完成后才注入,此时检测早已完成并跳转/封禁。
- 正确做法是通过 CDP(Chrome DevTools Protocol)在浏览器进程启动阶段就删除该属性,例如:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"}) - 同时必须清除所有已知的 Selenium 注入变量,比如
__webdriver_evaluate、$cdc_、_selenium,否则单靠改webdriver属性毫无意义 - 注意:Chrome 125+ 版本后,部分变量名会动态生成(如
$cdc_asdjflasutopfhvcQLmc),需用正则匹配并删除整个 key,不能硬编码
ChromeOptions 配置里哪些参数真有用,哪些是心理安慰
很多教程堆砌一堆 --disable-xxx 参数,但实测发现多数无效甚至起反作用。关键不是“关得多”,而是“关得准”。
- 必加且有效:
--disable-blink-features=AutomationControlled(关闭自动化特征上报)、--disable-infobars(避免顶部黄色提示条暴露)、--disable-extensions(插件列表为空是强指纹) - 慎用或弃用:
--headless(极易被识别,bot.sannysoft.com 直接标红)、--no-sandbox(安全模式关闭反而触发风控)、--disable-gpu(无实际作用,还可能引发渲染异常) - 必须配合
excludeSwitches:显式排除enable-automation开关,否则 Chrome 启动日志里仍会带这个标记
绕过检测最稳定的方式:Attach 到人工启动的浏览器
与其费力伪装一个被 Selenium 启动的浏览器,不如让 Selenium 去控制一个你手动(或命令行)启动的真实浏览器实例。这种方式下,所有指纹、插件、缓存、历史记录都和真人完全一致,绕过率接近 100%。
- 启动浏览器时加两个参数:
--remote-debugging-port=9222和--user-data-dir="C:/temp/chrome_profile" - Python 中不新建
Chrome(),而是复用已有实例:chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") - 注意:每次运行前确保目标端口未被占用;
user-data-dir路径不能是默认路径(如AppData),否则可能被网站读取到异常登录态
容易被忽略的致命细节
很多人调通了首页访问,但一翻页或点按钮就触发验证码,问题往往出在这些隐性环节:
- 鼠标移动不是匀速直线,要用
ActionChains+ 贝塞尔曲线生成非线性轨迹,不能只用move_to_element()硬跳 - 页面加载后立即操作 DOM 是高危行为,必须结合
WebDriverWait等待特定 JS 变量就绪(比如等待window.$zq或document.querySelector(".captcha")消失) - 代理 IP 必须和浏览器指纹匹配:如果用北京 IP 却设置
Accept-Language: en-US,或分辨率设成 3840×2160 却用手机 UA,风控系统会直接打低分
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











