一种获取验证码的方法及服务器与流程

文档序号:16312107发布日期:2018-12-19 05:19阅读:282来源:国知局
一种获取验证码的方法及服务器与流程

本申请涉及计算机技术领域,尤其涉及一种获取验证码的方法及服务器。

背景技术

目前,为了提高安全性及防止机器人恶意操作,往往需要用户输入验证码来保证网络的安全登录。实际上,网络登录的安全级别会有不同,越高级别的安全性要求,所生成的验证码干扰越强。

然而,在进行自动化测试时,比如与下载文件相关的自动化测试,需要通过机器自动填写验证码,为了正常的实现自动化测试,现有技术通过图像识别,识别出具体的验证码内容并进行填写,从而实现自动化测试。但是,越高安全级别的网络登录,机器在进行图像识别时,其图像识别成功率就越低,即识别正确率越低,这使得自动化测试难以高效的执行,甚至由于不能正确识别出验证码,导致自动化测试不能顺利执行。



技术实现要素:

本申请实施例的主要目的在于提供一种获取验证码的方法及服务器,能够准确的获取验证码。

本申请实施例提供的一种获取验证码的方法,所述方法应用于一种服务器,包括:

接收到客户端发送的第一签名数据,并对所述第一签名数据进行验证;

当对所述第一签名数据验证通过后,向所述客户端返回验证通过通知;

若接收到所述客户端发送的登录请求,则对所述登录请求中携带的用户名和密码进行验证;

当对所述用户名和所述密码验证通过后,向所述客户端返回所述登录请求所请求的验证码。

可选的,所述第一签名数据是所述客户端利用签名生成参数所生成的,所述签名生成参数包括令牌、时间戳、随机数中的至少一个参数。

可选的,所述第一签名数据按照下述方式生成:

将所述签名生成参数中的各个参数进行字典排序;

将排序结果进行加密,并将加密结果转换为字符串签名,作为所述第一签名数据。

可选的,所述方法还包括:

接收所述客户端发送的所述签名生成参数;

则,所述对所述第一签名数据进行验证,包括:

按照所述第一签名数据的生成方式,利用所述签名生成参数生成第二签名数据;

判断所述第一签名数据与所述第二签名数据是否相同;

若相同,则验证通过,若不同,则验证不通过。

可选的,所述方法还包括:

若获取到所述客户端发送的令牌,则确定所述令牌是否是用于调用所述服务器端封装的验证码调用接口的令牌;

若是,则调用所述验证码调用接口,以执行所述接收到客户端发送的第一签名数据的步骤;

若否,则禁止调用所述验证码调用接口。

本申请实施例还提供了一种服务器,包括:

签名验证单元,用于接收到客户端发送的第一签名数据,并对所述第一签名数据进行验证;

通知返回单元,用于当对所述第一签名数据验证通过后,向所述客户端返回验证通过通知;

用户验证单元,用于若接收到所述客户端发送的登录请求,则对所述登录请求中携带的用户名和密码进行验证;

验证码返回单元,用于当对所述用户名和所述密码验证通过后,向所述客户端返回所述登录请求所请求的验证码。

可选的,所述第一签名数据是所述客户端利用签名生成参数所生成的,所述签名生成参数包括令牌、时间戳、随机数中的至少一个参数。

可选的,所述第一签名数据按照下述方式生成:将所述签名生成参数中的各个参数进行字典排序,将排序结果进行加密,并将加密结果转换为字符串签名,作为所述第一签名数据。

可选的,所述服务器还包括:

参数接收单元,用于接收所述客户端发送的所述签名生成参数;

则,所述签名验证单元包括:

签名生成子单元,用于按照所述第一签名数据的生成方式,利用所述签名生成参数生成第二签名数据;

签名判断子单元,用于判断所述第一签名数据与所述第二签名数据是否相同;若相同,则验证通过,若不同,则验证不通过。

