一种行为式验证码处理方法及装置与流程

文档序号:11251258阅读:837来源:国知局
一种行为式验证码处理方法及装置与流程

本发明涉及计算机数据处理领域,特别涉及一种行为式验证码处理方法及装置。



背景技术:

验证码是为保障网站信息安全而生的,必须要经受得起自动破解程序的考验,因此需要经过各种自动化测试才能达到高度的安全性。在机器学习人工智能的潮流下,破解传统的字符型验证码已非难事,验证码2.0时代的行为式验证码应运而生。行为式验证码指的是通过用户的操作行为来完成验证,而无需去读懂扭曲的图片文字。其核心思想是利用用户的“行为特征”来做验证安全判别。

纯行为式的验证,如图1和图2所示的行为式验证码,其结合了行为轨迹、网络环境、设备型号来区分人机,其中,目标位置的识别是第一道必过关卡。目前的行为式验证码处理技术通常采用先点击再截图的方式得到验证码图片,由于截图中包含有拼图的干扰,为去除干扰则会导致目标位置的识别存在一定的边界误差;另外,在实现拖动时,直接调用webdriver的内置函数movebyoffset(),但该函数在linux与windows下消耗的时间不一致,容易导致通过率大大降低,以上这些问题都加大了网络数据采集的难度。

因此,亟需一种行为式验证码处理方法及装置。



技术实现要素:

发明的目的:为了解决现有行为式验证码处理技术目标识别存在误差、执行效率低、跨平台性能不够好且通过率不高的技术问题,提供一种验证码处理方法及装置,通过验证码图片选择器的属性获得并还原图片,采用简单的目标识别算法,目标识别准确率可达90%以上,并利用js脚本模拟真实人类的拖动,能够达到自动化的测试中通过行为式验证的技术效果。从而解决了行为式验证码的识别与破解问题。

为达到上述目的,本发明采用的技术方案是:提供了一种行为式验证码处理方法,包括以下过程:

步骤1:驱动渲染、加载网页,通过网页元素选择器定位验证码图片,并采用图片拼接还原方式分别获取全背景图和待验证背景图;所述网页元素选择器为css选择器或xpath选择器;

步骤2:将全背景图和待验证背景图进行对比,利用像素差异找到目标位置;

步骤3:根据目标位置选择合适的样本轨迹并加载至js脚本中,运行js脚本开始拖动、释放鼠标,服务器根据拖动的轨迹特征及验证时所在ip地址对验证结果进行判定;当得分>0时,验证成功,输出结果;当得分≤0时,验证失败,重复步骤1-3直至验证成功,或者达到预设验证次数时停止验证。

进一步地,所述采用图片拼接还原方式分别获取全背景图和待验证背景图,包括以下过程:

加载webdriver和验证码图片选择器;所述验证码图片选择器为全背景图选择器或待验证背景图选择器;

获得验证码图片选择器的style属性;

取出验证码图片选择器style属性中的像素坐标和完整乱序图片的url;

通过完整乱序图片的url得到乱序图片,并通过验证码图片选择器的像素坐标对乱序图片进行还原;

分别得到还原后的全背景图、待验证背景图的上半部分与下半部分;

分别将全背景图、待验证背景图的上半部分与下半部分拼合,完成全背景图和待验证背景图的还原。

进一步地,所述将全背景图和待验证背景图进行对比,利用像素差异找到目标位置,包括以下过程:

加载全背景图和待验证背景图;

设置初始化目标位置;

遍历全背景图、待验证背景图每一列每个像素点的rgb三个分量,并将全背景图与待验证背景图对应的像素点的rgb三个分量分别做差;

当rgb三个分量的三个差值均大于预定阈值时,则判定颜色不同;

返回出现第一个颜色不同像素点的一列横坐标作为目标位置。

进一步地,所述将全背景图和待验证背景图进行对比,利用像素差异找到目标位置,包括以下过程:

加载全背景图和待验证背景图;

计算全背景图和待验证背景图的像素差异,排序后存储;

已知目标位置面积为x,则取前x个像素点中差异最大的像素点;

对所取的前x个像素点中每列不同的像素点进行计数;

返回不同像素点个数最多的一列的横坐标,即为目标位置。

