我不是机器人:谷歌最新版验证码系统ReCaptcha破解已开源
选自 Github
作者:George Hughey
机器之心编译
每个人都讨厌验证码,这些恼人的图片中包含你必须输入的字符,我们只有正确地填写才能继续访问网站。验证码旨在确认访问者是人还是程序,并防止恶意程序的入侵。然而,随着深度学习和计算机视觉技术的发展,现在这些认证方法可以被我们轻松破解了。
在这一个项目中,作者破解了最新版的 ReCaptcha,并开源了所有代码。不过项目作者声明:「这份代码能够解决最新版的 ReCaptcha,但仅限于在自己网站上使用,且仅用于教育目的。」
reCAPTCHA 项目是由卡内基梅隆大学开始构建的系统,这个项目将从书本上扫描下来、无法被 OCR 准确识别的文字显示在 CAPTCHA 问题中,从而判断访问者到底是程序还是人类。自 2014 年以来,reCAPTCHA 改为在「我不是机器人」(I'm not a robot)的方框中打勾,进而完成判别。
这个名为 unCaptcha 的项目最早创建于 2017 年 4 月,并在当时实现了 85% 的 ReCaptcha 对抗率。不过后来谷歌发布了新版本的 ReCaptcha,且新版的 ReCaptcha 主要有以下两个主要改进:
更好的浏览器自动检测使用短语语音而不是数字
这些改进最开始成功地防御了第一版 unCaptcha 的攻击,然而到了 18 年 6 月份,这些挑战基本都已被解决。本项目的作者同样与 ReCaptcha 团队取得了联系,他们完全了解这次攻击。此外,ReCaptcha 团队还允许该项目作者发布 unCaptcha2 的代码,尽管它目前仍然能有效破解 ReCaptcha 验证码。
unCaptcha2 简介
由于 ReCaptcha 添加了语音形式的验证码识别,破解 ReCaptcha 比以前变得更加容易。因为我们只需要调用一个免费的语音识别 API,对所有验证码的识别准确率就能达到 90% 左右。另外由于 ReCaptcha 会阻止浏览器自动化引擎 Selenium,unCaptcha2 会使用屏幕点击器(clicker)移动到屏幕上特定的像素,从而像人一样浏览网页。当然在模拟人类浏览的过程中,每一个新用户的坐标都需要更新,这个目前并不是太鲁棒。
unCaptcha2 的方法非常简洁:
导航至谷歌的 ReCaptcha 演示网站导航至 ReCaptcha 的语音库下载语音使用语音识别 API 识别语音解析 API 返回的参数和识别结果提交识别结果,判断是否成功
如下所示 unCaptcha2 的测试界面:
如何使用 unCaptcha2
因为 unCaptcha2 必须指定屏幕上的特定坐标,因此我们必须基于设置更新坐标。这些坐标更新的代码写在了 run.py 文件的最上面。在 Linux 系统中,使用命令行 xdotool getmouselocation—shell 可以定位鼠标在屏幕上的坐标位置。
我们还需要配置到底使用哪一个语音识别 API,国内的 BAT、讯飞和搜狗等都提供高效的语音识别 API,而国外的谷歌、微软和 IBM 也一样。谷歌、微软和 IBM 的的 API 结构都已经在 queryAPI.py 中,我们只需要配置用户名和密码就行了。如果你要使用谷歌 API,我们需要使用谷歌应用的证书参数配置环境变量 GOOGLE_APPLICATION_CREDENTIAL。
最后,安装剩下的依赖项就能愉快地破解了:pip install -r dependencies.txt。
阅读更多
我不是机器人:谷歌最新版验证码系统ReCaptcha破解已开源的更多相关文章
- 关于表单重复提交之验证码 和谷歌Kaptcha图片验证码的使用
表单重复提交之-----验证码 表单重复提交有三种常见的情况: 一:提交完表单.服务器使用请求转来进行页面跳转.这个时候,用户按下功能键 F5,就会发起最后一次的请求. 造成表单重复提交问题.解决方法 ...
- linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更
新版linux系统设备架构中关于电源管理方式的变更 based on linux-2.6.32 一.设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct d ...
- 谷歌Chrome浏览器提示adobe flash player已过期完美解决办法
最近使用谷歌Chrome浏览器提示adobe flash player已过期,浏览网页时一些flash元素的东西都无法正常显示,在网上尝试寻找很多方法,都不能解决,最后,经测试有效方法如下:一:下载最 ...
- 15 分钟用 ML 破解一个验证码系统
人人都恨验证码——那些恼人的图片,显示着你在登陆某网站前得输入的文本.设计验证码的目的是,通过验证你是真实的人来避免电脑自动填充表格.但是随着深度学习和计算机视觉的兴起,现在验证码常常易被攻破. 我拜 ...
- 新版raspbian系统的固定IP配置和启用root账户的ssh登录功能的方法
1. 2016新版raspbian系统的固定IP配置: 自2016年2月份新版raspbian系统发布以后,树莓派的固定IP配置方法就与之前不一样了. 之前在raspbian系统中编辑/etc/net ...
- Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统
一.写在前面 现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码.需要拖动滑块的滑动验 ...
- 如何下载官网最新版 win10 系统?
如何下载官网最新版 win10 系统?步骤: 一. 下载 遨游浏览器 将UA切换成,手机访问:推荐 UC浏览器,UA设置: Mozilla/5.0 (Linux; U; Android 8.0.0; ...
- C#联通新版验证码识别的实现
以前写了篇 联通充值卡自动充值的实现,最近发现联通官网改版了,随便看了下发现新版的验证码和以前的不同,发了点时间研究了下他的识别码,它现在的验证码如下 现在将识别步骤说下 1,转换灰度图片 2,清除2 ...
- TeamViewer如何绑定谷歌二次验证码/谷歌身份验证?
1.下载TeamViewer,找到谷歌二次验证界面 下载.注册TeamViewer后,点击右上角账户名-“编辑配置文件” [常规]-“双重验证”,点“启用” 进入[激活双重验证]界面,点“启动激活 ...
随机推荐
- iOS拍照图片旋转的问题
很久之前,遇到了这种情况,iOS某端拍照上传到服务器,其他iOS端从服务器下载该照片展示,发现图片逆时针旋转了90度.当时百度了一下,找到一段代码修正image方向,问题解决了,但没有深入理解底层原理 ...
- Mysql 的远程设置 和链接方式
Mysql 设置远程链接: > grant all privileges on *.* to 用户@localhost identified by '密码'; > flush privil ...
- cpp函数回调
typedef void (PM::*E)(int c); typedef void (*EE)(); //typedef void *EE() = typedef void* EE(); 所以要加( ...
- luogu P3236 [HNOI2014]画框
传送门 我们把一种方案的\(\sum a_{i,j}\)和\(\sum b_{i,j}\)看成点\((\sum a_{i,j},\sum b_{i,j})\),那么就只要求横纵坐标之积最小的点,类似于 ...
- JNDI学习总结——Tomcat下使用C3P0配置JNDI数据源
一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar
- jquery正则表达式
参考链接: http://www.bkjia.com/Javascript/1084651.html
- 使用Docker部署javaWeb应用
1. 安装Dcoker http://www.cnblogs.com/zhangqian27/p/9089815.html 2. 查看镜像 $ docker images 3. 搜索镜像 $ dock ...
- Axure8破解码
升级了 8.0.0.3321 版本后,原来的 license 失效了,解决方法就是使用下面的这组注册码 License:米 业成 (STUDENT)Key:nFmqBBvEqdvbiUjy8NZiyW ...
- Core Mvc传值Query、Form、Cookies、Session、TempData、Cache
1.传值方法 使用Request的方法(1-3): 1)Query:获取链接?后面的值 如:http://localhost:55842/Home/About?name=kxy public IAct ...
- 【NLP CS224N笔记】Lecture 1 - Introduction of NLP
I. 什么是NLP NLP全称是Natural Language Processing,即自然语言处理,这是一门计算机科学.人工智能以及语言学的交叉学科. NLP涉及的几个层次由下图所示.可以看到输入 ...