基于目标检测方法的验证码识别方法及系统与制作流程

基于目标检测方法的验证码识别方法及系统与制作流程
基于目标检测方法的验证码识别方法及系统与制作流程

图片简介:

本技术涉及一种基于目标检测方法的验证码识别方法及系统,其中方法包括:A.收集不同形状的滑块图片并建立数据集,通过selenium库操控浏览器进行网页请求操作,并进行模拟登陆,对验证码图片进行截图;B.对滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,对带缺口的验证码图片进行灰色处理;C.通过OpenCV中的函数对图片进行匹配,计算出不透明滑块图片和带缺口的验证码图片缺口处的坐标,得到滑块图片的位移量;

D.通过selenium库模拟鼠标,按照先快后慢的人工滑动规律移动滑块图片,对验证码进行解析。为在各大网站收集数据做前期准备工作,实现自动识别滑动拼图验证码,提高验证码识别的准确率。

技术要求

1.一种基于目标检测方法的验证码识别方法,其特征包括:

A.收集不同形状的滑块图片并建立滑块图片数据集,通过selenium库操控浏览器进行网页请求操作,并进行模拟登录,对带缺口的验证码图片进行截图,提取带缺口的验证码图片;

B.对数据集中的滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,对所提取的带缺口的验证码图片进行灰色处理;

C.通过OpenCV的matchTemaplate函数对所述不透明滑块图片和所述带缺口的验证码图片进行匹配,设置相似度阀值,通过OpenCV中的cv2.TM_CCOEFF_NORMED得到与带缺口的验证码图片最相匹配的不透明滑块图片,计算出不透明滑块图片和带缺口的验证码图片缺口处的坐标,得到不透明滑块图片移动到带缺口的验证码图片缺口处的位移量distance;

D.通过selenium库模拟鼠标点击所述滑块图片,并保持模拟鼠标按键的点压状态,按照先快后慢的人工滑动规律移动所述滑块图片,实现将滑块图片移动到所述带缺口的验证码图片的缺口处进行验证码解析。

2.根据权利要求1所述的一种基于目标检测方法的验证码识别方法,其特征在于:步骤B 中,对所述的滑块图片和带缺口的验证码图片进行处理时,对滑块图片进行RGBA四通道转透明通道处理,将RGB三通道的数值设为0,透明通道“A”的数值设置为220,仅保留滑块图的边缘部分;对所述带缺口的验证码图片进行RGB三通道转单通道的灰度处理。

3.根据权利要求1所述的一种基于目标检测方法的验证码识别方法,其特征在于:步骤D 中,所述进行验证码解析的步骤包括:

D1.设置阈值mid=distance×3/4,初始滑块位置current=0,时刻t=0.2,初始速度V=0,加速度a=0;

D2.初始滑块位置current小于位移量distance时,进入循环:

若当前滑块位置current小于阀值mid时, a=2;

若当前滑块位置current大于阀值mid时, a=-3;

D3.设定滑块图片每次移动的初始速度V0 =V,

则速度时间V = V0 + a × t,

每次移动的位移量move = V0 × t + 1 / 2 × a × t × t,

D4.调用selenium库的click_and_hold函数模拟鼠标点击滑块,并且模拟鼠标按键保持为按压状态不松开,将每次移动的位移量move的值传入selenium库的move_by_offset中,通过每次移动的位移量move的大小得到经过每次移动后的当前位置current=current+move,直到当前位置current大于位移量distance,退出循环,模拟释放鼠标,实现将滑块图片移动到带缺口的验证码图片的缺口处,完成对滑动拼图验证码的解析。

4.用于权利要求1至3之一所述方法的一种基于目标检测方法的验证码识别系统,其特征在于,包括图片收集模块、图片处理模块、图片匹配模块和图片验证模块;

所述图片收集模块用于对网页上的滑块拼图验证码中的滑块图片和带缺口的验证码图片进行截图,提取出这两张图片;

图片处理模块用于对滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,对带缺口的验证码图片进行灰色处理;