进一步地,所述计算全背景图和待验证背景图的像素差异,包括以下过程:遍历取到全背景图、待验证背景图的各像素点,将全背景图与待验证背景图对应的像素点的像素值pixel分别做差,得到整体差异。

本发明还提供了一种行为式验证码处理装置,包括:

图片获取模块,用于驱动渲染、加载网页,通过网页元素选择器定位验证码图片,并采用图片拼接还原方式分别获取全背景图和待验证背景图;

目标位置识别模块,用于将全背景图和待验证背景图进行对比,利用像素差异找到目标位置;

移动验证模块,用于根据目标位置选择合适的样本轨迹并加载至js脚本中,运行js脚本开始拖动、释放鼠标,服务器根据拖动的轨迹特征及验证时所在ip地址对验证结果进行判定;当得分>0时,验证成功,输出结果;当得分≤0时,验证失败,重复步骤1-3直至验证成功,或者达到预设验证次数时停止验证。

进一步地,所述图片获取模块,具体用于:

加载webdriver和验证码图片选择器;所述验证码图片选择器为全背景图选择器或待验证背景图选择器;

获得验证码图片选择器的style属性;

取出验证码图片选择器style属性中的像素坐标和完整乱序图片的url;

通过完整乱序图片的url得到乱序图片,并通过验证码图片选择器的像素坐标对乱序图片进行还原;

分别得到还原后的全背景图、待验证背景图的上半部分与下半部分;

分别将全背景图、待验证背景图的上半部分与下半部分拼合,完成全背景图和待验证背景图的还原。

进一步地,所述目标位置识别模块,具体用于:

加载全背景图和待验证背景图;

设置初始化目标位置;

遍历全背景图、待验证背景图每一列每个像素点的rgb三个分量,并将全背景图与待验证背景图对应的像素点的rgb三个分量分别做差;

当rgb三个分量的三个差值均大于预定阈值时,则判定颜色不同;

返回出现第一个颜色不同像素点的一列横坐标作为目标位置。

进一步地,所述目标位置识别模块,具体用于:

加载全背景图和待验证背景图;

计算全背景图和待验证背景图的像素差异,排序后存储;

已知目标位置面积为x,则取前x个像素点中差异最大的像素点;

对所取的前x个像素点中每列不同的像素点进行计数;

返回不同像素点个数最多的一列的横坐标,即为目标位置。

进一步地,所述目标位置识别模块中,计算全背景图和待验证背景图的像素差异,包括以下过程:遍历取到全背景图、待验证背景图的各像素点,将全背景图与待验证背景图对应的像素点的像素值pixel分别做差,得到整体差异。

本发明的有益效果是:本发明能够跨平台并支持高并发,采用phantomjs浏览器或chrome浏览器驱动对网页进行渲染,并通过css选择器定位验证码图片,执行效率高;采用图片拼接还原方式获取全背景图和待验证的背景图,与截图方式对比优势明显,有利于进一步的目标识别;采用简单的目标识别算法,目标识别准确率可达90%以上;采用js脚本模拟真实人类的拖动,拖动成功率单机测试高达80%,本发明极大程度上为网络数据的自动采集扫清了障碍,同时也为行为式验证码的改进提供相应思路,具有一定的实用价值和应用前景。

附图说明

图1是现有行为式验证码的全背景图示例。

图2是现有行为式验证码的待验证背景图示例。

图3是实施例1行为式验证码处理方法的主要流程图。

图4是实施例1行为式验证码处理方法中步骤1的具体流程图。

图5是实施例1行为式验证码处理方法中步骤1还原的待验证背景图。

图6是实施例1行为式验证码处理方法中步骤2的具体流程图。

图7是实施例1行为式验证码处理方法中步骤3的具体流程图。

图8是实施例2行为式验证码处理方法步骤2的具体流程图。

图9是实施例3行为式验证码处理装置的结构框图。

具体实施方式

为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。

实施例1

参照图3-7,一种行为式验证码处理方法,包括:

步骤1:利用chromedriver渲染,加载网页,并通过css选择器定位验证码图片,采用图片拼接还原方式分别得到全背景图和待验证背景图;

