recaptcha 3如何知道我正在使用selenium / chromedriver?

问题描述 投票:1回答:2

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

当我通过selenium / chromedriver启动一个chrome实例并对ReCaptcha 3(https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php)进行测试时,使用selenium / chromedriver时我的得分总是为0.1。

当使用普通实例隐身时,我得到0.3。

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

我可以看到什么看起来像一些混淆的POST回到服务器所以我将开始挖掘那里。

我只是想检查是否有人愿意分享任何建议或经验,首先要了解它可能正在寻找什么来确定我是否正在运行selenium / chromedriver?

selenium web-scraping selenium-chromedriver recaptcha recaptcha-v3
2个回答
2
投票

验证码

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


reCAPTCHA版本和类型

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

newCaptchaAnchor

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

reCaptcha_invisible_badge

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

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


其他

一些值得思考的东西:


2
投票

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

有一些很好的文章解释了有关Selenium和Puppeteer检测的一些观点,它在具有检测机制的网站上运行:

Detecting Chrome headless, new techniques - 您可以使用它在机器人上编写防御性代码

It is not possible to detect and block chrome headless - 以清晰和完善的方式解释JS代码可以在自动化软件和真实软件推出的浏览器之间检测到的差异,以及如何伪造它。

Github - headless-cat-n-mouse - 使用puppeteer + python避免检测的示例

© www.soinside.com 2019 - 2024. All rights reserved.