可选的,所述服务器还包括:

令牌确定单元,用于若获取到所述客户端发送的令牌,则确定所述令牌是否是用于调用所述服务器端封装的验证码调用接口的令牌;若是,则调用所述验证码调用接口,以利用所述签名验证单元实现所述接收到客户端发送的第一签名数据的功能;若否,则禁止调用所述验证码调用接口。

由此可见,本申请实施例具有如下有益效果:

本申请实施例中,服务器端接收到客户端发送的第一签名数据后对其进行验证,如果验证通过则向客户端返回验证通过通知;然后,当服务器端接收到客户端发送的携带用户名和密码的登录请求后,对该登录请求进行验证,如果服务器端对用户名和密码验证通过后,则向客户端返回登录请求所请求的验证码。其中,服务器端在分别验证了客户端的权限以及登录用户的合法性后,将验证码发送给客户端。可见,本申请实施例是由服务器端直接将正确验证码返回至客户端,无需客户端进行验证码识别,从而使客户端准确的获取到了验证码。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种获取验证码的方法的交互示意图;

图2为本申请实施例提供的一种生成第一签名数据的方法的流程图;

图3为本申请实施例提供的一种令牌验证的流程图;

图4为本申请实施例提供的一种服务器端验证第一签名数据的流程图;

图5为本申请实施例提供的一种服务器的组成示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,为了提高安全性及防止机器人恶意操作,往往需要用户输入验证码来保证网络的安全登录。实际上,网络登录的安全级别会有不同,越高级别的安全性要求,所生成的验证码干扰越强。

然而,在进行自动化测试时,比如与下载文件相关的自动化测试,需要通过机器自动填写验证码,为了正常的实现自动化测试,现有技术通过图像识别,识别出具体的验证码内容并进行填写,从而实现自动化测试。但是,越高安全级别的网络登录,机器在进行图像识别时,其图像识别的成功率就越低,即识别正确率越低,这使得自动化测试难以高效的执行,甚至由于不能正确识别出验证码,导致自动化测试不能顺利执行。

基于此,本申请实施例提供了一种获取验证码的方法,以解决现有技术中在动化测试时验证码识别正确率低的技术问题。

在本实施例中,服务器端封装了一个验证码调用接口,当客户端开启了该验证码调用接口的调用权限并进一步具备了该验证码调用接口的使用权限后,服务器端则可以向客户端返回验证码。其中,该验证码调用接口可以用于在自动化测试时获取验证码的场景。

参见图1,为本实施例提供的一种获取验证码的方法的交互示意图,包括以下步骤s101-s109:

s101:客户端生成第一签名数据。

在本实施例中,验证码调用接口提供信息验证功能,即验证该客户端是否具有调用该接口的权限,其中,客户端生成的第一签名数据可以是判断该客户端是否具有该接口调用权限的一种验证信息,客户端生成第一签名数据的方式应当与验证码调用接口产品包中设置的生成验证信息的方式一致。

在本实施例的一种实现方式中,第一签名数据是客户端利用签名生成参数所生成的。其中,该签名生成参数可以是与验证码调用接口有关、或者是与客户端在生成第一签名数据时的相关情形有关的参数,具体地,该签名生成参数可以包括令牌、时间戳、随机数中的至少一个参数。其中,令牌可以是产品包中用于开启验证码调用接口的调用权限的信息,令牌可以是设置在产品包中的一串字符串;时间戳可以是客户端在生成第一签名数据时的时间点;随机数可以是客户端在生成第一签名数据时随机设置的数字。

在本实施例的一种实现方式中,如图2所示的生成第一签名数据的方法的流程示意图,可以包括以下步骤s201-s202:

s201:将签名生成参数中的各个参数进行字典排序;

字典排序是指将参数排列成序列。首先,选择令牌、时间戳、随机数中的至少一个参数作为签名生成参数,然后将选择的签名生成参数中的各个参数排列成序列,拼成一列字符串。

