puppeteer-extra-stealth 已过时:2026年自动化应该用什么 — Clawbrowser 文章封面

puppeteer-extra-stealth 已过时:2026年自动化应该用什么

Clawbrowser Team浏览器自动化puppeteerplaywright反检测指南

puppeteer-extra-plugin-stealth 是 Puppeteer 最流行的反检测包。它在 npm 上仍然保持每周 600K+ 的下载量。但最后一次更新停留在 2023 年 3 月,最新版本是 v2.11.2,此后再无变动。维护已经停滞,GitHub issue 堆积如山,而反检测系统早已迭代升级。

概要: stealth 插件通过页面级 JavaScript 覆写来修补检测信号。到了 2026 年,Cloudflare、Akamai、DataDome 等反检测系统检查的是 JavaScript 无法触及的信号:TLS 指纹、CDP 协议痕迹和引擎级渲染差异。解决方案不是更好的插件,而是从不同层级入手——用补丁驱动隐藏协议泄漏,或用补丁浏览器在引擎级处理指纹。


stealth 插件到底做了什么

puppeteer-extra-plugin-stealth 捆绑了 11 个规避模块,通过 evaluateOnNewDocument 执行。每个模块修补一个检测面:

Module 修补内容
webdriver 移除 navigator.webdriver = true
chrome.runtime 伪造 chrome.runtime 对象
chrome.csi / chrome.app 添加缺失的 Chrome API 桩
navigator.plugins 伪造插件数组
navigator.languages 覆写语言设置
navigator.permissions 修复权限查询行为
media.codecs 伪造编解码器支持
sourceurl 隐藏注入脚本中的 //# sourceURL
iframe.contentWindow 修复跨域 iframe 检测
webgl.vendor 伪造 WebGL 厂商/渲染器字符串
user-agent-override 设置真实的 User-Agent 头

这些补丁在 2021-2022 年有效,因为当时反检测系统主要检查页面级 JavaScript 属性。但它们无法应对现代检测系统实际检查的内容。

2026 年 stealth 插件为何失效

反检测已经转移到 JavaScript 层以下。当前关键的信号是 evaluateOnNewDocument 无法触及的。

CDP 协议泄漏

Puppeteer 连接 Chrome 时会发送 Runtime.enable、Page.enable、Network.enable 等 CDP 命令。这些命令会在浏览器内部状态中留下痕迹,反检测脚本可以检测到。stealth 插件在页面级运行,无法触及协议级的 CDP。

仅 Runtime.enable 一条命令就足以识别自动化会话。无论页面级做多少修补,都无法掩盖 CDP 命令已被发出的事实。

TLS 指纹识别

Cloudflare 在提供任何 HTML 之前就会检查 TLS 指纹(JA3/JA4)。如果 TLS 指纹不对,stealth 插件的 JavaScript 补丁还没加载就已经被质询或拦截。插件在页面级运行,无法访问 TLS 层。关于 TLS 指纹在检测体系中如何运作,请参阅浏览器自动化防封指南中的网络层章节。

JavaScript 覆写检测

反检测脚本不仅检查 navigator.webdriver 的值,还检查属性描述符。真实浏览器中 webdriver 是 Navigator 原型上的原生 getter。stealth 插件用 Object.defineProperty 覆写它,会改变描述符的 configurable 标志和 getter 函数的 toString() 输出。检测脚本会测试这些差异。

其他覆写也存在同样的问题。chrome.runtime、插件数组、权限查询在原生实现被 JavaScript 桩替换后,都会留下可检测的差异。

无头渲染差异

即使使用 --headless=new(较新的无头模式),Chrome 的渲染仍与有头模式存在微妙差异。字体度量、GPU 加速的 Canvas 输出、屏幕尺寸 API 都有不同。stealth 插件能修补部分 navigator 属性,但无法改变渲染引擎本身的行为。


替代 stealth 插件的方案

生态系统分化为两种路径:补丁驱动(修复协议层)和补丁浏览器(修复引擎层)。它们解决不同的问题。

补丁驱动:Rebrowser 和 Patchright

Rebrowser 提供 Puppeteer 和 Playwright 的直接替换包(rebrowser-puppeteer、rebrowser-playwright)。补丁针对 CDP 协议痕迹:修改 Runtime.enable 等命令与浏览器交互的方式,避免留下可检测的痕迹。只需替换代码中的包名,其余完全不变。

// Before: detected
const puppeteer = require('puppeteer');

// After: CDP artifacts patched
const puppeteer = require('rebrowser-puppeteer');

Patchright 为 Playwright 提供同样的功能,侧重 Python。它修补 Runtime.enable 泄漏,且处于活跃维护中。

局限性: 补丁驱动修复了协议检测,但不解决浏览器指纹问题。如果目标站点检查 Canvas、WebGL、AudioContext 或字体渲染,你仍然会暴露。补丁驱动解决的是"是否自动化"的问题,而不是"是否真实设备"的问题。

补丁浏览器:反检测引擎

补丁浏览器直接修改 Chromium 本身,使指纹信号在引擎级保持一致。Canvas 输出、WebGL 渲染、AudioContext 数据、字体度量、屏幕尺寸、时区、地区设置都报告与单一真实设备配置文件匹配的值。

