你从裸 HTTP 升级到了真实浏览器。TLS 指纹:货真价实的 Chrome。IP:住宅。可网站照样认得出来。在 2026 年,无头浏览器检测早已远远走过了 navigator.webdriver 那个阶段——这一代检测盯的是自动化协议本身,而大多数"stealth"插件都在打着补丁修昨天的信号,同时又大声地暴露今天的信号。
本文梳理网站如今真正会查什么、大致按什么顺序查,以及在每一层里什么才真正管用。它与 JA3/JA4 TLS 指纹(网络层)和 IP 信誉与 ASN(地址层)一起,凑齐了检测三部曲——这是浏览器层。
navigator.webdriver——规范要求在自动化下必须为 true。Playwright/Puppeteer 的 stealth 配置会把它藏起来;Chrome 的 --disable-blink-features=AutomationControlled 原生就能处理。网站仍在查它,因为它免费,还能逮住幼稚的机器人。HeadlessChrome/。新版无头模式(headless=new)已经修掉,它走的是真实 Chrome 的二进制路径。navigator.plugins 为空、没有 chrome.runtime、outerWidth 为 0×0。老版无头模式这些全栽;新版无头基本都过。如果目标只查第 1 层,加了 headless=new 的现代 Playwright 就能直接走过去。但认真的目标早在好几年前就升级了。
Playwright 和 Puppeteer 通过 Chrome DevTools Protocol 驱动 Chrome,而 CDP 会留下页面 JavaScript 能观测到的运行时副作用:
// 经典的 CDP 泄露:序列化回调
const err = new Error();
Object.defineProperty(err, "stack", {
get() {
// 这个 getter 在 console 序列化期间触发——
// 而那只在 DevTools/CDP 处于连接状态时才会发生
window.__cdp_detected = true;
},
});
console.debug(err);
这类手法的各种变体——console 序列化期间的 getter 副作用、Runtime.evaluate 里的时序异常、被打过补丁的原生函数上 toString() 的行为——遍布每一套商用反爬产品。关键之处在于:它检测的是协议,而不是无头模式。一个有头的、打过 stealth 补丁的、看起来完全像人的 Chrome,只要它是通过 CDP 驱动的,照样栽。
什么管用:
除了痕迹,现代系统还会检查你浏览器的故事内部是否自洽:
| 检查项 | 机器人的破绽 |
|---|---|
| Canvas / WebGL 渲染哈希 | SwiftShader/llvmpipe 软件渲染 = 服务器 GPU;或者一个被 1 万个"不同用户"共用的哈希 |
| 字体与编解码器 | Windows User-Agent 下却是一套 Linux 服务器字体 |
| 时区 × 区域设置 × IP 地理 | Intl 说 UTC,IP 说德州,Accept-Language 说 de-DE |
| 屏幕指标 | 1920×1080 却没有任务栏,devicePixelRatio 正好是 1,窗口从没缩放过 |
| 硬件并发数 / 内存 | 向一个自称是手机的页面报告了 96 核 |
| 行为微信号 | 鼠标毫无熵、瞬间填完表单、每次都按一模一样的 100px 步长滚动 |
DIY stealth 就死在这一关:你打的每一个补丁都必须和其他所有信号对得上。在 Linux 容器上伪造一个 Windows UA,会同时和字体、GPU 字符串、TCP 指纹相矛盾。一致性胜过完美——一个诚实的有头 Linux Chrome,得分比一个拙劣伪造的"Windows"还要高。
如果地址层已经烧了,上面这些都白搭:一个完美无瑕的浏览器跑在数据中心 ASN 上,依然是"数据中心里一个完美无瑕的浏览器"——而且无头检测的阈值是随 IP 信誉自适应的。同一个浏览器,从被标记的 IP 上发请求会收到更多 JavaScript 挑战。住宅出口实际上降低了浏览器层要扛过去的审查强度:
browser = p.chromium.launch(
headless=False, # 有头能扛过更多检查
args=["--disable-blink-features=AutomationControlled"],
proxy={
"server": "us.jibaoproxy.com:913",
"username": "USERNAME", "password": "PASSWORD",
},
)
toString() 本身就是一个信号。补丁少而自洽才赢。新用户注册即送500M免费流量,首次充值额外加赠,活动期间限时开放。