极验验证的滑动验证码破解

简介:

题记——毛主席教导我们一切帝国主义都是纸老虎

极验验证(http://www.geetest.com)是目前比较前沿新颖的一种验证方式,相比传统的字符型验证码更加人性化,用户验证的时间更短,更具交互性,同时也减少了网站的用户流失。该网站号称“超过200种人机行为特征检测,全面监控可疑机器攻击,快到每30分钟全网特征动态更新,迅速应对突发情况,多达5层异构安全模型滤网 ,360度保护网站安全”。博主最近在写爬虫时目标网站用的就是极验验证的验证,顺带着就破解了一下(就是这么霸气,哈哈)


我们先看一下极验验证是什么。极验验证的验证方式是给你一幅图,随机扣掉一块,让用户滑动滑块把图拼上,就能验证通过。

如图所示

开始时会给你一张原始图片


当鼠标点住滑块时,会出现拼图


\

用户把滑块拖到拼图缺失位置时,验证就会通过(图配错了,不过没关系,意思大家都懂 ^_^ )



第一步:模拟浏览器

这里我用的是selenium+phantomjs的组合,这两个组件估计搞测试的童鞋们应该不会陌生吧,selenium是是一个自动化测试工具,我用它来实现鼠标的操作,phantomjs可以理解为一个无界面浏览器。在写破解程序之前,先把该写的都写了,该伪装的都伪装了,让对面服务器认为这就是一个普通的用户,这一点有过爬虫经验的童鞋都了解,就不再多说了。同时selenium的鼠标操作也不说了,直接挑干的说,进入下一步。


第二步:找到拼图的位置

首先先通过selenium+phantomjs的截图的功能获得原始图片


再将鼠标点击住滑块(clickandhold),等待几秒,截图获得拼图的图片


我是通过比较像素点的方法找到缺失位置的的,当像素点差异过了一定范围,这时在比较该点附近的一些点来比较,确定是不是拼图的边界。附近的比较点有很大的说道,网上一些人说的横向比较(x轴)和竖向比较(y轴)考虑的都不太全面,要考虑拼图上的凸起和凹陷的情况

为什么不能直接通过差异来确定拼图缺失块边界呢。原因是对比的两张图是截图得来的,或多或少会有一些差异,保不齐就有一两个点被程序认为是目标位置的边界。同时也有可能对拼图的阴影位置误判。



第三步:滑动轨迹

前面几步我们知道了滑块应该滑到的位置,当我们让程序滑动时会出现下图的情况


如图所示,我们将滑块滑到了正确的位置,却提示拼图让小怪物吃了,其实是被怀疑是机器人了。应该是人机特征不通过吧。没办法,机器学习的问题就用机器学习的方式来办吧。先到官网的产品体验模块,收集了自己的滑动数据三十组(博主当时比较没底,毕竟号称200多种人机交互特征,再加上比较懒,就没收集太多),之后用数据做了个线性回归,没想到竟然过了。


(鉴于不断有人私信问回归怎么做的,博主在这说一下思路。2017.2.21)

回归算法的缺点大家都知道,是需要严格的假设的,我做这个之前先抽取几组数据做 时间-位移的折线图,发现速度轨迹其实是先快,接近目标点后开始慢的。之后博主取个巧把函数近似看成两个一元一次函数的组合,分别作回归。至于怎么分的函数,很简单,对每组数据点的 速度 做一个聚类。



后记:网上有人说要用神经网络,其实没那么邪乎,并不是什么都要往深度学习上靠,有时简单经典的算法更加实用。本文写的不是特别详细,一些关键之处都是一带而过。因为极验验证是一个非常好的产品,它把用户从无聊糟糕的字符验证码中解脱出来,创造一件精美的瓷器可能需要长年累月的时间,而摧毁它只在松手的一刹那。希望极验验证越办越好。










本文转自 yntmdr 51CTO博客,原文链接:http://blog.51cto.com/yntmdr/1905937,如需转载请自行联系原作者
目录
相关文章
|
数据采集 前端开发 开发者
滑动拼图验证码的原理和破解方法~
滑动拼图验证码的原理和破解方法~
2152 0
滑动拼图验证码的原理和破解方法~
|
8月前
|
安全 开发工具 Python
滑动拼图验证,摆脱烦人的验证码输入
你最近是否遇到过令人头疼的验证码?为何不让滑动拼图成为你的新选择呢?通过完成一个有趣的滑动拼图来验证你的身份,既能锻炼大脑,又能保护你的隐私。
滑动拼图验证,摆脱烦人的验证码输入
|
8月前
|
JavaScript 前端开发
记录2分钟破解知识星球验证弹窗
先声明我是这个网站的会员我可以进去
782 0
|
安全 开发工具
KgCaptcha 行为验证码安全策略设置
在验证码项目中,都会遇到验证码被恶意大量高频的调用,给服务造成很多无效的注册或登录,占用大量的系统资源。
KgCaptcha 行为验证码安全策略设置
|
安全 网络安全 UED
要想破解验证码,就得从了解开始!
最近在研究验证码安全,本文就来介绍四种流行的验证码(滑动拼图、文字点选、语序点选、空间推理),写这篇文章的出发点并非是想绕过或破解验证码,而是根据自身业务情况来选择对应的验证码类型。
要想破解验证码,就得从了解开始!
|
JavaScript API 数据安全/隐私保护
数美滑块验证码分析
本文以官网的滑块验证码为例,分析验证过程,完成模拟验证。
1272 0
数美滑块验证码分析
|
数据采集 小程序 Python
论如何破解腾讯滑块验证码
论如何破解腾讯滑块验证码
1925 0
|
JavaScript Java
实现登录时进行校验验证码的功能
JavaEE中,实现登录时进行校验验证码的功能(图文并茂!!!)
实现登录时进行校验验证码的功能
|
数据采集 文字识别
文字点选验证码的破解方法~
大家好,我是志斌~ 志斌之前一直在写反爬虫系列的文章,但是因为自身水平有限,所以一直没更验证码反爬虫之文字点选验证码反爬虫的解决方式,这次专门为大家找了一个大佬——张老师,来跟大家分享一下他解决文字点选验证码的方法~
1381 0