谷歌reCAPTCHA v2在幕后是如何工作的?

这篇文章涉及谷歌ReCaptcha v2(不是最新版本)

最近谷歌引入了一个简化的“验证码”验证系统(视频),使用户只需单击它就可以通过“验证码”。

但它如何通过点击来区分机器人和人呢?

根据这个答案,(假设有类似的实现),首先“recaptcha”生成一个隐藏的密钥并将其附加到一个隐藏的输入元素上,并惰性地呈现一个具有相同密钥的复选框(不是一个实际的复选框input,而是一个div),当单击该密钥时,将发送一个异步请求(XHR)到谷歌后端服务器,以将其标记为有效的验证密钥(即当表单提交时必须验证的密钥)。

但为什么机器人不能自动点击(至少,基于浏览器的机器人)?

这是如何工作的呢?

143110 次浏览

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

我会假设它会查看你在点击之前的行为,你的光标如何移动到检查(有机路径/加速),复选框的哪一部分被点击(随机位置,或每次都在中心),浏览器指纹,谷歌cookie &内容,点击与你的指纹或账户绑定的位置历史,如果它检测到一个等等。

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

请允许我提出我的猜测,因为这不是一个开放的技术。

谷歌说它是关于从之前,期间,之后的信息来区分人类和机器人。但我更感兴趣的是最后点击复选框。

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

一篇新的论文发布了针对reCAPTCHA的几个测试:

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

以下是一些最突出的结果:

  • 通过保持cookie活跃9天(通过浏览谷歌资源的网站),您可以通过仅单击复选框通过reCAPTCHA;
  • 没有基于每个IP的请求限制;
  • 浏览器的用户代理必须是真实的,谷歌对您的环境运行测试,以确保它与用户代理匹配;
  • 谷歌测试浏览器是否可以渲染Canvas;
  • 屏幕分辨率和鼠标事件不会影响结果;

谷歌已经修复了cookie漏洞,并可能限制了一些基于ip的行为。

另一个有趣的发现是谷歌用JavaScript运行VM,混淆了大部分reCAPTCHA代码和行为。该虚拟机被称为botguard,用于保护除reCAPTCHA之外的其他服务:

https://github.com/neuroradiology/InsideReCaptcha

更新2017

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

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

更新2018

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

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

我的机器人在ReCaptcha上运行良好。

这是我的解决方案。

让你的机器人这样做。

首先写一个人的鼠标移动函数移动你的鼠标像b样条(问我源代码)。这是最重要的一点。

也可以使用像https://www.purevpn.com这样的VPN来获得更好的结果

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

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

  2. 清除所有浏览器cookie

  3. 清除所有浏览器缓存

  4. 随机设置一个useragent:

    a. Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;三叉戟/ 5.0)

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

5移动你的鼠标与人类鼠标移动功能从一个随机点到I am not a Robot Image每次不同的10x10随机范围

  1. 然后单击ever,在两者之间随机延迟

    WM_LBUTTONDOWN

    而且

    WM_LBUTTONUP < / p >

  2. 从图片验证码截屏

  3. 发送截图到

    http://www.deathbycaptcha.com < a href = " http://www.deathbycaptcha.com " > < / >

    https://2captcha.com < / p >

让它们解出来。

  1. 从验证码求解器接收点击坐标后,使用您的人体鼠标移动功能来移动和单击验证码图像

  2. 使用人体鼠标移动功能移动并单击到“验证验证”按钮

在75%的尝试中,所有的Recaptcha将被解决

解围球谷歌

汤姆

请记住谷歌同时使用reCaptcha

Canvas fingerprinting

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