Google reCAPTCHA v2如何在幕后工作?

eve*_*sto 296 captcha recaptcha

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

最近谷歌推出了一个简化的"验证码"验证系统(视频),使用户只需点击它即可通过"验证码".

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

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

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

这怎么可行?

Agm*_*her 194

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

我会假设它会查看您在点击之前的表现,光标如何移动到检查(有机路径/加速度),复选框的哪一部分被点击(随机位置,或每次都死在中心),浏览器指纹,Google Cookie和内容,如果检测到指纹或帐户,请点击与您的指纹或帐户关联的位置记录.

伪造"有机"行为是相当困难的,因为它会欺骗一个持续学习模式检测引擎.在不确定的情况下,它仍会提示您匹配实际的CAPTCHA字符串.

  • 这似乎是正确的,应该解释为什么我总是要用我的PSVita用棍棒键入一个字符串.它不像普通鼠标一样移动. (71认同)
  • 鼠标移动绝对没有贡献.将光标放在复选框所在的位置.无需移动光标即可导航到站点.单击复选框,它将通过. (15认同)
  • 请注意,您也可以选中它并按空格键. (12认同)
  • 我想知道谷歌将如何应对足够大量的记录有机行为. (3认同)
  • @Derek,我认为这不是任何证据.Cookie,IP和许多其他因素可能会让您在回归鼠标移动之前通过.我不想测试它,但如果你要从一个新IP开始新的计算机并且根本不使用鼠标,我愿意打赌它会失败. (2认同)
  • 值得注意的是,当我使用Tor时,reCaptcha总是仔细检查我. (2认同)

bar*_*olo 69

已发布一篇新文章,其中包含针对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会针对您的环境运行测试,以确保它与用户代理匹配;
  • 谷歌测试浏览器是否可以渲染画布;
  • 屏幕分辨率和鼠标事件不会影响结果;

谷歌已经修复了cookie漏洞,可能会限制一些基于IP的行为.

另一个有趣的发现是,谷歌在JavaScript中运行一个VM,它会混淆reCAPTCHA的大部分代码和行为.此VM称为botguard,用于保护除reCAPTCHA之外的其他服务:

https://github.com/neuroradiology/InsideReCaptcha

2017年更新

最近的一篇论文(从8月开始)发表在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

  • "鼠标事件不影响结果"这很有意思,因为我(我相信很多其他人)认为这是影响结果的主要因素.我想在移动而不是复选框上,用户被要求选择所有相似的图像,因为触摸屏上没有鼠标移动.但是,再次查看介绍性博客文章,似乎可能并非如此.也许选择图像不是输入扭曲的文本,而不是选中框.您(或任何人)是否知道reCAPTCHA是否允许简单地检查移动设备上的盒子? (4认同)
  • @mbomb007 鼠标事件可能会影响结果,但按“Tab”和“Enter”不会始终显示图像验证码。大多数时候按“Tab”和“Enter”是可以接受的 (2认同)

Ing*_*ngo 23

我的机器人对ReCaptcha运行良好.

我的解决方案.

让你的Bot做这个步骤:

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

也可以使用像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每次使用不同的10x10 Randomrange时,使用Human Mouse Move Funktion从RandomPoint移动鼠标到我不是机器人图像

  1. 然后点击之间随机延迟

    WM_LBUTTONDOWN

    WM_LBUTTONUP

  2. 从Image Captcha获取截图

  3. 发送屏幕截图

    http://www.deathbycaptcha.com

    要么

    https://2captcha.com

让他们解决

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

  2. 使用Human Mouse Move Funktion移动并单击Recaptcha Verify按钮

在75%的所有trys Recaptcha将解决

Chears谷歌

汤姆

  • 仅仅是我,或者对于其他任何人来说,机器人编写者正在使用Stack Overflow帮助解决(并辩论!)reCAPTCHAs,这是否令人不安和迷人? (10认同)
  • '人类鼠标移动'功能是最重要的一点.谷歌检测到验证码Mousespeed,MouseWay,MouseButton向下和向上事件,Clickpositions,Mouse EntryPoint到验证码,...并通过Javascript将这些信息发送到谷歌数据库与数百万真正的人类Mousemove追踪.在解释了所有这些捕获的信息之后,只有当谷歌算法说它是一个人类时,验证码才能解决问题. (7认同)
  • 第8步使用外部API,**人为你解决验证码.**机器人没有解决任何问题. (3认同)
  • 为什么需要"人体鼠标移动功能"?看起来没有必要实现你的目标. (2认同)
  • @barbolo:请查看官方Google博客https://security.googleblog.com/2014/12/are-you-robot-introducing-no-captcha.html - > Google说"要解决这个问题,去年我们开发了一个reCAPTCHA的高级风险分析后端,主动考虑用户在CAPTCHA之前,期间和之后的整个参与度,以确定该用户是否为人." (2认同)