最近可能是和验证码杠上了 ...
项目地址: https://github.com/chxj1992/slide_captcha_cracker
Demo: http://slide-captcha.chxj.name
相比之前利用神经网络训练来破解普通验证码,这个可能更具通用性,因为不用依赖训练数据。
滑动验证码拼图的定位问题只是破解过程中的一个环节,代码主要采用 opencv 提供的一些函数对图片进行处理后来实现定位,在这里只是提供一个思路,抛砖引玉。
演示项目所用到的滑动验证码的实现相对简单,整个交互过程主要包含以下步骤:
x 坐标
,然后将拼好图片和单独的拼图图片返回给客户端x 坐标
数据并与之前保存的x 坐标
数据进行比较,允许小范围内的误差基于以上的验证码实现,本例子通过以下方式实现对验证码拼图在背景图中的定位(其他步骤较为简单,不做考虑):
opencv
库中提供的边界查找函数(cv2.findContours)提取单片拼图边缘轨迹并构造成一个二维矩阵(算子)高斯模糊算子
( cv2.GaussianBlur )和 Canny 边缘检测算子
( cv2.Canny )对背景图进行处理,凸显出拼图在图片中的边缘互相关操作
,所得最大(小)值的位置就是拼图在背景图中的坐标拼图的定位只是破解滑动验证码的一个中间环节,想要破解一个好的验证码产品除了定位拼图在整个图片中的位置外,可能还有以下几个问题需要考虑:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.