# slide_captcha_cracker
![](https://github.com/chxj1992/slide_captcha_cracker/raw/master/screenshot.png)
[在线Demo](http://slide-captcha.chxj.name/)
### 简介
本项目是一个通过简单图片边缘检测算法来定位滑动验证码拼图在背景图中位置的一个例子。
代码主要采用`opencv`提供的一些函数对图片进行处理并实现定位,在这里只是提供一个思路,抛砖引玉。
### 关于滑动验证码
演示项目所用到的滑动验证码的实现相对简单,整个交互过程主要包含以下步骤:
* 服务端将背景图片和拼图图片合并为一张图片,并记录下拼图在背景图中的`x坐标`,然后将拼好图片和单独的拼图图片返回给客户端
* 客户端实现单片拼图在背景图上拖动的动画效果,并在用户完成拖动动作后,将当前拼图所处位置的坐标数据加密后返回给服务端
* 服务端解密数据并比较客户端返回的`x坐标`数据并与之前保存的`x坐标`数据进行比较,允许小范围内的误差
### 实现原理
基于以上的验证码实现,本例子通过以下方式实现对验证码拼图在背景图中的定位(其他步骤较为简单,不做考虑):
* 利用`opencv`库中提供的边界查找函数(cv2.findContours)提取单片拼图边缘轨迹并构造成一个二维矩阵(算子)
* 利用 `高斯模糊算子`(cv2.GaussianBlur)和 `Canny边缘检测算子`(cv2.Canny)对背景图进行处理,凸显出拼图在图片中的边缘
* 用拼图轨迹算子在处理后的背景图上进行 `互相关操作`,所得最大(小)值的位置就是拼图在背景图中的坐标
### 其他
拼图的定位只是破解滑动验证码的一个中间环节,想要破解一个好的验证码产品除了定位拼图在整个图片中的位置外,可能还有以下几个问题需要考虑:
* 从服务端获取的背景图可能是经过加密的(需要阅读js源码获得恢复图片的算法)
* 返回给服务端的参数一般是经过加密处理的(需要阅读js源码理解算法)
* 服务端可能会对用户滑动行为的移动轨迹对用户进行校验(可以尝试通过selenium等工具模拟拖动行为,或者积累真实的拖动数据后学习规律并通过js源码获得构造数据的算法)
梦回阑珊
- 粉丝: 5503
- 资源: 1707
最新资源
- 焊接件旋转弯曲疲劳极限性能研究.pdf
- 焊接接头残余应力数值模拟.pdf
- 焊接接头的抗动载断裂特性 - .pdf
- 焊接接头强度匹配和焊缝韧性指标综述.pdf
- 焊接接头疲劳行为研究.pdf
- 焊接接头设计(1999第三版).pdf
- 焊接接头型式和焊缝符号.pdf
- 机械设计吹气式桌面双工位螺丝机sw18可编辑全套设计资料100%好用.zip
- 焊接接头中的裂纹对风险检验结果的影响.pdf
- 焊接结构 田锡唐.pdf
- 焊接结构焊缝中缺陷参数不确定性处理方法.PDF
- 焊接结构耐候钢新旧标准牌号对照表.pdf
- 焊接结构件焊接变形的控制.pdf
- 焊接结构强度和断裂.pdf
- 焊接结构设计手册.pdf
- 焊接结构纵梁检测校正装置开发.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