这就是 Clawbrowser 的工作方式。它是一个 Chromium 分支,具备 20+ 个表面的引擎级指纹补丁、内置代理路由、WebRTC 泄漏防护和原生 CDP 支持。现有的 Puppeteer 或 Playwright 代码通过 CDP 连接即可:

from playwright.async_api import async_playwright

async def automate_without_detection():
    async with async_playwright() as p:
        # Connect to Clawbrowser instead of stock Chrome

stealth 插件无法处理而 Clawbrowser 能处理的:

  • 引擎级 Canvas/WebGL/AudioContext 一致性(非 JavaScript 桩)
  • 匹配真实 Chrome 会话的 TLS 指纹
  • 无 Runtime.enable 痕迹的 CDP 连接
  • 浏览器级 WebRTC 泄漏防护
  • 内置地理对齐的代理路由

指纹检测对象的完整解析,请参阅浏览器指纹详解:反检测系统使用的 20+ 个信号。


如何选择

正确的工具取决于什么在检测你。

检测类型 症状 解决方案
CDP 协议痕迹 页面加载后立即被拦截,无 CAPTCHA 补丁驱动(Rebrowser, Patchright)
浏览器指纹不匹配 每页都出现 CAPTCHA 或静默数据差异 补丁浏览器(Clawbrowser)
TLS 指纹不匹配 页面加载前被拦截(首次请求返回 403) 带代理路由的补丁浏览器
IP 信誉 数据中心 IP 被拦截 住宅代理(任何方案均可)
行为检测 5-10 页后被拦截 代码中的时序和会话管理

补丁驱动够用的场景

如果自动化的目标站点只有基本检测(检查 CDP 痕迹但不深入分析浏览器指纹),Rebrowser 或 Patchright 就够了。大量使用轻量反检测方案的站点属于这一类。

需要补丁浏览器的场景

如果站点使用 Cloudflare Bot Management、Akamai Bot Manager、DataDome 或 PerimeterX,就需要引擎级指纹一致性。当检测系统同时检查 20+ 个浏览器表面时,页面级和驱动级的补丁都不够用。

Clawbrowser 是一款本地运行的免费 Chromium 反检测浏览器,具备托管指纹、代理路由、原生 CDP 和内置 MCP 服务器。它处理浏览器身份和网络层,你的代码只需关注行为和会话管理。


从 stealth 插件迁移

如果你当前使用 puppeteer-extra-plugin-stealth 或 playwright-stealth,迁移到 Clawbrowser 只需不到五分钟。

Before(stealth 插件)

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({ headless: false });

After(Clawbrowser)

const puppeteer = require('puppeteer-core');

// Connect to Clawbrowser over CDP
const browser = await puppeteer.connect({
    browserWSEndpoint: 'ws://127.0.0.1:9222'

关键区别:从依赖中彻底移除 puppeteer-extra 和 puppeteer-extra-plugin-stealth。无需插件配置,无需选择规避模块。反检测发生在浏览器层,而不是你的代码中。

关于爬虫相关的模式(分页、会话预热、Cloudflare 绕过),请参阅不被检测的网页抓取方法。


FAQ

puppeteer-extra-stealth 完全没用了吗?

在没有商业反检测系统的站点上仍然有效。如果目标站点只检查 navigator.webdriver 和基本 JavaScript 属性,stealth 插件就够了。但使用 Cloudflare、Akamai、DataDome、PerimeterX 的站点或 Facebook、Instagram、LinkedIn、X 等社交媒体平台会检测到它。

playwright-stealth 也有同样的问题吗?

是的。playwright-stealth 使用相同的方法:通过页面级注入进行 JavaScript 覆写。它无法触及 TLS 指纹、CDP 痕迹或引擎级渲染。检测方面的局限性完全一样。

可以同时使用 Rebrowser 和 Clawbrowser 吗?

没有必要。Clawbrowser 同时处理协议层和指纹层。Rebrowser 补丁适用于使用原版 Chrome 且无法切换到反检测浏览器的场景。如果你已经在用 Clawbrowser,CDP 痕迹已经被处理了。

为什么 stealth 仍有每周 600K 的下载量?

惯性。大多数教程和 Stack Overflow 回答仍然推荐它。开发者在没有检查包是否仍在维护的情况下,复制粘贴了 2022 年有效的方案。高下载量不代表它对现代检测仍然有效。


别再打补丁了,从根源解决

stealth 插件在反检测依赖 JavaScript 级检查的时代是合理的方案。如今检测已转向 TLS 指纹、CDP 协议分析和引擎级渲染差异。页面级补丁无法触及这些信号。

安装 Clawbrowser 在浏览器层解决检测问题:从 clawbrowser.ai 复制安装提示粘贴到你的 AI agent 中。从依赖中移除 puppeteer-extra 和 puppeteer-extra-plugin-stealth。通过 CDP 连接你现有的 Puppeteer 或 Playwright 代码。反检测在浏览器中,不在你的代码里。

关于底层检测模型,请参阅浏览器自动化防封指南:四层防御体系。

Continue exploring

Ask AI how Clawbrowser helps

继续阅读

查看全部 →