图片匹配模块用于对所述不透明滑块图片和所述带缺口的验证码图片进行匹配,获取不透明滑块图片在带缺口的验证码图片的坐标和两张图片的相似度;

图片验证模块用于通过selenium库模拟人工拖动滑块轨迹,按照先快后慢的人工滑动规律移动所述滑块图片,进行验证码解析。

5.根据权利要求4所述的一种基于目标检测方法的验证码识别系统,其特征在于,所述图片处理模块中包括灰色处理模块和透明处理模块,其中灰色处理模块用于将所述带缺口的验证码图片的RGB三通道的原图处理成单通道的图片;透明处理模块用于将所述滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片。

技术说明书

一种基于目标检测方法的验证码识别方法及系统

技术领域

本技术涉及计算机视觉及图像处理领域,具体的涉及一种基于目标检测方法的验证码识别方法及系统。

背景技术

近年来互联网的迅猛发展,信息安全和网络安全的重要程度已经提到国家战略层面。为了防止私人用户甚至大型企业肆意爬取网站数据、转化为商业用途甚至进行违法犯罪活动,在反爬虫领域的验证码方法也逐渐盛行。

滑动拼图验证码方法被许多大型互联网企业应用。这种验证码打破了以往文字和/或字母验证码存在的缺点,使得传统爬虫方法无法操作。

申请号为2019102111603的中国专利文献介绍了一种基于深度学习的验证码识别方法及系统,该方法包括:步骤1,图像收集打标签:利用爬虫爬取该网站的验证码图片分为测试集和训练集,并手动打上标签;步骤2,图像预处理:利用图片处理工具CV2对验证码图片进行预处理;步骤3,搭建深度学习模型:利用深度学习框架keras、开发工具python以及训练集数据搭建深度学习模型;步骤4,模型训练及验证:利用反向传播,经过多次训练模型后,用训练好的模型来预测测试集的验证码图片。但该技术方案不能实现对滑块拼图验证码进行解析和验证,以及不能实现自动识别滑动拼图验证码。

技术内容

针对现有技术中无法对滑动拼图验证码进行操作的问题,本技术提供一种基于目标检测方法的验证码识别方法及系统,其目的在于:为在各大网站收集数据做前期准备工作,实现自动识别滑动拼图验证码,提高验证码识别的准确率。

本技术采用的技术方案如下:

一种基于目标检测方法的验证码识别方法,包括:

A.收集不同形状的滑块图片并建立滑块图片数据集,通过selenium库操控浏览器进行网页请求操作,并进行模拟登录,对带缺口的验证码图片进行截图,提取带缺口的验证码图片;

B.对数据集中的滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,对所提取的带缺口的验证码图片进行灰色处理;

C.通过OpenCV的matchTemaplate函数对不透明滑块图片和带缺口的验证码图片进行匹配,设置一个相似度阀值,通过OpenCV中的cv2.TM_CCOEFF_NORMED得到与带缺口的验证码图片最相匹配的不透明滑块图片,计算出不透明滑块图片和带缺口的验证码图片缺口处的坐标,得到不透明滑块图片移动到带缺口的验证码图片缺口处的位移量distance;

D.通过selenium库模拟鼠标点击所述滑块图片,并保持模拟鼠标按键的点压状态,按照先快后慢的人工滑动规律移动所述滑块图片,实现将滑块图片移动到所述带缺口的验证码图片的缺口处进行验证码解析。

在本技术的方法中,使用selenium中的screenshot函数对带缺口的验证码图片进行截图,不需要前期在各大网站收集大量的验证码图片并建立数据集进行训练,降低了时间成本。在对截取的验证码图片进行处理时,对滑块图片进行红色通道、绿色通道、蓝色通道和Alpha通道四通道转透明通道处理,得到不透明滑块图片,仅保留滑块图片的边缘,可以提高滑块图片和带缺口的验证码图片匹配的准确性,保证了通过OpenCV的matchTemaplate函数对所述不透明滑块图片和所述带缺口的验证码图片进行匹配时,获取到与带缺口的验证码图片更匹配的滑块图片,且能够更准确的滑块图片在带缺口的验证码图片的坐标,从而计算出较为准确的滑块图片移动到带缺口的验证码图片缺口处的位移量distance。最后,将滑块位移量distance传入定义的函数,利用selenium库模拟人工拖动滑块轨迹进行验证码验证,从而实现自动识别滑动拼图验证码,提高验证码识别的准确率。

