最近,Google推出了一个简化的"captcha"验证系统(video),使用户只需单击即可传递"captcha" .
但是,如何通过点击将机器人与人区分开来呢?
根据this answer,(假设一个类似的实现),首先"recaptcha"生成一个隐藏的密钥并将其附加到一个隐藏的输入元素,并且懒惰地呈现一个复选框(不是一个实际的复选框 input
,而是一个 div
),具有相同的密钥,当单击,向Google后端服务器发送异步请求(XHR),将其标记为有效的验证密钥(即在提交表单时必须验证的密钥) .
但为什么机器人不能自动化点击(至少是基于浏览器的机器人)?
这怎么可行?
4 回答
这是猜测,但基于谷歌对他们使用的"risk analysis engine"的引用(http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html)
我会假设它会查看您在点击之前的表现,光标在检查过程中的移动方式(有机路径/加速度),复选框的哪一部分被点击(随机位置,或每次都死在中心位置),浏览器指纹,Google Cookie和内容,如果检测到指纹或帐户,请点击与您的指纹或帐户绑定的位置记录等 .
伪造“有机”行为是相当困难的,因为它会欺骗一个持续学习模式检测引擎 . 在不确定的情况下,它仍然会提示您匹配实际的CAPTCHA字符串 .
已经发布了一篇新文章,针对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;
屏幕分辨率和鼠标事件不会影响结果;
谷歌已经修复了cookie漏洞,可能会限制一些基于IP的行为 .
另一个interesting finding是谷歌在JavaScript中运行一个虚拟机,它会混淆reCAPTCHA代码和行为的大部分内容 . 此VM称为botguard,用于保护除reCAPTCHA之外的其他服务:
https://github.com/neuroradiology/InsideReCaptcha
UPDATE 2017
最近的一篇论文(从8月开始)在WOOT 2017上发表,在解决noCAPTCHA reCAPTCHA音频挑战方面达到了85%的准确率:
http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf
UPDATE 2018
谷歌正在推出reCAPTCHA v3,它看起来像是一个根据网站校准的“人类得分预测引擎” . 它可以安装到网站的不同页面(像Google Analytics脚本一样工作),以帮助reCAPTCHA和网站所有者在填写reCAPTCHA之前了解人类与机器人的行为 .
https://www.google.com/recaptcha/intro/v3beta.html
我的机器人对ReCaptcha运行良好 .
我的解决方案 .
让你的Bot做这个步骤:
首先编写一个人体鼠标移动功能,将鼠标像B样条一样移动(向我索取源代码) . 这是最重要的一点 .
也可以使用像https://www.purevpn.com这样的VPN更好的结果
对于每个Recpatcha,请执行以下步骤:
如果您首先使用VPN交换机IP
清除所有浏览器Cookie
清除所有浏览器缓存
通过随机设置其中一个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随机范围时,使用人类鼠标将移动鼠标从RandomPoint移动到我不是机器人图像
WM_LBUTTONDOWN
和
WM_LBUTTONUP
从Image Captcha获取截图
发送屏幕截图
http://www.deathbycaptcha.com
要么
https://2captcha.com
让他们解决
从captcha求解器接收到点击cooridinates后,使用你的Human Mouse移动Funktion移动并点击Recaptcha Images
使用Human Mouse Move Funktion移动并单击Recaptcha Verify按钮
在75%的所有trys Recaptcha将解决
Chears谷歌
汤姆
我可以提出我的猜测,因为这不是一种开放的技术 .
谷歌表示,这是为了将人与机器人区分开来之前,期间,之后的信息 . 但我对复选框上的最终点击更感兴趣 .
比方说,POST数据(解决CAPTCHA)有一个名为fingerprint的字段,一个根据用户行为计算的字符串 . 我认为可能存在关于该复选框位置的字段 . 我想这个复选框位于由Google后端随机生成的坐标系中,并由我网站的公钥加密 . 因此,机器人可以“猜测/计算”此框的位置,但当网站所有者使用私钥进行GET查询以验证用户身份时,Google将解密坐标系并说明用户是否点击了正确的位置 . 因此,只有一个可能的右键单击(有一些偏移,它是一个方框)这个位置随机坐标系统仅由Google和网站所有者拥有 .