Headless 不再隐蔽
七天前,cside 发布了关于 2026 年 headless 浏览器检测的技术剖析。其核心结论是:检测工具现在可以在像素级别捕获 headless 会话。相同的标称浏览器,相同的操作系统,不同的 WebGL 输出。不同的 AudioContext 时序。不同的字体枚举。这些信号虽然微弱,但足以建立稳定的评分。
该文章发布在 WebDecoy 的《Browser Fingerprinting 2026》报告之后一周,后者通过不同途径得出了相同的结论。Browserless 在今年早些时候发布的《State of Web Scraping 2026》中明确指出:headless 浏览器被标记的频率远高于真实用户浏览器,且这种差距仍在持续扩大。
如果你在生产环境中运行 Puppeteer 或 Playwright,这会直接改变你的成本曲线。
实际发生了什么变化
过去关于 headless 检测的讨论主要围绕 navigator.webdriver === true、空的 plugins 数组以及 User-Agent 中的 HeadlessChrome。2020 年以来的各种修补插件都已覆盖这些问题。因此,检测机制向技术栈底层转移。
软件渲染是关键的一环。真实用户的浏览器会调用 GPU。而在容器中运行的 headless 环境通常会回退到软件光栅化器。WebGL 渲染器字符串会有所不同。相同标称输入下的像素输出存在差异。Canvas 指纹在相同输入下产生分歧。这些都不会直接触发布尔型拦截,但会计入概率评分。
AudioContext 是第二项。当页面实例化音频上下文并请求采样率或声道数量时,headless 环境返回的数值与常规桌面会话存在细微差异。相同操作的执行时序会出现可预测的偏差。
字体枚举是第三项。用户设备由于历史使用会安装各种字体。容器镜像则只有经过精简(且数量很少)的字体集。当指纹脚本在 50 种字体中测量 100 个常用字符串的宽度时,缺失字体的特征模式极具诊断价值。
单独来看,这些都是弱信号。但结合在一起,并加上检测器仍在检查的旧信号,它们汇聚成的评分足以高置信度地区分自动化会话与用户会话并触发处置。
为什么检测工具现在加大投入
因为数据终于支撑起了研发预算。
F5 的《2026 Advanced Persistent Bot Report》指出,在应用现有 Bot 缓解措施后,爬虫流量仍占全球 Web 流量的 10.2%。这就是残留比例:防御方使用现有工具无法归零的部分。这一比例中的每一个百分点都值得去封堵。
Cloudflare 于 7 月 13 日发布了 Precursor。Precursor 会持续采集客户端行为信号(指针移动、按键时序、焦点、可见性),并将其输入到一个在页面刷新后依然存在的动态 bot 评分系统中。我们 两周前曾写过相关分析:现在对会话行为的评分方式,正如一年前对指纹的评分方式一样。
Precursor 以及针对 headless 的这一波新型信号检测并非孤立动作。它们属于同一种策略:不再孤立评估单个 request,而是在能够测量的每个维度上对整个会话进行评分。
你实际支付的两项隐形税
自建 headless 方案在账面上一直很便宜。框架免费,浏览器免费,容器成本也很低。但 2026 年新增了两笔不会出现在账单上的开销。
维护税是大家普遍能注意到的。puppeteer-extra-plugin-stealth 过去能支撑数月无需修补。但在 2026 年任何具备实际防御能力的站点上,它只能支撑数周。在 headless 更新、浏览器更新、防御策略更新和插件更新之间,一名工程师每个月可能要耗费整整一周的时间来保持技术栈同步。没有人会把这写进路线图,但它直接消耗了路线图的时间。
检测税则是容易被忽略的,因为它隐藏在成功率图表之后。受保护目标上的封禁率悄然上升,重试次数增加,单次成功 fetch 的成本随之攀升。你可能会将其归因于“目标网站防得更严了”然后继续工作。其中部分确实如此,但部分原因在于你的技术栈与正常浏览器之间的差距正在拉大。这两者的趋势是一致的。
单一税负不会搞垮项目。但两者加在一起,改变了自建与购买之间的成本权衡。
这对数据团队意味着什么
并非所有抓取都需要浏览器。这一点没有变。但值得重申,因为许多 headless 部署最初抓取的页面本可以通过普通 HTTP 调用完成。
如果目标数据来自 XHR 或 JSON endpoint,请跳过浏览器。HTTP request 更便宜、更快速,而且从一开始就不会携带任何此类指纹信号。okhlopkov 7 月的文章 给出了正确的优先级顺序:API 和 XHR 优先,嵌入式 JSON 次之,仅在页面确实需要时才使用浏览器,LLM 提取仅在验证其他所有方式均不可行后采用。
对于确实需要浏览器的站点,核心问题在于防御级别。轻度防护(rate limit、User-Agent 过滤、referer 校验):配置良好的 headless 技术栈依然有效,维护税较低。重度防护(Cloudflare、PerimeterX、带有完整会话评分的 DataDome):成本消耗真实存在且会不断累积。这就是权衡发生逆转的地方。
还有一个没人讨论的中间地带。有些网站不会直接拦截,而是静默降级。价格不同、列表变少、缺少图片、缺少评论。你的爬虫报告抓取成功,但数据实际上已经出现偏差。随着指纹评分逐渐用于内容分发决策而非直接拦截决策,这种失败模式正变得越来越普遍。
如果你无法确定自己是否处于这个区间,那很可能你已经在其中了。
未来走向
Headless 是一个有效运转了十年的临时方案,因为此前没人严格审查。过去两年改变了这一点。检测厂商最终决定清理残留的爬虫份额,并且他们选择在最容易隔离自动化的层级下手。
下一轮竞争不会围绕更智能的补丁插件展开,而是取决于哪些网站认为提高检测精度值得承担对特殊配置正常用户的误杀率:例如无障碍工具、老旧 GPU、企业 proxy、私有 DNS。他们每获得一点 headless 检测精度,都会损失零点几个百分点的真实用户。军备竞赛实际发生在这种权衡之中,而不是在你的 Puppeteer 配置里。
如果你已经在承担 headless 带来的隐形成本,至少去度量它。否则这只是你在不知情的情况下付出的代价。