具体的,步骤B中,对滑块图片和带缺口的验证码图片进行处理时,对滑块图片进行红色通道、绿色通道、蓝色通道和Alpha通道四通道转透明通道处理,将红色通道、绿色通道、蓝色通道三通道的数值设为0,Alpha通道的数值设置为220,仅保留滑块图的边缘部分;对带缺口的验证码图片进行灰度处理(红色通道、绿色通道、蓝色通道三通道转单通道)。

进一步的,步骤D中,利用selenium库模拟人工拖动滑块轨迹,按照先快后慢的人工滑动规律移动所述滑块图片,进行验证码解析的具体方法为:

D1.设置阈值mid=distance×3/4,初始滑块位置current=0,时刻t=0.2,初始速度V=0,加速度a=0;

D2.初始滑块位置current小于位移量distance时,进入循环:

若当前滑块位置current小于阀值mid时, a=2;

若当前滑块位置current大于阀值mid时, a=-3;

D3.设定滑块图片每次移动的初始速度V0 =V,

则速度时间V = V0 + a × t,

每次移动的位移量move = V0 × t + 1 / 2 × a × t × t,

D4.调用selenium库的click_and_hold函数模拟鼠标点击滑块,并且模拟鼠标按键保持为按压状态不松开,将每次移动的位移量move的值传入selenium库的move_by_offset中,通过每次移动的位移量move的大小得到经过每次移动后的当前位置current=current+move

,直到当前位置current大于位移量distance,退出循环,模拟释放鼠标,实现将滑块图片移动到带缺口的验证码图片的缺口处,完成对滑动拼图验证码的解析。

本技术还提供了一种用于上述方法的基于目标检测方法的验证码识别系统,包括图片收集模块、图片处理模块、图片匹配模块和图片验证模块;

其中,图片收集模块用于对网页上的滑块拼图验证码中的滑块图片和带缺口的验证码图片进行截图,提取出这两张图片;

图片处理模块用于对滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,对带缺口的验证码图片进行灰色处理;

图片匹配模块用于对处理后的不透明滑块图片和带缺口的验证码图片进行匹配,获取不透明滑块图片在带缺口的验证码图片的坐标和两张图片的相似度;

图片验证模块用于通过selenium库模拟人工拖动滑块轨迹,按照先快后慢的人工滑动规律移动滑块图片,进行验证码解析。

优选的,图片匹配模块包括灰度处理模块和透明处理模块;其中灰色处理模块用于将带缺口的验证码图片的RGB三通道的原图处理成单通道的图片;透明处理模块用于将滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片。

综上所述,由于采用了上述技术方案,本技术的有益效果是:

通过对滑块图片进行RGBA四通道转透明通道处理和对带缺口的验证码图片进行护色处理,并通过利用selenium库点击滑块图片并保持点击状态,按照先快后慢的人工滑动规律移动滑块图片,能够实现对滑块拼图验证码的自动验证,并提高验证码识别的准确率,测试证明,通过本技术,能够对验证码的识别准确率达到90%。并且,无需收集大量的验证码图片进行识别和训练,降低了时间成本。

附图说明

本技术将通过例子并参照附图的方式说明,其中:

图1是一种基于目标检测方法的验证码识别方法的流程框图;

图2是滑块图片处理后的效果图;

图3是带缺口的验证码图片处理后的效果图;

图4是一种基于目标检测方法的验证码识别系统的结构框图。

具体实施方式

本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

下面结合图1至图4对本技术作详细说明。

实施例1