所述采用图片拼接还原方式分别获取全背景图和待验证背景图,包括以下过程:

步骤1.1:设置webdriver属性并加载webdriver,等待验证码图片选择器加载完全;所述验证码图片选择器为全背景图选择器或待验证背景图选择器;

步骤1.2:获得验证码图片选择器的style属性;

步骤1.3:取出验证码图片选择器style属性中的像素坐标和完整乱序图片的url;

步骤1.4:根据所取得的url得到乱序图片,并根据验证码图片选择器的像素坐标对乱序图片进行还原;

步骤1.5:分别得到还原后的全背景图、待验证背景图的上半部分与下半部分;

步骤1.6:分别将全背景图、待验证背景图的上半部分与下半部分拼合,完成全背景图和待验证背景图的还原;其中,本发明全背景图的还原图与现有技术的全背景图(图1)一致,但待验证背景图(图5)与现有截图方式得到的待验证背景图(图2)有明显区别,本发明的图片拼接还原方式只还原目标位置,无拼图干扰,大大提高了目标位置识别的准确性。

步骤2:将全背景图和待验证背景图进行对比,利用像素差异找到目标位置,具体可以包括:

步骤2.1:加载全背景图和待验证背景图;

步骤2.2:遍历取到全背景图、待验证背景图的各像素点,将全背景图与待验证背景图对应的像素点的像素值pixel分别做差,得到整体差异,排序后存储;

步骤2.3:已知目标位置面积为x,则取前x个像素点中差异最大的像素点,像素差值最大处最有可能是目标位置所在处;所述目标位置面积即为待拖动拼图面积;

步骤2.4:对所取的前x个像素点中每列不同的像素点进行计数;

步骤2.5:返回不同像素点个数最多的一列的横坐标,即为目标位置。

步骤3:根据目标位置选择合适的样本轨迹并加载至js脚本中,运行js脚本开始拖动、释放鼠标,服务器根据拖动的轨迹特征及验证所在ip地址对验证结果进行判定,具体可以包括:

步骤3.1:在内存中加载轨迹样本;

步骤3.2:根据目标位置选择合适的样本轨迹;

步骤3.3:将样本轨迹加载至js脚本中,运行js脚本拖动、释放鼠标;

步骤3.4:服务器根据拖动的轨迹特征及验证所在ip地址对验证结果进行判定,当得分>0时,验证成功,输出结果;当得分≤0时,验证失败,重复步骤1-3直至验证成功,或者达到预设验证次数时停止验证。

实施例2

参照图8,一种行为式验证码处理方法,包括:

步骤1:利用phantomjs无头浏览器渲染、加载网页,通过xpath选择器定位验证码图片,采用图片拼接还原分别得到全背景图和待验证背景图;所述phantomjs是一个脚本化的无界面webkit,以javascript为脚本语言实现各项功能,官方列举的使用场景包括:无界面测试,页面自动化,屏幕截图和网络监控;

所述采用图片拼接还原方式分别获取全背景图和待验证背景图,包括以下过程:

步骤1.1:设置webdriver属性并加载webdriver,等待验证码图片选择器加载完全;所述验证码图片选择器为全背景图选择器或待验证背景图选择器;

步骤1.2:获得验证码图片选择器的style属性;

步骤1.3:取出验证码图片选择器style属性中的像素坐标和完整乱序图片的url;

步骤1.4:根据所取得的url得到乱序图片,并根据验证码图片选择器的像素坐标对乱序图片进行还原;

步骤1.5:分别得到还原后的全背景图、待验证背景图的上半部分与下半部分;

步骤1.6:分别将全背景图、待验证背景图的上半部分与下半部分拼合,完成全背景图和待验证背景图的还原;

步骤2:将全背景图和待验证背景图进行对比,利用像素差异找到目标位置,具体可以包括:

步骤2.1:加载全背景图和待验证背景图;

步骤2.2:设置初始化目标位置为-1;

步骤2.3:遍历全背景图、待验证背景图每一列每个像素点的rgb三个分量,并将全背景图与待验证背景图对应的像素点的rgb三个分量分别做差;

步骤2.4:设置rgb色彩差异阈值为60,若rgb三个分量的三个差值均>60,则判定颜

色不同;

