新的Google reCAPTCHA如何工作?
最近Google推出了一个简化的“validation码”validation系统( video ),使用户只需点击即可通过“validation码”。
但是,如何通过点击来区分bot和bot呢?
根据这个答案 ,(假设类似的实现),首先“recaptcha”产生一个隐藏的键并将其附加到一个隐藏的input元素,也懒惰地呈现一个checkbox(不是一个实际的checkboxinput
但一个div
)当被点击时,向Google后端服务器发送asynchronous请求(XHR),以将其标记为有效的validation密钥(即,在提交表单时必须validation的密钥)。
但为什么不能自动化点击(至less,基于浏览器的机器人)?
这可能如何工作?
这是猜测,但基于Google引用他们使用的“风险分析引擎”( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )
我会假设它看着你点击之前的行为,你的光标如何移动到检查(有机path/加速度),checkbox的哪一部分被点击(随机的地方,或每次死在中心),浏览器指纹,谷歌cookies和内容,点击与指纹或账户绑定的位置logging,如果它检测到一个等。
伪造“有机”行为是相当困难的,以至于会愚弄一个不断学习的模式检测引擎。 在不确定的情况下,它仍然会提示你匹配一个实际的CAPTCHAstring。
一个新的论文已经发布了几个针对reCAPTCHA的testing:
docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf
一些亮点:
- 通过使cookie保持活跃状态9天(通过使用Google资源浏览网站),您只需单击checkbox即可传递reCAPTCHA;
- 根据每个IP的请求没有限制;
- 浏览器的用户代理必须是真实的,Google会针对您的环境运行testing以确保它与用户代理相匹配;
- Googletesting浏览器是否可以渲染Canvas;
- 屏幕分辨率和鼠标事件不会影响结果;
Google已经修复了这个漏洞,可能会限制一些基于IP的行为。
另一个有趣的发现是,Google在JavaScript中运行一个虚拟机,混淆了许多reCAPTCHA代码和行为。 这个VM被称为botguard,用于保护除了reCAPTCHA以外的其他服务:
https://github.com/neuroradiology/InsideReCaptcha
更新2017年
最近的一篇论文(从八月份)发表在WOOT 2017上,在解决noCAPTCHA reCAPTCHAaudio挑战方面达到了85%的准确率:
我的机器人对ReCaptcha运行良好。
这里我的解决scheme
让你的机器人做这个步骤:
首先编写一个人类鼠标移动function,像B样条一样移动鼠标(向我索要源代码)。 这是最重要的一点。
也可以使用更好的结果像https://www.purevpn.com一样的VPN
对于每个Recpatcha,请执行以下步骤:
-
如果您先使用VPN交换机IP
-
清除所有浏览器Cookie
-
清除所有浏览器caching
-
通过随机设置这些Useragents中的一个:
一个。 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用鼠标移动你的鼠标从RandomPoint移动function到我不是一个机器人图像每次不同10×10 Randomrange
-
然后点击之间的随机延迟
WM_LBUTTONDOWN
和
WM_LBUTTONUP
-
从图片validation码截图
-
将截图发送到
要么
让他们解决。
-
在从validation码解算器接收到同步点击之后,使用鼠标移动function移动并单击回收图像
-
使用您的人类鼠标移动function移动并单击回收validationbutton
在75%的所有trys Recaptcha将解决
Chears Google
汤姆
我怀疑这是浏览器的历史。 我会说这是鼠标移动,滚动,时间间隔,击键和类似的东西。 机器人在模仿你的行为方面依然很不好。
虽然确切的技术不会只是交给公众 – 这将是愚蠢的 – 有迹象表明,它依赖于跟踪用户的行为之前和之后的正确答案(是的,这是一口)挑战。
http://codesupport.info/new-google-recaptcha-free-anti-abuse-service-say-im-robot-just-click/
我可以提出我的猜测,因为这不是一个开放的技术。
谷歌说,它是关于从之前,之中,之后来区分人与机器人的信息。 但是我对最后点击checkbox更感兴趣。
说,POST数据(解决了CAPTCHA)有一个字段叫指纹,一个string从用户行为计算。 我想可能有关于该checkbox位置的字段。 我猜这个checkbox是在谷歌后端随机生成的坐标系中,并且由我的网站的公钥encryption。 所以,一个机器人可能会“猜测/计算”一个关于这个盒子的位置,但是当网站所有者用私钥对GET查询进行validation时,Google将会解密坐标系并且说出用户是否在正确的位置点击。 因此,只有一个可能的右键点击(有一些偏移,这是一个方形框)位置在这个随机的坐标系统只有谷歌和网站所有者拥有。