请参考图1,本技术的一种基于目标检测方法的验证码识别方法及系统,该方法的步骤包括:

A.收集不同形状的滑块图片并建立滑块图片数据集,通过selenium库(用于Web应用程序测试的工具,Selenium测试能够直接运行在浏览器中)操控浏览器进行网页请求操作,并进行模拟登录,对带缺口的验证码图片进行截图,提取带缺口的验证码图片;进行网页请求操作需要定义login函数,使用selenium(用于对图片截图)自动化测试库和Chromedriver应用程序对目标网站进行请求,调用browser.send_keys()函数模拟登录(网站不需要模拟登陆则不使用),到达验证码页面;利用selenium模块的screenshot()函数对带缺口验证码图片进行截图或抓取,命名为target.png;本实施例中利用selenium库操控浏览器进行网页请求操作的方法采用的是现有技术。只需要针对目标验证码进行截图,不用通过前期大量收集验证码图片建立数据集进行练习,再进行匹配,大大减少了前期的时间和人工成本,且不需要和其他的图片进行对比匹配,提高了验证的准确性。

请参考图2和图3。B.对滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,对带缺口的验证码图片进行灰色处理;对滑块图片和带缺口的验证码图片处理的具体方法为:

B1.对带缺口的验证码图片进行灰色处理采用的是现有技术,通过RGB(红色通道、绿色通道、蓝色通道)三通道转单通道;对滑块图片进行RGBA(红色通道、绿色通道、蓝色通道和Alpha通道)四通道转透明通道处理,定义convert函数,将RGB三通道的数值设为0,透明通道“A”的数值设置为220,将滑块图片转化为不透明图像,仅保留滑块图片的边缘部分。

B2.将处理后的带缺口的验证码图片和滑块图片保存为single_channel_target.png和

single_channel_template.png。

在对截图进行处理时,因为滑块图片的面积较小且像素比较集中,对其进行灰色处理会降低滑块图片和带缺口的验证码图片匹配时的准确率。对滑块图片进行RGBA(红色通道、绿色通道、蓝色通道和Alpha通道)四通道转透明通道处理,将滑块图片转化为不透明图像,仅保留滑块图片的边缘部分。滑块图片除边缘部分,其他部分的颜色接近于黑色,能够使滑块图片和带缺口的验证码图片之间的对比更加明显,提高了滑块图片和带缺口的验证码图片匹配时的准确率。

C.通过OpenCV(计算机视觉库)的matchTemaplate函数(用于模板匹配)对不透明滑块图片和带缺口的验证码图片进行匹配,设置一个相似度阀值,通过OpenCV中的

cv2.TM_CCOEFF_NORMED(归一化匹配)得到与带缺口的验证码图片最相匹配的不透明滑块图片,计算出不透明滑块图片和带缺口的验证码图片缺口处的坐标,得到不透明滑块图片移动到带缺口的验证码图片缺口处的位移量distance。具体方法为:

C1.设置相似度阈值为thres=0.3(在本实施例中,相似度阀值为0.3,在其他实施例中阈值需要根据实际调整,可以考虑嵌入网络来学习这个相似度阈值)并定义一个空的列表count_template;

C2.将滑块数据集中的每一个滑块图片single_channel_template.png逐一带入函数进入循环:

利用matchTemplate()函数对验证码图片single_channel_target.png和滑块图片

single_channel_template.png进行匹配,得到结果中的TM_CCOEFF_NORMED参数(里面的值是两张图片的相似度);

C3.将TM_CCOEFF_NORMED参数中的每一个值each带入函数进入循环:

当相似度each>相似度阀值thres时,count+1;

当相似度each≤相似度阀值thres时跳过循环。

C4.将TM_CCOEFF_NORMED中的每一个相似度值each带入函数进入循环结束之后,将每一个count值合并到列表count_template中;

将滑块数据集中的每一个滑块图片single_channel_template.png逐一带入函数进入循环结束之后,得到列表count_template中最大值的索引max_index,找到滑块数据集中索引为max_index的滑块图片命名为best_template.png,则此图片为和验证码图片中缺口相对应的滑块图片;