步骤2.5:返回出现第一个颜色不同像素点的一列横坐标作为目标位置。

步骤3:根据目标位置选择合适的样本轨迹并加载至js脚本中,运行js脚本开始拖动、释放鼠标,服务器根据拖动的轨迹特征及验证所在ip地址对验证结果进行判定;该步骤具体可以包括:

步骤3.1:在内存中加载轨迹样本;

步骤3.2:根据目标位置选择合适的样本轨迹;

步骤3.3:将样本轨迹加载至js脚本中,按照轨迹操作鼠标进行拖动、释放鼠标;

步骤3.4:服务器根据拖动的轨迹特征及验证所在ip地址对验证结果进行判定,当得分>0时,验证成功,输出结果;当得分≤0时,验证失败,重复步骤1-3直至验证成功,或者达到预设验证次数时停止验证。其中,鼠标拖动部分可以选择使用无头phantomjs浏览器,但由于phantomjs在linux和windows平台环境下性能表现有所差异,因此通过率会有较大差别。

本实施例2方法可以在windows与linux下多线程开启,设置好url,传入webdriver,调用方法并执行,即可得到验证结果。日志输出如下:

mv_size:201

mv_size:199

mv_size:206

目标位置:180样本记录长度:18

findtarget目标位置:180resulttext:再来一次:

验证结果:tryno.0:再来一次:

目标位置:139样本记录长度:139

findtarget目标位置:139resulttext:验证通过:

验证结果:tryno.1:验证通过:

验证成功!

mv_size:208

目标位置:188样本记录长度:188

findtarget目标位置:188resulttext:验证通过:

验证结果:tryno.0:验证通过:

验证成功!

上述过程如果重试8次仍未通过,则放弃本次验证。

实施例3

参照图9,本实施例一种行为式验证码处理装置,包括:

图片获取模块,用于通过phantomjs无头浏览器或chrome浏览器驱动渲染、加载网页,通过网页元素选择器定位验证码图片,并采用图片拼接还原方式分别获取全背景图和待验证背景图;

目标位置识别模块,用于将全背景图和待验证背景图进行对比,利用像素差异找到目标位置;

移动验证模块,用于根据目标位置选择合适的样本轨迹并加载至js脚本中,运行js脚本开始拖动、释放鼠标,服务器根据拖动的轨迹特征及验证时所在ip地址对验证结果进行判定;当得分>0时,验证成功,输出结果;当得分≤0时,验证失败,重复步骤1-3直至验证成功,或者达到预设验证次数时停止验证。

所述图片获取模块,具体用于:

加载webdriver和验证码图片选择器;所述验证码图片选择器为全背景图选择器或待验证背景图选择器;

获得验证码图片选择器的style属性;

取出验证码图片选择器style属性中的像素坐标和完整乱序图片的url;

通过完整乱序图片的url得到乱序图片,并通过验证码图片选择器的像素坐标对乱序图片进行还原;

分别得到还原后的全背景图、待验证背景图的上半部分与下半部分;

分别将全背景图、待验证背景图的上半部分与下半部分拼合,完成全背景图和待验证背景图的还原。

所述目标位置识别模块,具体用于:

加载全背景图和待验证背景图;

设置初始化目标位置;

遍历全背景图、待验证背景图每一列每个像素点的rgb三个分量,并将全背景图与待验证背景图对应的像素点的rgb三个分量分别做差;

当rgb三个分量的三个差值均大于预定阈值时,则判定颜色不同;

返回出现第一个颜色不同像素点的一列横坐标作为目标位置。

所述目标位置识别模块,具体用于:

加载全背景图和待验证背景图;

计算全背景图和待验证背景图的像素差异,排序后存储;

已知待拖动拼图面积为x,则取前x个像素点中差异最大的像素点;

对所取的前x个像素点中每列不同的像素点进行计数;

返回不同像素点个数最多的一列的横坐标,即为目标位置。

所述目标位置识别模块中,计算全背景图和待验证背景图的像素差异,包括以下过程:遍历取到全背景图、待验证背景图的各像素点,将全背景图与待验证背景图对应的像素点的像素值pixel分别做差,得到整体差异。

注意,上述内容仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其它等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1