Google reCAPTCHA v2如何在幕后工作?

时间:2014-12-04 04:19:41

标签: captcha recaptcha

这篇文章指的是Google ReCaptcha v2(不是最新版本)

最近谷歌推出了简化的#34;验证码"验证系统(video),使用户能够通过"验证码"只需单击即可。

但是,如何通过点击将机器人与人区分开来?

根据this answer,(假设类似的实施方式),首先" recaptcha"生成一个隐藏的密钥并将其附加到一个隐藏的输入元素,并且懒惰地呈现一个复选框(不是实际的复选框input,而是div),具有相同的密钥,单击该密钥时会发送异步请求(XHR)到Google后端服务器,将其标记为有效的验证密钥(即在提交表单时必须验证的密钥)。

但为什么机器人无法自动点击(至少是基于浏览器的机器人)?

这怎么可能有用?

5 个答案:

答案 0 :(得分:190)

这是猜测,但基于Google对“风险分析引擎”的引用(http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html

我会假设它会看到你在点击之前的表现,你的光标如何移动到检查(有机路径/加速度),复选框的哪一部分被点击(随机位置,或每次死在中心) ),浏览器指纹,谷歌cookies&内容,点击与您的指纹或帐户绑定的位置记录,如果它检测到等等。

以这样的方式伪造“有机”行为相当困难,以至于它会欺骗不断学习模式检测引擎。在不确定的情况下,它仍会提示您匹配实际的CAPTCHA字符串。

答案 1 :(得分:67)

已经发布了一篇新论文,其中有几项针对reCAPTCHA的测试:

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

一些亮点:

  • 通过将Cookie保持活动状态+9天(通过使用Google资源浏览网站),您只需点击复选框即可传递reCAPTCHA;
  • 根据每个IP的请求没有限制;
  • 浏览器的用户代理必须是真实的,Google会针对您的环境运行测试,以确保它与用户代理匹配;
  • Google测试浏览器是否可以渲染Canvas;
  • 屏幕分辨率和鼠标事件不会影响结果;

Google已经修复了Cookie漏洞,可能会限制某些基于IP的行为。

另一个interesting finding是Google在JavaScript中运行虚拟机,该虚拟机会混淆reCAPTCHA代码和行为的大部分内容。此VM称为botguard,用于保护除reCAPTCHA之外的其他服务:

https://github.com/neuroradiology/InsideReCaptcha

2017年更新

最近的一篇论文(来自八月)在WOOT 2017上发表,在解决noCAPTCHA reCAPTCHA音频挑战方面达到了85%的准确率:

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

更新2018年

谷歌正在推出reCAPTCHA v3,它看起来像是一个根据网站校准的“人类得分预测引擎”。它可以安装到网站的不同页面(像Google Analytics脚本一样工作),以帮助reCAPTCHA和网站所有者在填写reCAPTCHA之前了解人类与机器人的行为。

https://www.google.com/recaptcha/intro/v3beta.html

答案 2 :(得分:20)

My Bots在ReCaptcha上运行良好。

这是我的解决方案。

让你的Bot做这个步骤:

首先编写一个人体鼠标移动功能,将鼠标像B样条一样移动(向我索取源代码)。这是最重要的一点。

还可以使用像https://www.purevpn.com

这样的VPN获得更好的结果

对于每个Recpatcha执行以下步骤:

  1. 如果您首先使用VPN交换机IP

  2. 清除所有浏览器Cookie

  3. 清除所有浏览器缓存

  4. 通过随机设置其中一个Useragent:

    一个。 Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; Trident / 5.0)

    湾Mozilla / 5.0(Windows NT 6.1; WOW64; rv:44.0)Gecko / 20100101 Firefox / 44.0

  5. 5每次使用不同的10x10随机范围时,使用人类鼠标移动鼠标将移动Funktion从RandomPoint移动到我不是机器人图像

    1. 然后点击

      之间的随机延迟

      WM_LBUTTONDOWN

      WM_LBUTTONUP

    2. 从Image Captcha

    3. 获取截图
    4. 发送屏幕截图

      http://www.deathbycaptcha.com

      https://2captcha.com

    5. 让他们解决。

      1. 从captcha求解器接收到点击cooridinates后,使用您的Human Mouse移动Funktion移动并单击Recaptcha Images

      2. 使用您的Human Mouse Move Funktion移动并点击Recaptcha验证按钮

      3. 75%的所有trys Recaptcha都将解决

        Chears Google

        汤姆

答案 3 :(得分:3)

我可以提出我的猜测,因为这不是一种开放的技术。

谷歌表示,这是为了将人与机器人区分开来之前,期间,之后的信息。但我对复选框上的最终点击更感兴趣。

比方说,POST数据(已解决的CAPTCHA)有一个名为fingerprint的字段,一个根据用户行为计算的字符串。我认为可能存在关于该复选框位置的字段。我想这个复选框位于Google后端随机生成的坐标系中,并由我网站的公钥加密。因此,机器人可以“猜测/计算”此框的位置,但当网站所有者使用私钥进行GET查询以验证用户身份时,Google将解密坐标系并说明用户是否点击了正确的位置。因此,只有一个可能的右键单击(有一些偏移,它是一个方框)位于此随机坐标系统中,仅由Google和网站所有者拥有。

答案 4 :(得分:0)

请记住,Google还将reCaptcha与

一起使用
Canvas fingerprinting 

唯一识别没有Cookie的用户/浏览器!