动态验证方法、装置、计算机设备及存储介质
技术领域
本发明涉及密码技术领域,尤其涉及一种动态验证方法、装置、计算机设备及存储介质。
背景技术
随着科学技术的发展,网络爬虫技术的发展处于一个越来越成熟的地步,但是由于部分的信息或数据涉及到个人隐私及行业的利益,此时,为了避免被网络爬虫技术爬取到涉及个人隐私及行业的利益信息或数据,可以采用验证码的方式区分用户是机器还是人,以防止用户在知晓他人账号的情况下,利用非法机器人程序进行自动爬取。目前,如果进行恶意使用非法机器人程序对信息或数据进行爬取,每一次爬取过程中输入密码之后都会要求通过验证码成功验证之后,才能继续进行后续操作,增加了机器人程序自动爬取等行为的难度。但是,在现有技术中,虽然验证码技术增加了非法机器人程序频繁注入的难度,但主流验证码技术通常通过验证码生成器设置验证码格式之后按照这个格式生成,该验证码格式在使用若干次之后就容易被机器学习摸透规律,从而降低其防泄密效果。因此,寻找一种能够提高机器人程序破解验证过程的难度的技术方案成为本领域技术人员亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种动态验证方法、装置、计算机设备及存储介质,用于提高机器人程序破解验证过程的难度,进而提高验证过程中的安全性能。。
一种动态验证方法,包括:
接收验证请求,自预设字符库中根据预设的选取规则选取随机数量的待识别字符;
根据所述随机数量的所述待识别字符生成验证图片,所述验证图片中包含与多个图片位置对应的图像内容,且每一个与所述图片位置对应的所述图像内容中均包含至少一个所述待识别字符;
自所述验证图片中的所有所述图片位置中随机选取所述图片位置后,将选取的所有所述图片位置按照选取顺序加入展示队列中;
将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置,并在所述预设的展示框中展示所述验证图片中与所述图片位置对应的所述图像内容;
接收用户针对所述展示框中展示的所述图像内容输入的验证字符,并判断所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符是否一致;
在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符并不一致时,则提示本次验证失败;
在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符一致时,则将字符验证成功次数加一,并在所述字符验证成功次数大于或等于预设的验证次数阈值时,确认验证成功。
一种动态验证装置,包括:
选取模块,用于接收验证请求,自预设字符库中根据预设的选取规则选取随机数量的待识别字符;
生成模块,用于根据所述随机数量的所述待识别字符生成验证图片,所述验证图片中包含与多个图片位置对应的图像内容,且每一个与所述图片位置对应的所述图像内容中均包含至少一个所述待识别字符;
加入模块,用于自所述验证图片中的所有所述图片位置中随机选取所述图片位置后,将选取的所有所述图片位置按照选取顺序加入展示队列中;
展示模块,用于将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置,并在所述预设的展示框中展示所述验证图片中与所述图片位置对应的所述图像内容;
第一判断模块,用于接收用户针对所述展示框中展示的所述图像内容输入的验证字符,并判断所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符是否一致;
提示模块,用于在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符并不一致时,则提示本次验证失败;
确认模块,用于在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符一致时,则将字符验证成功次数加一,并在所述字符验证成功次数大于或等于预设的验证次数阈值时,确认验证成功。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述动态验证方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述动态验证方法。
上述动态验证方法、装置、计算机设备及存储介质,接收验证请求,自预设字符库中根据预设的选取规则选取随机数量的待识别字符;根据所述随机数量的所述待识别字符生成验证图片,所述验证图片中包含与多个图片位置对应的图像内容,且每一个与所述图片位置对应的所述图像内容中均包含至少一个所述待识别字符;自所述验证图片中的所有所述图片位置中随机选取所述图片位置后,将选取的所有所述图片位置按照选取顺序加入展示队列中;将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置,并在所述预设的展示框中展示所述验证图片中与所述图片位置对应的所述图像内容;接收用户针对所述展示框中展示的所述图像内容输入的验证字符,并判断所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符是否一致;在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符并不一致时,则提示本次验证失败;在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符一致时,则将字符验证成功次数加一,并在所述字符验证成功次数大于或等于预设的验证次数阈值时,确认验证成功。本提案通过自预设字符库中根据预设的选取规则选取随机数量的待识别字符,且在自验证图片中的所有图片位置中随机选取图片位置,并在字符验证成功次数大于或等于预设的验证次数阈值时,才确认验证成功。本提案中,针对每一个验证请求,都可以随机生成至少一个验证图片,且每一个验证图片中的图片格式以及待识别字符的选取规律均有所区别,且在验证过程中,被选取进行展示的验证图片中的图像内容的选取顺序也是随机的,通过具有区别的上述验证图片中的图像内容对不同的验证请求进行验证,可以大大提高机器人程序破解验证过程的难度,从而降低了数据信息泄密的可能性,并提高验证过程中的安全性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中动态验证方法的一应用环境示意图;
图2是本发明一实施例中动态验证方法的一流程图;
图3是本发明一实施例中动态验证方法的步骤S20的流程示意图;
图4是本发明一实施例中动态验证方法的步骤S40的流程示意图;
图5是本发明一实施例中动态验证方法的步骤S50的流程示意图;
图6是本发明一实施例中动态验证方法的步骤S70的流程示意图;
图7是本发明一实施例中动态验证装置的结构示意图;
图8是本发明一实施例中生成模块的结构示意图;
图9是本发明另一实施例动态验证装置的结构示意图;
图10是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的动态验证方法,可应用在如图1的应用环境中,其中,客户端通过网络与服务器进行通信。其中,客户端可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种动态验证方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S10,接收验证请求,自预设字符库中根据预设的选取规则选取随机数量的待识别字符。
可以理解的是,待识别字符预先被存储在预设字符库中,且待识别字符包括但不限于英语字母(如a到z等)、阿拉伯数字(如0到9等)、中文汉字(如一到九等)和标点符号(如!等)等字符;在本实施例中,需要根据预设的选取规则从预设字符库中选取待识别字符;预设的选取规则可以为随机选择随机数量的待识别字符,也可以通过选择器按照预先设置的选择规则来进行选择;比如,在预设的数量范围中随机确定一个随机数量之后,根据随机数量随机选取待识别字符。可理解地,自预设字符库中选取的待识别字符可以是完全不重复,但也可以被重复进行选取,比如,对应于一次验证请求,可能自预设字符库中随机选取了两次待识别字符“s”。
在本实施例中,预设的选取规则、随机数量和多种待识别字符都属于一种变化的因素,因此可以增加机器人程序破解验证过程的难度。
S20,根据所述随机数量的所述待识别字符生成验证图片,所述验证图片中包含与多个图片位置对应的图像内容,且每一个与所述图片位置对应的所述图像内容中均包含至少一个所述待识别字符。
可以理解的是,验证图片是位于图片区域范围内,整个图片区域范围可以被划分成一个坐标系(坐标系中的验证图片被划分为多个图片位置,且验证图片对一个于每一个图片位置均有对应的图像内容,且每一个图像内容中至少包含一个待识别字符,也即,一个验证图片中的图片位置的数量小于或等于选取的待识别字符的随机数量),且验证图片中包含了多个待识别字符,即每个待识别字符都位于该坐标系中,且每个待识别字符又对应于一个唯一图片位置(但一个图片位置对应的图像内容中可能包含两个以上的待识别字符),每个图片位置都可以用在该坐标系中的坐标值来进行描述;验证图片中的待识别字符的字符形式可以根据预设规则被设定其变形量,可以使其在验证图片中以一定变形量进行展示,可以用待识别字符的中心位置描述该待识别字符在坐标系中的坐标值,进而可以根据该待识别字符的坐标值设定其变形量;且生成的验证图片中的待识别字符要不影响到正常人的辨识度。
进一步地,如图3所示,所述步骤S20,包括:
S201,获取用于生成所述验证图片的图片格式的图片参数,所述图片参数包括所述待识别字符在所述验证图片中的所述图片位置的数量、各所述图片位置的排列方式、显示字体、显示大小、显示背景、显示颜色和干扰元素中的一种或多种。
在此步骤中,图片格式包含了所有的图片参数的整合,包括但不限定于为待识别字符在验证图片中的图片位置的数量、各图片位置的排列方式(比如,各图片位置按照每一行为5个的方式从左至右进行排列)、验证图片中的显示字体(比如宋体、楷体等)、显示大小(比如三号、四号字体等)、显示背景(预设的多种背景色板中选取)、显示颜色和干扰元素(用于干扰机器人程序识别的一些干扰元素,比如悬浮在验证图片的显示背景上的干扰点、干扰线条等)中的一种或多种。
S202,为每一项所述图片参数设置与其对应的多种生成规则。
在此步骤中,生成规则是可以被提前设置的,其数量也可以根据需求量被进行设定,比如,各图片参数对应的生成规则的数量可以被设定为10个、15个和20个等。
S203,从与每一项所述图片参数对应的多种所述生成规则中各自随机选取一种所述生成规则之后,根据随机选取的所有所述生成规则生成所述验证图片的所述图片格式。
在此步骤中,可以从上述步骤S202中提到的与每一项图片参数对应的多种生成规则中,随机选取每一项图片参数对应的其中一种生成规则;可理解地,虽然图片位置的数量对应的生成规则为多种,但是用户必须从多种生成规则中的小于或等于随机数量的生成规则中随机选取一种(因为图片位置的数量必须小于或等于待识别字符的数量,以保证每一个图片位置中必须包含至少一个待识别字符);比如,图片位置的数量(对应的生成规则)可以为2-100中任意一个自然数,也即图片位置的数量对应了一共99种生成规则,此时,若随机数量为8个,则只能从自然数2-8中随机选取一个(若大于8,已经大于待识别字符的随机数量)作为验证图片中对应于图片位置的数量的生成规则;可理解地,对于各图片位置的排列方式来说,举例如下:若选取的图片位置的数量为10个,图片位置的排列方式为每行5个且从左至右排列,此时,若图片区域范围为边长是20mm的正方形,那么后续步骤S206中在图片区域范围中图片位置的排列方式将为按照2*5的方式排列。在本实施例中,需要将被随机选取到的每一项图片参数对应的其中一种生成规则整合到一起,就可以得到包含多种生成规则的组合规则。可以根据此组合规则生成验证图片的图片格式。
S204,根据所述随机数量以及所述图片格式中所述图片位置的数量确定各所述待识别字符与所述图片位置的对应关系。
在此步骤中,待识别字符的随机数量已被确定,生成图片格式的图片位置的数量也已被确定,此时,由于一个图片位置中必须包含至少一个待识别字符,根据该项原则,服务器可以将随机数量的待识别字符与各图片位置随机进行关联之后,确定各待识别字符与图片位置的对应关系。比如,随机数量为10,图片位置的数量为8,此时,首先从选取的10个待识别字符中随机选取8个,并将其一一随机对应至8个图片位置,再将剩余的两个待识别字符随机放置(两个一起放置或者将两个分开放置均可)至任意的图片位置中并与该图片位置关联。
S205,获取可供生成所述验证图片的图片区域范围。
在此步骤中,图片区域范围为自预设的,且图片区域范围不局限于任何形状,比如形状可以为正方形、圆形和椭圆形等。验证图片仅能在该图片区域范围内生成。
S206,按照所述图片格式在所述图片区域范围内生成包含所有所述待识别字符的所述验证图片,且所述验证图片中的每一个所述待识别字符均按照各所述待识别字符与所述图片位置的对应关系被放置于所述验证图片中的各所述图片位置中。
在此步骤中,从上述步骤S203确定出来的图片格式,服务器可以根据此图片格式生成包含各项图片参数的验证图片,同时验证图片中的每一个待识别字符会按照各待识别字符与图片位置的对应关系被放置于验证图片中的各图片位置中。
S30,自所述验证图片中的所有所述图片位置中随机选取所述图片位置后,将选取的所有所述图片位置按照选取顺序加入展示队列中。
可以理解的是,此处选择的图片位置不可重复,因为重复进行选取的图片位置在展示框中展示的内容将会一致,因此会降低验证效果,且重新进行选择不重复的图片位置显然可以提升其验证效果;可理解地,展示队列中各个图片位置的展示顺序是根据选取顺序被进行排列。
S40,将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置,并在所述预设的展示框中展示所述验证图片中与所述图片位置对应的所述图像内容。
可以理解的是,可以通过设置层叠样式表(即css)中的代码去规定预设的展示框的宽度和高度(每一个验证请求可以对应于一个展示框格式),但预设的展示框要完整展示验证图片中的一个图片位置对应的图像内容(也即该图片位置对应的图像内容包括待识别字符及其背景等),又不会展示到其它图片位置中的图像内容;图片位置对应的图像内容不仅包括待识别字符,而且还可能包括待识别字符的数量、背景和颜色中的一种或多种。
进一步地,如图4所示,为了准确对所述展示框进行偏移,所述将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置之前,还包括:
S401,在所述图片区域范围内设立坐标系,并确定每一个所述图片位置在所述坐标系中的坐标值。
可以理解的是,由于图片区域范围不局限于任何形状,此时服务器可以根据图片区域范围的形状来建立一个坐标系(此坐标系可以只取第一象限),比如,当图片区域范围为规则形状时,如长方形,此时可以用长方形的其中一边为横坐标,与横坐标成直角的一边为纵坐标,即每一个图片位置都可以用坐标系中的坐标值来进行描述。
S402,根据各所述坐标值,确定层叠样式表中的所述展示框在各所述图片位置之间偏移的偏移量。
可以理解的是,层叠样式表(即css)存在改变展示框偏移多少偏移量的代码,而偏移量只需取决坐标值的变化,比如,第一个图片位置在坐标系中的坐标值为(10,10),第二个图片位置在坐标系中的坐标值为(20,10),即展示框只需向右偏移10个单位(单位可以为px)。
所述步骤S40中,将预设的展示框偏移至展示队列中选取顺序最先的图片位置,包括:
S403,根据所述展示框在各所述图片位置之间偏移的所述偏移量,将所述展示框偏移至所述展示队列中所述选取顺序最先的所述图片位置。
在此步骤中,在第一次将展示框偏移至图片位置时,该展示框可以先位于第一象限以外的位置,如第一象限以外的位置可以为坐标系中的极点坐标值。具体地,服务器会先按照展示队列中选取顺序最先的图片位置,并将展示框根据该图片位置与展示框之间的偏移量偏移至该图片位置。
S50,接收用户针对所述展示框中展示的所述图像内容输入的验证字符,并判断所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符是否一致。
具体地,用户必须按照展示队列中的待识别字符所属的图像内容去依次输入验证字符;且输入错误或者多余的验证字符都可以被认为验证字符与展示框中展示的识别字符不一致;且输入的验证字符与展示框中展示的待识别字符一致,则可以被认为输入了正确的验证字符。
进一步地,如图5所示,为了防止机器人程序通过一定时间的运转,从而摸透所述预设的展示框展示的所述待识别字符,并且为了防止所述用户或者所述机器人程序进行恶意操作去输入验证字符;所述接收用户针对所述展示框中展示的所述图像内容输入的验证字符之后,还包括:
S501,获取所述展示框中展示所述图片位置对应的所述图像内容的第一时间,以及所述用户针对所述展示框中展示的所述图像内容输入所述验证字符的第二时间。
可以理解的是,第二时间应位于第一时间之后。
S502,判断所述第二时间与所述第一时间之间的时间差值是否大于预设的时间阈值。
可以理解的是,此步骤中是提供一个规定的时间(即预设的时间阈值给用户去输入验证字符),目的是为了防止机器人程序通过一定时间的运转去破解和摸透预设的展示框展示的待识别字符。
S503,若所述时间差值大于所述预设的时间阈值,则确定所述用户输入的与所述第二时间对应的所述验证字符无效,并提示所述用户已超时。
可以理解的是,当时间差值大于预设的时间阈值时,则可以说明用户在规定的时间输入验证字符。在另外一实施例中,当时间差值小于或等于预设的时间阈值时,则可以说明用户在规定的时间输入验证字符。
S504,获取自接收到所述验证请求之后所述用户输入的所述验证字符无效的次数,并判断所述验证字符无效的次数是否大于预设的无效次数阈值。
可以理解的是,验证字符无效的次数也有一个限制次数。
S505,若所述验证字符无效的次数大于所述预设的无效次数阈值,则在预设时长内禁止通过与所述用户对应的网际协议地址输入所述验证字符。
可以理解的是,当验证字符无效的次数大于预设的无效次数阈值,则可以说明用户或者机器人程序在进行恶意操作,用户的恶意操作可能是基于无聊,但机器人程序的恶意操作可能是为了破解验证中有关的程序代码;此时服务器可以通过邮件或者短信的方式提示后台预设接收人员验证状态异常。在另外一实施例中,当验证字符无效的次数小于等于预设的无效次数阈值,则可以说明只是用户无意错过规定的时间从而造成验证字符无效。
S60,在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符并不一致时,则提示本次验证失败。
可以理解的是,在存在一次验证字符与展示框中展示的待识别字符不一致时,此时会认为本次验证请求对应的验证失败,并拒绝本次验证请求。此时,若用户还想继续进行验证,将会进入步骤S10中发送下一次验证请求。可理解地,可以记录每一次验证请求的字符验证失败次数,在同一个平台的同一个账户在某个时段(比如一个小时内)的字符验证失败次数超过预设的验证失败次数阈值;或者不同账户通过同一个网际协议地址的字符验证失败次数超过预设的验证失败次数阈值时,可以认为当前可能存在用户或者机器人程序在进行恶意操作,此时可以通过邮件或者短信的方式提示后台预设接收人员验证状态异常。
S70,在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符一致时,则将字符验证成功次数加一,并在所述字符验证成功次数大于或等于预设的验证次数阈值时,确认验证成功。
可以理解的是,在验证字符与展示框中展示的待识别字符一致时,并在字符验证成功次数大于或等于预设的验证次数阈值时,说明用户达到验证成功的要求。
在另外一实施例中,如图6所示,所述步骤S70中,所述将字符验证成功次数加一之后,还包括:
S701,获取所述验证图片中的所述图片位置的数量。
在此步骤中,可以从上述步骤S201获取到图片位置的数量。
S702,在所述字符验证成功次数小于所述预设的验证次数阈值时,则判断所述字符验证成功次数是否达到所述图片位置的数量。
可以理解的是,在字符验证成功次数小于预设的验证次数阈值时,则可以说明用户尚未达到验证成功的要求。此时需要在后续步骤中确定字符验证成功次数是否达到图片位置的数量,进而确定是否需要对应于该次验证请求是否需要更新验证图片(字符验证成功次数达到图片位置的数量时,说明此前的第一个验证图片中的所有图片位置对应的图像内容均已在展示框中展示完毕)。
S703,若所述字符验证成功次数达到所述图片位置的数量,则继续从所述自预设字符库中根据所述预设的选取规则选取所述随机数量的所述待识别字符,并根据所述随机数量的所述待识别字符生成所述验证图片。
在本实施例中,在字符验证成功次数达到图片位置的数量时,即字符验证成功次数等于图片位置的数量,且字符验证成功次数小于预设的验证次数阈值。比如,当图片位置的数量为5个时,若预设的验证次数阈值为8次,此时,当字符验证成功次数为5次时,即代表字符验证成功次数达到了图片位置的数量,且5次字符验证成功次数刚好分别对应展示框分别展示的验证图片的各个不重复的图片位置中的图像内容。用户在针对不同的5个图片位置输入与图像内容中包含的待识别字符一致的验证字符之后,在验证图片中已经不再具备可以用展示框展示的图像内容;因此,当字符验证成功次数达到图片位置的数量时,服务器就必须进入步骤S10中重新更新验证图片中的待识别字符,也即重新返回步骤S10中自预设字符库中根据预设的选取规则自预设字符库中选取待识别字符,并执行其后续步骤,生成新的验证图片(包括验证图片中的新的待识别字符和新的图片位置等)。可以理解的是,本步骤中选取的待识别字符数量也是随机的。
S704,若所述字符验证成功次数未达到所述图片位置的数量,则继续将所述预设的展示框偏移至所述展示队列中所述选取顺序最先的所述图片位置。
可以理解的是,当字符验证成功次数未达到预设的更新次数时,则无需对验证图片中的待识别字符进行更新。仅需要返回至步骤S40中进行将展示框偏移值验证图片中的下一个图片位置以展示其对应的图像内容即可。
综上所述,上述提供了一种动态验证方法,接收验证请求,自预设字符库中根据预设的选取规则选取随机数量的待识别字符;根据所述随机数量的所述待识别字符生成验证图片,所述验证图片中包含与多个图片位置对应的图像内容,且每一个与所述图片位置对应的所述图像内容中均包含至少一个所述待识别字符;自所述验证图片中的所有所述图片位置中随机选取所述图片位置后,将选取的所有所述图片位置按照选取顺序加入展示队列中;将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置,并在所述预设的展示框中展示所述验证图片中与所述图片位置对应的所述图像内容;接收用户针对所述展示框中展示的所述图像内容输入的验证字符,并判断所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符是否一致;在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符并不一致时,则提示本次验证失败;在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符一致时,则将字符验证成功次数加一,并在所述字符验证成功次数大于或等于预设的验证次数阈值时,确认验证成功。本提案通过自预设字符库中根据预设的选取规则选取随机数量的待识别字符,且在自验证图片中的所有图片位置中随机选取图片位置,并在字符验证成功次数大于或等于预设的验证次数阈值时,才确认验证成功。本提案中,针对每一个验证请求,都可以随机生成至少一个验证图片,且每一个验证图片中的图片格式以及待识别字符的选取规律均有所区别,且在验证过程中,被选取进行展示的验证图片中的图像内容的选取顺序也是随机的,通过具有区别的上述验证图片中的图像内容对不同的验证请求进行验证,可以大大提高机器人程序破解验证过程的难度,从而可以降低了数据信息泄密的可能性和提高验证过程中的安全性能。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种动态验证装置,该动态验证装置与上述实施例中动态验证方法一一对应。如图7所示,该动态验证装置包括选取模块11、生成模块12、加入模块13、展示模块14、第一判断模块15、提示模块16和确认模块17。各功能模块详细说明如下:
选取模块11,用于接收验证请求,自预设字符库中根据预设的选取规则选取随机数量的待识别字符;
生成模块12,用于根据所述随机数量的所述待识别字符生成验证图片,所述验证图片中包含与多个图片位置对应的图像内容,且每一个与所述图片位置对应的所述图像内容中均包含至少一个所述待识别字符;
加入模块13,用于自所述验证图片中的所有所述图片位置中随机选取所述图片位置后,将选取的所有所述图片位置按照选取顺序加入展示队列中;
展示模块14,用于将预设的展示框偏移至所述展示队列中选取顺序最先的所述图片位置,并在所述预设的展示框中展示所述验证图片中与所述图片位置对应的所述图像内容;
第一判断模块15,用于接收用户针对所述展示框中展示的所述图像内容输入的验证字符,并判断所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符是否一致;
提示模块16,用于在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符并不一致时,则提示本次验证失败;
确认模块17,用于在所述验证字符与所述展示框中展示的所述图像内容中包含的所述待识别字符一致时,则将字符验证成功次数加一,并在所述字符验证成功次数大于或等于预设的验证次数阈值时,确认验证成功。
进一步地,如图8所示,所述生成模块包括:
第一获取子模块,用于获取用于生成所述验证图片的图片格式的图片参数,所述图片参数包括所述待识别字符在所述验证图片中的所述图片位置的数量、各所述图片位置的排列方式、显示字体、显示大小、显示背景、显示颜色和干扰元素中的一种或多种;
设置子模块,用于为每一项所述图片参数设置与其对应的多种生成规则;
选取子模块,用于从与每一项所述图片参数对应的多种所述生成规则中各自随机选取一种所述生成规则之后,根据随机选取的所有所述生成规则生成所述验证图片的所述图片格式;
确定子模块,用于根据所述随机数量以及所述图片格式中所述图片位置的数量确定各所述待识别字符与所述图片位置的对应关系;
第二获取子模块,用于获取可供生成所述验证图片的图片区域范围;
生成子模块,用于按照所述图片格式在所述图片区域范围内生成包含所有所述待识别字符的所述验证图片,且所述验证图片中的每一个所述待识别字符均按照各所述待识别字符与所述图片位置的对应关系被放置于所述验证图片中的各所述图片位置中。
进一步地,如图9所示,所述动态验证装置还包括:
第一确定模块,用于在所述图片区域范围内设立坐标系,并确定每一个所述图片位置在所述坐标系中的坐标值;
第二确定模块,用于根据各所述坐标值,确定层叠样式表中的所述展示框在各所述图片位置之间偏移的偏移量;
第一偏移模块,用于根据所述展示框在各所述图片位置之间偏移的所述偏移量,将所述展示框偏移至所述展示队列中所述选取顺序最先的所述图片位置。
进一步地,所述动态验证装置还包括:
第一获取模块,用于获取所述展示框中展示所述图片位置对应的所述图像内容的第一时间,以及所述用户针对所述展示框中展示的所述图像内容输入所述验证字符的第二时间;
第二判断模块,用于判断所述第二时间与所述第一时间之间的时间差值是否大于预设的时间阈值;
第三确定模块,用于若所述时间差值大于所述预设的时间阈值,则确定所述用户输入的与所述第二时间对应的所述验证字符无效,并提示所述用户已超时;
第二获取模块,用于自接收到所述验证请求之后所述用户输入的所述验证字符无效的次数,并判断所述验证字符无效的次数是否大于预设的无效次数阈值;
禁止模块,用于若所述验证字符无效的次数大于所述预设的无效次数阈值,则在预设时长内禁止通过与所述用户对应的网际协议地址输入所述验证字符。
进一步地,所述动态验证装置还包括:
第三获取模块,用于获取所述验证图片中的所述图片位置的数量;
第三判断模块,用于在所述字符验证成功次数小于所述预设的验证次数阈值时,则判断所述字符验证成功次数是否达到所述图片位置的数量;
选取模块,用于若所述字符验证成功次数达到所述图片位置的数量,则继续从所述自预设字符库中根据所述预设的选取规则选取所述随机数量的所述待识别字符,并根据所述随机数量的所述待识别字符生成所述验证图片;
第二偏移模块,用于若所述字符验证成功次数未达到所述图片位置的数量,则继续将所述预设的展示框偏移至所述展示队列中所述选取顺序最先的所述图片位置。
关于动态验证装置的具体限定可以参见上文中对于动态验证方法的限定,在此不再赘述。上述动态验证装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储动态验证方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种动态验证方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中动态验证方法的步骤,例如图2所示的步骤S10至步骤S70。或者,处理器执行计算机程序时实现上述实施例中动态验证装置的各模块/单元的功能,例如图7所示模块11至模块17的功能。为避免重复,这里不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中动态验证方法的步骤,例如图2所示的步骤S10至步骤S70。或者,计算机程序被处理器执行时实现上述实施例中动态验证装置的各模块/单元的功能,例如图7所示模块11至模块17的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。