rebrowser/rebrowser-bot-detector

GitHub: rebrowser/rebrowser-bot-detector

一套现代化的浏览器自动化行为检测测试集,帮助开发者发现和修复 Puppeteer、Playwright 在反爬场景下的常见指纹泄漏问题。

Stars: 134 | Forks: 10

# 🕵️ 检测自动化浏览器行为的现代测试 这个仓库的目标是提供实际且相关的测试,你可以配合自动化软件使用这些测试,以在当今的网络世界中准确评估你的成功率。 许多人建立了包含各种检测机器人测试的页面。其中一些页面已经有 5 年以上的历史,针对的也是不再相关的技术。有些人认为开启 `puppeteer-extra-plugin-stealth` 的所有选项就足够了,但不幸的是,其中许多选项与当前的自动化状态并不真正相关,甚至可能损害你的指纹和成功率。 本仓库包含用于检测一些非常基础内容的测试,这些内容在任何网站上都非常容易实现。可以保证,所有主要的反机器人公司都在其产品中使用了这些测试。此外,每家公司都有自己专有的算法和思路来检测你的浏览器是否被自动化。但 90% 的情况下,当你被拦截或看到任何 CAPTCHA 时,仅仅是因为下面的这些测试。 如果你进行任何形式的浏览器自动化,你可能希望确保你的设置能通过这些测试。如果不能,那么你的自动化可能无法达到很高的成功率。 ⚠️ 建议在尝试寻找高质量代理、调整自动化行为以及对流程进行任何其他优化之前,先解决所有这些测试。**通过这些测试至关重要**。 ➡️ 你可以在这个页面上尝试所有测试:[https://bot-detector.rebrowser.net/](https://bot-detector.rebrowser.net/) *这些测试主要关注由 Puppeteer 和 Playwright 自动化的 Chromium,但也适用于测试其他自动化工具。* ## 如何通过所有测试? 只需按照页面上的提示操作即可。有些需要额外的设置,有些需要使用 [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches) 来修补你的 Puppeteer 或 Playwright。 ## 测试内容有哪些? 我们的目标是保持此列表处于最新状态。如果你想建议任何新测试或调整,请开启一个新的 issue。我们非常感谢任何反馈。 ### runtimeEnableLeak 默认情况下,Puppeteer、Playwright 和其他自动化工具依赖 `Runtime.enable` CDP 方法来处理执行上下文。任何网站只需几行代码就能检测到它。 你可以在这篇文章中了解更多信息:[如何修复 Puppeteer、Playwright 和其他自动化库的 Runtime.Enable CDP 检测?](https://rebrowser.net/blog/how-to-fix-runtime-enable-cdp-detection-of-puppeteer-playwright-and-other-automation-libraries-61740) 修复方法:使用 `rebrowser-patches` 禁用 `Runtime.enable`。 ### sourceUrlLeak Puppeteer 会自动为你通过它运行的每个脚本添加一个唯一的 source URL。可以通过分析错误堆栈来检测到它。 修复方法:使用 [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches) 来使用自定义的 source URL。 ### mainWorldExecution 你的目标网站可能会修改一些非常流行的函数,例如 `document.querySelector`,并跟踪你每次在脚本中使用此函数的情况。这非常危险,会迅速对你的浏览器亮起红灯。 修复方法:使用 [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches) 在隔离上下文而不是主上下文中运行所有脚本。 ### navigatorWebdriver 经典的 `navigator.webdriver`。这是 Chrome 用来表明此浏览器正由自动化软件运行的方式。 修复方法:只需在启动 Chrome 时使用 `--disable-blink-features=AutomationControlled` 开关。 ### bypassCsp 有时开发人员使用 `page.setBypassCSP(true)` 以便在某些特定的边缘情况下运行他们的脚本,以避开内容安全策略 (CSP) 的限制。这种行为在任何真实浏览器中都是不可接受的,因为它具有很高的安全风险。 修复方法:你需要以不需要调用此方法的方式更改代码;基本上,避免破坏 CSP。 ### viewport 当你运行 Puppeteer 时,默认情况下它使用 800x600 的视口。Playwright 使用 1280x720 作为默认值。 这非常明显且易于检测。没有任何普通用户使用普通浏览器会有这样的视口。 修复方法:使用 `defaultViewport: null` (Puppeteer) 和 `viewport: null` (Playwright)。 ### window.dummyFn 目的是测试你是否可以访问主世界对象。如果你应用了 [`rebrowser-patches`](https://github.com/rebrowser/rebrowser-patches),那么你就无法轻松访问主世界,因为你所有的 `page.evaluate()` 脚本都将在隔离世界中执行。为此,你需要使用一些特殊技术(请阅读 [如何在 Puppeteer 和 Playwright 中从隔离上下文访问主上下文对象](https://rebrowser.net/blog/how-to-access-main-context-objects-from-isolated-context-in-puppeteer-and-playwright-23741) 或查看 rebrowser-patches 仓库了解详情)。此测试将帮助你进行调试。 ### useragent Puppeteer 和 Playwright 开箱即用地使用 Google Chrome for Testing。这对任何反机器人系统来说都是一个危险信号。 ### pwInitScripts Playwright 默认情况下会将 `__pwInitScripts` 注入到每个页面的全局作用域中。 ### exposeFunctionLeak 在 Puppeteer 和 Playwright 中使用 `page.exposeFunction()` 将某些函数从 Node.js 传递到浏览器环境是非常普遍的。然而,这种方法在这两个库中都充满了泄漏。 ## 什么是 Rebrowser? 此软件包由 [Rebrowser](https://rebrowser.net) 赞助和维护。我们允许你在云端扩展你的浏览器自动化和网页抓取,拥有数百个独特的指纹。 我们的云浏览器具有很高的成功率,并附带不错的功能,例如,如果你的库在执行期间使用了 `Runtime.Enable` 或存在其他可改进的危险信号,我们会发出通知。立即 [创建帐户](https://rebrowser.net) 获取邀请,以测试我们最前沿的平台,并将你的自动化业务提升到一个新的水平。 ### 特别感谢 [kaliiiiiiiiii/brotector](https://github.com/kaliiiiiiiiii/brotector)
标签:Bot识别, Chromium, DevTools检测, JavaScript测试, Playwright, Puppeteer, rebrowser, RPA, Web自动化, 反爬虫, 子域名暴力破解, 数据可视化, 机器人检测, 浏览器指纹, 爬虫对抗, 特征检测, 绕过检测, 网络安全, 自动化检测, 自定义脚本, 自定义脚本, 隐私保护, 隐身模式, 验证码绕过