我不是机器人:谷歌最新版验证码系统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后,点击右上角账户名-“编辑配置文件” [常规]-“双重验证”,点“启用” 进入[激活双重验证]界面,点“启动激活 ...
随机推荐
- CRLF Injection漏洞的利用与实例分析
CRLF Injection很少遇见,这次被我逮住了.我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF ...
- Session 快速开始 通过session的attribute通信
[web.xml] <session-config> <session-timeout>30</session-timeout> <cookie-config ...
- Oracle 数据库监听配置和服务
-- 补充说明 如果要远程连接192.168.10.44上的oracle,那么192.168.10.44服务器必须启动TNSListener.(配置文件 listener.ora) PLSQL Dev ...
- Docker 随 docker服务重启
在创建时添加 重启 docker run --restart=always -d --name web -p : -v /data/web:/usr/local/tomcat/webapps tom ...
- rabbitMQ学习1:消息队列介绍与rabbitmq安装使用
1. 什么是消息队列 生活里的消息队列,如同邮局的邮箱, 如果没邮箱的话, 邮件必须找到邮件那个人,递给他,才玩完成,那这个任务会处理的很麻烦,很慢,效率很低 但是如果有了邮箱, 邮件直接丢给邮箱,用 ...
- 怎么从docker 内部去连接host 上的mysql
一般来说数据最好放在一个公共的地方,这样在多个docker 可以共享这些数据. 这篇文章就是讲怎么从docker 内部去连接host上的 mysql 数据库. 因为我的host 有public ip, ...
- 「SHOI2015」(LOJ2038)超能粒子炮・改
传送门:Here 一句话题意:给定$ t$次询问,每次读入$n,k,$求$ \sum_{i=0}^kC_n^k\ mod\ 2333$, 其中$ t \leq 100000$,$n,k \leq 10 ...
- 微信小程序入门八头像上传
1. action-sheet 底部弹出可选菜单组件 2. wx.uploadFile 将本地资源上传到服务器 3. wx.chooseImage 从本地相册选择图片或使用相机拍照. 4. wx.pr ...
- 第四节:tensorflow图的基本操作
基本使用 使用图(graph)来表示计算任务 激活会话(Session)执行图 使用张量(tensor)表示数据 定义变量(Variable) 使用feed可以任意赋值或者从中获取数据,通常与占位符一 ...
- Python换行符问题:\r\n还是\n?
今天写一个Python脚本去读取一个txt文件时,发现一个很有趣的现象: 如果这个文件是用atom编辑器写的,发现换行符是'\r'.这样一来去逐行读取数据就失效了,因为用open函数 去打开该文件re ...