掌桥专利:专业的专利平台
掌桥专利
首页

基于模板匹配的滑动拼图式验证码自动识别方法及系统

文献发布时间:2023-06-19 19:28:50


基于模板匹配的滑动拼图式验证码自动识别方法及系统

技术领域

本发明属于互联网技术技术领域,具体涉及一种基于模板匹配的滑动拼图式验证码自动识别方法及系统。

背景技术

滑动拼图式验证码作为新一代交互式验证码,安全级别高,用户体验好,已经成为一种主流的验证方式,广泛应用于网络爬虫对验证码的暴力破解以及自动测试等方面。

“一种基于滑动验证的验证码识别输入方法及系统”中,通过selenium+phantomjs的截图的功能获取原始完整图片,并自动识别并控制鼠标光标点中滑块,等待设置时间阈值后,截图获取含有滑块图片和缺口背景图片,通过两者的比较,获取到鼠标要位移的距离。该方法适用于起始状态并不显示拼图和缺口,单击滑块一定时间后会出现拼图和缺口的场景。

“一种滑块验证码的滑块缺口定位及拖动轨迹生成方法”中,基于深度学习的目标检测模型,根据滑块缺口背景图片计算滑块缺口中心位置坐标,并标注矩形标注框,进行有监督的目标检测模型训练。该方法需要大量的人工标注成本。

发明内容

针对现有技术中存在的问题,本发明的目的在于提供一种基于模板匹配的滑块验证码自动识别方法及系统。

本文所述滑块验证码自动识别方法,其步骤包括:

1)通过配置网页浏览器启动选项、加载Selenium框架等进行数据获取;

2)通过滑块识别算法,定位滑块图;

3)通过滑块缺口识别算法定位缺口区域;

4)通过模板匹配,获取滑块缺口坐标定位;

5)模拟人工操作,生成滑动轨迹。

其中,

1、数据获取

主要包括一个符合缺口的拼图(以下简称滑块图片)和一个包含滑块缺口背景图片获取。

2、滑块识别定位

主要包括定位滑块图片高度及获取滑块图片的长、宽。

3、滑块缺口区域识别

根据滑块长、宽及所在的起始高度,划定滑块缺口可能出现的区域。

4、滑块缺口坐标定位

结合模板匹配算法以及大数据中心积累的历史图片精准定位缺口位置,即滑块缺口在背景图片中的坐标。

5、滑动轨迹生成

使用PyAutoGUI模拟人操作滑块,通过鼠标事件控制鼠标点击、拖拽、释放滑块到缺口位置,实现轨迹生成。

一种基于模板匹配的滑块验证码自动识别系统,其特征在于,包括数据获取模块、滑块图提取模块、滑块缺口区域定位模块、滑块缺口坐标定位模块和轨迹生成模块;

所述数据获取模块,用于获取目标页面中的滑块图片和包含滑块缺口的背景图片;

所述滑块提取模块,用于从所述滑块图片中定位并裁剪出滑块图;

所述滑块缺口区域定位模块,用于根据所述滑块图从所述背景图片中定位出所述滑块缺口所在区域;

所述滑块缺口坐标定位模块,用于根据所述滑块图和所述滑块缺口所在区域,获取所述滑块缺口在所述背景图片中的坐标定位;

所述轨迹生成模块,用于根据所述滑块缺口的坐标和所述滑块图的初始位置,生成滑动轨迹完成滑块验证。

进一步的,所述滑块提取模块从所述滑块图片中定位并裁剪出滑块图的方法为:21)将所述滑块图片中的RGB图像区域转换为RGBA图像,然后将处理后的所述滑块图像保存成png图片;22)利用png图片中的像素特征,对png图片的水平和垂直方向分别进行计算,通过水平方向像素和为0来定位滑块的起始高度和宽度,并通过垂直方向像素和为0来定位滑块的长度;然后通过定位长、宽及滑块在所述滑块图片中的起始高度,从所述滑块图片中裁剪出滑块。

进一步的,所述滑块缺口区域定位模块从所述背景图片中定位出所述滑块缺口所在区域的方法为:根据所述背景图片以及滑块高度及坐标,定位滑块缺口所在区域。

进一步的,所述滑块缺口坐标定位模块获取所述滑块缺口在所述背景图片中的坐标定位的方法为:对所述滑块图进行灰度处理得到图像ImageA,将滑块缺口所在区域记为图像ImageB;将图像ImageB作为输入图像I、将图像ImageA作为模板图像T,利用模板匹配的方法将模板图像T在图像I上滑动,逐个遍历所有像素,以查找与其最匹配的部分;然后根据匹配结果确定出所述滑块缺口在所述背景图片中的坐标。

