37

我很好奇 reCAPTCHA v3 是如何工作的。特别是浏览器指纹识别。

当我通过 Selenium/chromedriver 启动 Chrome 实例并针对 reCAPTCHA 3 ( https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php ) 进行测试时,使用 Selenium/ 时我总是得到 0.1 分铬驱动程序。

在普通实例中使用隐身模式时,我得到 0.3。

我通过注入 JavaScript 和修改 web 驱动程序对象以及从源代码重新编译 webdriver 并修改$cdc_变量来击败其他检测系统。

我可以看到看起来像是一些模糊的POST返回到服务器,所以我将开始在那里挖掘。

它可能会寻找什么来确定我是否正在运行 Selenium/chromedriver?

4

2 回答 2

44

重新验证码

网站可以轻松检测网络流量并将您的程序识别为BOTGoogle已经发布了5(五)种 reCAPTCHA供您在创建新网站时选择。其中四个处于活动状态并且reCAPTCHA v1正在关闭。


reCAPTCHA 版本和类型

  • reCAPTCHA v3(使用分数验证请求):reCAPTCHA v3 允许您在没有任何用户交互的情况下验证交互是否合法。它是一个返回分数的纯 JavaScript API,使您能够在您的网站上下文中采取行动:例如,需要额外的身份验证因素、发送帖子进行审核或限制可能正在抓取内容的机器人。
  • reCAPTCHA v2 - “我不是机器人”复选框:“我不是机器人”复选框要求用户单击表示用户不是机器人的复选框。这将立即通过用户(没有验证码)或挑战他们以验证他们是否是人类。这是最简单的集成选项,只需要两行 HTML 来呈现复选框。

新验证码锚

  • reCAPTCHA v2 -不可见的 reCAPTCHA 徽章:不可见的 reCAPTCHA 徽章不需要用户单击复选框,而是在用户单击您网站上的现有按钮时直接调用,或者可以通过 JavaScript API 调用调用。当 reCAPTCHA 验证完成时,集成需要 JavaScript 回调。默认情况下,只会提示最可疑的流量来解决验证码。要更改此行为,请在高级设置下编辑您的站点安全首选项。

reCaptcha_invisible_badge

  • reCAPTCHA v2 - Android:reCAPTCHA Android 库是 Google Play 服务 SafetyNet API 的一部分。这个库提供了可以直接集成到应用程序中的原生 Android API。在调用 reCAPTCHA API 之前,您应该在您的应用中设置 Google Play 服务并连接到 GoogleApiClient。这将立即让用户通过(没有验证码提示)或挑战他们以验证他们是否是人类。
  • reCAPTCHA v1:reCAPTCHA v1 自 2018 年 3 月起已关闭。

解决方案

但是,有一些通用方法可以避免在网络抓取时被检测到:


奥特罗

一些值得思考的食物:

于 2019-04-03T19:24:23.750 回答
7

Selenium 和Puppeteer有一些与非自动化浏览器不同的浏览器配置。此外,由于一些 JavaScript 函数被注入到浏览器中来操作元素,因此您需要创建一些覆盖以避免检测。

有一些很好的文章解释了 Selenium 和 Puppeteer 在具有检测机制的站点上运行时检测的一些要点:

检测 Chrome 无头新技术- 您可以使用它为您的机器人编写防御性代码。

无法检测和阻止 Google Chrome 无头浏览器-它以清晰合理的方式解释了 JavaScript 代码可以检测到由自动化软件启动的浏览器与真实浏览器之间的差异,以及如何伪造它。

GitHub - headless-cat-n-mouse - 使用 Puppeteer + Python 避免检测的示例

于 2019-04-05T19:08:34.020 回答