这只是猜测,但基于谷歌提到他们使用的“风险分析引擎” (http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html)
我会认为它会观察您点击之前的行为方式、光标在前往复选框时的移动方式(有机轨迹/加速度)、点击哪个部分的复选框(随机位置或每次都是正中心)、浏览器指纹、Google cookies和内容、与您的指纹或账户相关联的点击位置历史记录等。
在这样一种连续学习模式检测引擎下,相当难以伪造“有机”的行为方式,使其欺骗该引擎。在不确定的情况下,它仍然会提示您匹配实际的CAPTCHA字符串。
一些亮点:
Google已经修复了cookie漏洞,并可能基于IP限制某些行为。
另一个有趣的发现是,Google在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年更新
Google推出了reCAPTCHA v3,看起来像是一个“预测人类得分引擎”,根据网站进行校准。它可以安装在网站不同页面上(就像Google Analytics脚本一样),帮助reCAPTCHA和网站所有者了解人类与机器人的行为模式,在填写reCAPTCHA之前。
Tab
和 Enter
键不一定每次都能显示图片验证码。大多数情况下,按下 Tab
和 Enter
是被接受的。 - Manish Ojha我的机器人已经成功通过了ReCaptcha测试。
这是我的解决方案:
让你的机器人执行以下步骤:
首先编写一个人工鼠标移动函数,以类似B样条曲线的方式移动鼠标(请向我索取源代码)。这是最重要的一个步骤。
为了获得更好的结果,还可以使用像https://www.purevpn.com这样的VPN。
对于每个ReCaptcha,请执行以下步骤:
如果使用VPN,请先切换IP
清除所有浏览器Cookie
清除所有浏览器缓存
随机设置以下其中一种Useragents:
a. Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
b. Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
5 使用人工鼠标移动函数将鼠标从一个随机点移动到“我不是机器人”图像中,每次都在不同的10x10随机范围内进行移动。
然后以随机延迟单击:
WM_LBUTTONDOWN
和
WM_LBUTTONUP
截取图片验证码的屏幕截图
将截图发送到
或
并让它们去解决验证码。
在接收到来自验证码解决程序的点击坐标之后,使用你的人工鼠标移动函数移动并单击ReCaptcha图像
使用你的人工鼠标移动函数移动并单击ReCaptcha验证按钮
由于这不是公开技术,所以我可以猜测一下。谷歌表示它是通过组合之前、期间和之后的信息来区分人类和机器人。但我更感兴趣的是最后一个复选框的点击。
假设POST数据(已解决的验证码)有一个名为指纹的字段,它是从用户行为计算出来的字符串。我认为可能还有一个关于该复选框位置的字段。我猜测此复选框位于由谷歌后端随机生成并由我的站点公钥加密的坐标系统中。因此,机器人可能会“猜测/计算”出有关此框的位置,但当站点所有者使用私钥进行GET查询以验证用户身份时,谷歌将解密坐标系统并确定用户是否在正确的位置单击。因此,在仅由谷歌和站点所有者拥有的随机坐标系统中,只有一个可能的正确点击位置(带有一些偏移量,它是一个正方形框)。
Canvas fingerprinting
实现无需使用cookie即可唯一识别用户/浏览器!