进一步的,所述滑块缺口坐标定位模块计算模板图像T覆盖在图像I上的每个位置时的度量值,把度量值保存到结果图像矩阵R中;根据结果图像矩阵R中的最大数值并结合滑块图的长度确定出所述滑块缺口的坐标。

进一步的,如果所述匹配结果小于设定阈值时,将图像ImageB与大数据中心存储的图形验证数据-完整背景图进行相似度匹配,优先筛选出相似度(相同像素点比例)最大的完整背景图片,将所筛选出的完整背景图片与滑块缺口的背景图片对比,根据像素点不同的位置坐标确定出所述滑块缺口在所述背景图片中的坐标。

与现有技术相比,本发明的积极效果为:

与已有技术相比,本技术主要针对将缺口融入背景图,且无法在网页源代码中获取完整图片和缺口位置的场景,即获取单独的滑块图片以及包含缺口的背景图片。该类滑动拼图验证码算是滑块验证码的进阶版本,较以往滑块拼图验证码,在验证码的模拟验证方面增加了难度。另,较深度学习的目标检测等有监督学习算法,可有效减少专家人工标注成本,并有效缩小搜索空间,实现在较小范围内、较短时间内识别到滑块缺口位置,更加准确、高效地进行滑块验证码自动化识别。在日均1万条验证登录业务中,单次验证通过率高达90%,极大提高了真实用户的验证效率和体验。

附图说明

图1为本发明的方法流程图。

图2为滑块图处理效果图。

图3为缺口图裁剪处理效果图。

图4为滑块ImageA图。

图5为滑块ImageB图。

图6为滑动模板图像。

图7为使用标准相关匹配方法处理后的结果图像R。

图8为匹配到的位置在原图像中图像。

具体实施方式

下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

本发明的识别方法流程图如图1所示,其步骤包括:

1、数据获取

先模拟浏览器的操作,进到目标页面(比如验证页面)后,通过元素定位抓包可以拿到图片内容的链接,模拟请求得到具体图片流,通过js代码将其导出,获取图片的base64数据。即最终得到目标页面的滑块图片和包含滑块缺口的背景图片两个数据;对于得到的滑块图片和包含滑块缺口的背景图片,利用base64加密脱敏成字符串进行存储。

2、滑块识别定位,以滑块图片为输入,执行以下滑块位置定位方法,得到滑块图片的长、宽及所在的起始高度等,并裁剪出滑块图;

2.1)base64解密获取原滑块图图像,并将RGB(red green blue,红绿蓝)区域图像转换为RGBA图像。RGBA是一种色彩空间的模型,由RGB色彩空间和Alpha通道组成。RGBA代表红(Red)、绿(Green)、蓝(Blue)和Alpha通道(Alpha)。Alpha通道为图像的不透明度参数图像。包括:将图片在RGB色彩空间三个通道的基础上,加上一个A通道,即alpha通道,并设置alpha层半透明,保存成png格式。

2.2)利用png图片中像素特征,即png格式中透明的位置像素为0。基于opencv视觉库,通过numpy进行像素矩阵处理,对水平和垂直方向分别进行计算,通过水平方向像素和为0来定位滑块的起始高度和宽度,并通过垂直方向像素和为0来定位滑块的长度。通过定位滑块长、宽及滑块在所述滑块图片中的起始高度等特征,裁剪出滑块图,如图2所示。

3、滑块缺口区域识别,以包含滑块缺口的背景图以及步骤2中所得滑块所在高度及坐标为输入,定位滑块缺口可能出现的区域。

base64解密获取原包含滑块缺口的背景图图像,并进行基础图像处理,包括:灰度处理、高斯模糊等,并根据步骤2中所得滑块所在高度及滑块自身高度,裁剪出缺口图所在的区域,如图3所示。

4、利用预先在步骤2、3中定位的图像,计算滑块距离滑块缺口的距离,可以在较小范围内且在较短时间内识别到滑块缺口位置。即对步骤2裁剪的滑块图进行灰度处理后-ImageA和对步骤3裁剪的滑块缺口所在区域-ImageB为输入,利用模板匹配算法识别缺口最可能的位置坐标。

其中,模板匹配指在当前图像I内匹配与图像T最相似的部分,一般将图像I称为输入图像,将图像T称为模板图像。在本系统中,I为步骤3中裁剪的图片-ImageB,T为对步骤2中裁剪的滑块进行灰度处理-ImageA。模板匹配的方法将模板图像T在图像I上滑动,逐个遍历所有像素,以查找与其最匹配的部分。