s202:将排序结果进行加密,并将加密结果转换为字符串签名,作为第一签名数据。

对s201的字典排序结果进行加密的方式可以是进行shal加密,然后,可以将加密结果转换成16进制的字符串签名,并将该字符串签名作为第一签名数据。

s102:客户端向服务器端发送第一签名数据。

客户端向服务器端发送第一签名数据后,服务器可以根据第一签名数据,确定是否能够调用验证码调用接口,即,是否能够开启验证码调用接口的调用权限。

在本实施例中,客户端在向服务器端发送第一签名数据的同时,也可以向服务器端发送用于生成该第一签名数据的签名生成参数。

其中,需要判断签名生成参数中是否包括用于开启验证码调用接口调用权限的令牌,如果包括,则表示客户端向服务器端发送了该令牌以开启验证码调用接口的调用权限。如果不包括,则客户端在向服务器端发送第一签名数据以及签名生成参数之前需要先向服务器端发送令牌以开启验证码调用接口的调用权限。

s103:服务器端接收到客户端发送的第一签名数据,并对第一签名数据进行验证。

在本实施例中,服务器端在对第一签名数据进行验证之前,需要先验证令牌的正确性,以确定能否开启该验证码调用接口的调用权限。

因此,服务器端需要对接收到的令牌进行验证,可以包括如下步骤s301-s304:

s301:服务器获取到所述客户端发送的令牌。

s302:服务器判断该令牌是否是用于调用所述服务器端封装的验证码调用接口的令牌;若是,则执行s303,若否,则执行s304。

服务器端对接收到的令牌进行验证,判断该令牌是否是用于开启验证码调用接口的调用权限的令牌。如果是,则执行s303,如果不是,则执行s304。

s303:服务器调用所述验证码调用接口,以便执行步骤s103。

如果是,则说明该令牌是用于开启验证码调用接口的调用权限的令牌,此时便可以调用该验证码调用接口。

s304:服务器禁止调用所述验证码调用接口。

如果不是,则说明该令牌不是用于开启验证码调用接口的调用权限的令牌,则禁止调用验证码调用接口。即,开启验证码调用接口的调用权限失败,此时服务器端可向客户端发送无接口调用权限的通知,并结束调用验证码获取接口的进程。

在服务器端验证该令牌正确开启了验证码调用接口的调用权限后,服务器端对第一签名数据进行验证。

在本实施例的一种实现方式中,如图4所示的服务器端验证第一签名数据的流程图,可以包括步骤s401-s404:

s401:按照第一签名数据的生成方式,利用签名生成参数生成第二签名数据。

服务器端按照客户端利用签名生成参数生成第一签名数据的方式,利用该接收到的签名生成参数生成第二签名数据。

s402:判断所述第一签名数据与所述第二签名数据是否相同,若相同,则执行步骤s403,若不同,则执行步骤s404。

s403:验证通过。

若验证通过,则说明该客户端具备了该验证码调用接口的使用权限。

s404:验证不通过。

对于步骤s402-s404,由于可能会出现在传输过程中第一数据签名或者签名生成参数被网络篡改的情形,因此第一签名数据可能与第二签名数据不相同。判断第一签名数据与第二签名数据是否相同,如果相同,则说明第一数据签名与签名生成参数在传输过程中未被网络篡改,则验证通过,从而具备了该验证码调用接口的使用权限;如果不相同,则说明第一数据签名或者签名生成参数在传输过程中被网络篡改,则验证不通过,从而不具备该验证码调用接口的使用权限,此时服务器端可向客户端发送验证未通过的通知,并结束调用验证码获取接口的进程。

s104:当服务器端对第一签名数据验证通过后,向客户端返回验证通过通知。

服务器端在对第一签名数据验证通过后,将向客户端返回验证通过通知以通知用户进行下一步操作。

s105:客户端接收到验证通过通知后,接收用户提供的用户名和密码。