C5.通过matchTemplate()函数再次匹配名称为best_template.png的滑块图片和名称为single_channel_target.png的验证码图片,得到两张图片相似度的参数,输出其中相似度最高的八个点;

C6.设定滑块图片best_template.png的长度为L(X轴)和宽度为W(Y轴),如果某个点的X轴坐标加上滑块图片的长度L=另外一个点的X轴坐标,那么这两个点为同一个矩形上的点。将相似度最高的八个点分别进行判断,能够将八个点分为两个矩形,X轴坐标相对较大的即为缺口坐标position2,较小的为滑块位置坐标position1。缺口坐标position2的第一个坐标(矩形的左下角顶点)的x轴坐标减去滑块位置坐标position1的第一个坐标的x轴坐标即为滑块位移量distance;

D.通过利用selenium库模拟人工拖动滑块轨迹,按照先快后慢的人工滑动规律移动所述滑块图片,进行验证码解析的具体方法为:

D1.设置阈值mid=distance×3/4,初始滑块位置current=0,时刻t=0.2,初始速度V=0,加速度a=0;

D2.当初始滑块位置current小于位移量distance时,进入循环:

若当前滑块位置current小于阀值mid时, a=2;

若当前滑块位置current大于阀值mid时, a=-3;

D3.设定滑块图片每次移动的初始速度V0 =V,

则速度时间V = V0 + a × t,

每次移动的位移量move = V0 × t + 1 / 2 × a × t × t,

D4.调用selenium库的click_and_hold函数模拟鼠标点击滑块,并且模拟鼠标按键保持为按压状态不松开,将每次移动的位移量move的值传入selenium库的move_by_offset中,通过每次移动的位移量move的大小得到经过每次移动后的当前位置current=current+move

直到当前位置current大于位移量distance,退出循环,模拟释放鼠标,实现将滑块图片移动到带缺口的验证码图片的缺口处,完成对滑动拼图验证码的解析。

实施例2

请参考图4。一种基于目标检测方法的验证码识别系统,其特征在于,包括图片收集模块、图片处理模块、图片匹配模块和图片验证模块;

其中,图片收集模块(可采用现有技术实现)用于对网页上的滑块拼图验证码中的滑块图片和带缺口的验证码图片进行截图,提取出这两张图片;

图片处理模块用于对滑块图片进行RGBA四通道转透明通道处理,得到不透明滑块图片,将RGB三通道的数值设为0,透明通道“A”的数值设置为220,仅保留滑块图的边缘部分,对带缺口的验证码图片进行RGB三通道转单通道处理;

图片匹配模块用于对处理后的不透明滑块图片和带缺口的验证码图片进行匹配,获取不透明滑块图片在带缺口的验证码图片的坐标和两张图片的相似度;

图片验证模块用于利用selenium库模拟人工拖动滑块轨迹,按照先快后慢的人工滑动规律移动滑块图片。设置阈值mid=distance×3/4,初始滑块位置current=0,时刻t=0.2,初始速度V=0,加速度a=0;

初始滑块位置current小于位移量distance时,进入循环:

若当前滑块位置current小于阀值mid时, a=2;

若当前滑块位置current大于阀值mid时, a=-3;

设定滑块图片每次移动的初始速度V0 =V,

则速度时间V = V0 + a × t,

每次移动的位移量move = V0 × t + 1 / 2 × a × t × t,

调用selenium库的click_and_hold函数模拟鼠标点击滑块,并且模拟鼠标按键保持为按压状态不松开,将每次移动的位移量move的值传入selenium库的move_by_offset中,得到每次移动的位移量move的大小,从而得到经过每次移动后的当前位置current=current+move,直到当前位置current大于位移量distance,退出循环,释放鼠标,从而实现将所述滑块图片移动到所述带缺口的验证码图片的缺口处,完成对滑动拼图验证码的解析。

以上所述实施例仅表达了本申请的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。

相关主题
相关文档
最新文档