实现过程:

①:准备两张图片,即模板图像T和图像I:

模板(T):将和图像比照的图像块,即滑块ImageA,如图4所示。

图像(I):在这幅图像里,我们希望找到最可能与模板匹配的区域,即图像ImageB,如图5所示。

②:为了确定匹配区域,我们滑动模板图像和原图像进行比较,如图6。

③:使用模板遍历图像

通过滑动,从左往右。在每一个位置,都进行一次度量计算来表明模板和原图像的特定区域的相似性。

对于模板T覆盖在图像I上的每个位置,把度量值保存到结果图像矩阵(R)中;在R中的每个位置(x,y)都包含匹配度量值:

以下6种方法是模板匹配提供的查找方法:

(1)平方差匹配method=CV_TM_SQDIFF

这类方法利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大。

(2)标准平方差匹配method=CV_TM_SQDIFF_NORMED

(3)相关匹配method=CV_TM_CCORR

这类方法采用模板和图像间的乘法操作,所以较大的数表示匹配程度较高,0标识最坏的匹配效果。

(4)标准相关匹配method=CV_TM_CCORR_NORMED

(5)相关匹配method=CV_TM_CCOEFF

这类方法将模版对其均值的相对值与图像对其均值的相关值进行匹配,1表示完美匹配,-1表示匹配很差,0表示没有任何相关性(随机序列)。

(6)标准相关匹配method=CV_TM_CCOEFF_NORMED

图7是使用标准相关匹配方法处理后的结果图像R。其中,矩形框住的最左侧位置是结果图像矩阵中的最大数值,所以结合滑块图的长度,认定这个区域是匹配的。

匹配到的位置在原图像中图像如图8。

对于匹配度较大的滑块任务,则直接进行步骤5。

对于匹配度较小的滑块任务,与大数据中心存储的图形验证数据-完整背景图进行相似度匹配,优先筛选出相似度(相同像素点比例)最大的背景图片,与滑块缺口背景图片对比,将像素点不同的位置坐标定位缺口位置,以提升现有模板匹配算法中因像素问题导致的匹配错误(包括:未识别与识别错误)。

其中,大数据中心存储的完整背景图数据获取步骤如下:

1)滑块缺口坐标初定位

获取滑块与滑块缺口背景图片,并利用1-4步骤进行匹配

2)完整背景图获取

将匹配度较大且验证“成功”的完整背景图截图并保存上传

利用大数据并行计算的优势,快速将滑块缺口图与历史完整背景图片进行相似度判定。其中,完整背景图片和滑块缺口图只是缺口处不同,其他地方完全相同。因此,对比两幅图像的像素,将不同的像素找出来,获取缺口的位置。

本文通过PIL库提供的ImageChops模块进行两幅图像的异同对比,并给出缺口的位置。

具体步骤如下:

①数据获取:用Image模块中的open()函数打开要对比的缺口图片和任意历史完整背景图片

②完整背景图筛选:比较每个像素点的RGB值,若两张图片相似像素点在90%以上,将该完整背景图作为候选,并将(缺口图片,该完整背景图,相似像素点占比)保存。

循环遍历所有缺口图片与所有历史完整背景图片,直至所有缺口图片与所有历史完整背景图片确认完相似像素点。

将(缺口图片,完整背景图,相似像素点占比)中,按缺口图片进行分组,将该缺口图片对应的相似像素点占比最大的完整背景图作为对比图像。

③缺口定位:用ImageChops模块中的difference()函数对比以上两张图片的像素,并获取不同之处的坐标值。getbbox()函数会以元组的形式返回缺口的一组坐标值(x1,y1,x2,y2)。其中,x1与y1为缺口左上角的x坐标和y坐标。X2与y2为缺口右下角的x坐标和y坐标。

5、机器模拟滑块轨迹

通过以上获取的缺口位置和滑块初始位置,获得滑块应该滑动的距离,使用PyAutoGUI模拟人为操作,设置鼠标移动到指定位置的规律为先easeInQuad(开始缓慢移动,后逐渐加速移动)后easeOutQuad(开始快速移动,后逐渐减速移动),为避开检测,采用先滑过缺口,再滑回来的动作等完成滑块验证,并截图保存。

验证模拟的鼠标轨迹是否验证成功,如果验证“成功”将成功信号通知服务端;如果验证“失败”将失败的信号通知服务端。服务端将验证结果以及对应截图保存至大数据中心。

尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

相关技术
  • 一种基于轨迹的滑动验证码人机识别方法
  • 一种基于窗口滑动和卷积神经网络的验证码识别方法
技术分类

06120115921867