recaptcha 3如何知道我在使用硒/铬驱动程序?

2024-04-29 01:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

当在一个普通的实例中使用incognito时,我得到0.3。

我已经通过注入JS和修改web驱动程序对象、从源代码重新编译web driver和修改$cdc_u变量击败了其他检测系统。

我可以看到一些模糊的帖子返回到服务器,所以我要开始挖掘那里。

我只是想先看看是否有人愿意与我们分享一些建议或经验,来确定我是否在运行selenium/chromedriver?


Tags: 实例httpscomwebdemoselenium浏览器v3
2条回答

重述

网站可以轻松检测网络流量并将您的程序标识为机器人。Google已经发布了5(五)个reCAPTCHA,在创建新站点时可以从中进行选择。其中四个处于活动状态,而reCAPTCHA v1正在关闭。


概述版本和类型

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

newCaptchaAnchor

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

reCaptcha_invisible_badge

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

解决方案

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


奥特罗

一些值得思考的东西:

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

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

Detecting Chrome headless, new techniques-你可以用它在你的机器人上写一个防御代码

It is not possible to detect and block chrome headless-以清晰、合理的方式解释JS代码可以检测由自动化软件启动的浏览器与真实浏览器之间的差异,以及如何伪造它。

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

相关问题 更多 >