其中,在客户端接收到验证通过通知后,还需要对登录用户进行身份认证,此时用户可以提供登录用户名和密码,客户端接收该登录用户名和密码。

s106:客户端向服务器端发送携带用户名和密码的登录请求。

客户端接收到该登录用户名和密码后,向服务器端发送登录请求,其中,该登录请求是获取验证码的请求,并且该登录请求携带了用户名和密码。

s107:服务器端接收到客户端发送的登录请求后,对登录请求中携带的用户名和密码进行验证。

服务器端在接收到客户端发送的登录请求后,会对登录请求中携带的用户名和密码进行验证,以对登录用户进行身份认证,即,认证该登录用户是否具有获取验证码的权限。

s108:当对所述用户名和所述密码验证通过后,向所述客户端返回所述登录请求所请求的验证码。

如果服务器端验证登录信息中携带的用户名和密码正确,则说明该登录用户合法,验证通过。此时服务器端通过验证码调用接口,向客户端返回登录请求中所请求的验证码;如果用户名和密码错误,则说明该登录用户不合法,验证未通过,此时服务器端可向客户端发送验证未通过的通知,并结束调用验证码调用接口的进程。

其中,服务器端可以以session信息的方式,向客户端返回验证码。

s109:客户端接收到验证码。

当客户端接收到验证码后,便可以继续后续的自动化测试。

综上,在本申请实施例提供的一种获取验证码的方法中,服务器端接收到客户端发送的第一签名数据后对其进行验证,如果验证通过则向客户端返回验证通过通知;然后,当服务器端接收到客户端发送的携带用户名和密码的登录请求后,对该登录请求进行验证,如果服务器端对用户名和密码验证通过后,则向客户端返回登录请求所请求的验证码。其中,服务器端在分别验证了客户端的权限以及登录用户的合法性后,将验证码发送给客户端。可见,该种方法是由服务器端直接将正确验证码返回至客户端,无需客户端进行验证码识别,从而使客户端准确的获取到了验证码。

参见图5,为申请本实施例提供的一种服务器的组成示意图,该服务器包括:

签名验证单元501,用于接收到客户端发送的第一签名数据,并对所述第一签名数据进行验证;

通知返回单元502,用于当对所述第一签名数据验证通过后,向所述客户端返回验证通过通知;

用户验证单元503,用于若接收到所述客户端发送的登录请求,则对所述登录请求中携带的用户名和密码进行验证;

验证码返回单元504,用于当对所述用户名和所述密码验证通过后,向所述客户端返回所述登录请求所请求的验证码。

在本实施例的一种实现方式中,所述第一签名数据是所述客户端利用签名生成参数所生成的,所述签名生成参数包括令牌、时间戳、随机数中的至少一个参数。

在本实施例的一种实现方式中,所述第一签名数据按照下述方式生成:将所述签名生成参数中的各个参数进行字典排序,将排序结果进行加密,并将加密结果转换为字符串签名,作为所述第一签名数据。

在本实施例的一种实现方式中,所述服务器还包括:

参数接收单元,用于接收所述客户端发送的所述签名生成参数;

则,所述签名验证单元501包括:

签名生成子单元,用于按照所述第一签名数据的生成方式,利用所述签名生成参数生成第二签名数据;

签名判断子单元,用于判断所述第一签名数据与所述第二签名数据是否相同;若相同,则验证通过,若不同,则验证不通过。

在本实施例的一种实现方式中,所述服务器还包括:

令牌确定单元,用于若获取到所述客户端发送的令牌,则确定所述令牌是否是用于调用所述服务器端封装的验证码调用接口的令牌;若是,则调用所述验证码调用接口,以利用所述签名验证单元501实现所述接收到客户端发送的第一签名数据的功能;若否,则禁止调用所述验证码调用接口。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本申请各个实施例或者实施例的某些部分所述的方法。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的服务器而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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