最近在做企业级公开数据采集平台的升级,把老的Selenium架构全面迁到Playwright。本来以为换了更现代的框架就能解决检测问题,结果上线第一天就被打了脸——目标站点的Cloudflare五秒盾直接拦了88%的请求,剩下的也活不过三页就弹出验证码。最开始以为只是缺个navigator.webdriver的隐藏,加了启动参数再跑,通过率只涨了5个百分点,根本杯水车薪。
后来深入研究才发现,原生Playwright的检测点远不止一个webdriver标志。从CDP协议层面的Runtime.enable泄漏,到启动参数里的自动化标记,再到JS执行上下文的特征,整套指纹加起来,在反爬系统眼里就是明牌。网上搜来的零散补丁根本没用,必须从驱动层到应用层做全链路的反检测优化。
前后调试了两周,把playwright-stealth增强版和Patchright两套方案都踩了一遍,最终在Cloudflare Turnstile、DataDome这类主流防护上,稳定通过率做到了91%以上,连续跑几个小时也不容易触发二次验证。这篇文章就从底层检测原理讲起,一步步拆解两套方案的配置、优劣与组合用法,附可直接复用的实战代码。
一、先搞懂:原生Playwright到底是怎么被一眼看穿的
很多人对反检测的认知还停留在「改个UA、藏个webdriver」的阶段,这在2026年的防护体系面前完全不够看。现代反爬系统是多维度综合评分,Playwright暴露的特征遍布浏览器启动、CDP通信、JS运行时三个层面,随便命中两三个就足够判定为机器人。