目前很多网站和APP都用上了滑块验证码,相对传统的字符型验证码,破解难度更大。
网上能找到的破解方案基本上是通过2张图(一张滑块图,一张底图)进行模版匹配。这种方法不能说不好,网站应用可以方便拿到2张图,但是APP应用就不太方便了。
下面介绍一种只用一张截图就可以破解滑块验证码的方案。
方案的优点:
- 只需要一张截图;
- 只需要使用opencv;
- 同时支持网站和APP破解;
方案的缺点:
- 只针对于上边缘或者下边缘是直线的滑块验证码有效;
- 需要做屏幕截图和坐标转换;
方案介绍:
1. 处理流程:
-
屏幕截图,获取到滑块验证码的核心区域;
基本上验证码显示的位置都是固定的,所以这个步骤比较简单,获取到的滑块验证码核心区域如下图所示:
-
转换成灰度图,结果如下图所示:
-
进行 Canny 边缘检测,结果如下图所示:
-
进行 Hough 直线检测,结果如下图所示:
-
获取2个滑块上边缘或者滑块下边缘直线以后,再遍历上一步的边缘检测结果(只需要遍历最多3行的数据),就可以找到两个滑块的具体坐标,结果如下图所示:
- 找到滑块坐标就好办了,根据截图方式以及是否有缩放,把坐标转换成实际屏幕坐标,然后通过操作鼠标点击,模拟人类移动滑块即可(这部分网上有很多介绍,可通用)。
2. 代码实现:
稍后放出,敬请期待!