一种开放平台访问的频率控制方法和系统、频率服务器与流程

文档序号:15779211发布日期:2018-10-30 21:12阅读:127来源:国知局

本发明涉及互联网通信技术领域,尤其涉及一种开放平台访问的频率控制方法和系统、频率服务器。



背景技术:

在互联网时代,将网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为称作开放应用程序编程接口(Open API),提供开放应用程序编程接口(API,Application Programming Interface)的平台称为开放平台。通过开放平台,网站不仅能够提供对Web网页的简单访问,还可以进行复杂的数据交互,将其Web网站转换为与操作系统等价的开发平台。第三方开发者可以基于这些已经存在的、公开的Web网站而开发丰富多彩的应用。

互联网中出现的开放平台如微博开放平台、社会性网络服务(SNS,Social Networking Services)开放平台、网页搜索开放平台等等。第三方通过开放平台提供的一系列API接口来访问开放平台的服务系统。为保证API服务的稳定性、易用性和可控性,需要对各个应用程序API的调用进行频率的检测和控制。

现有技术通过限制单位时间内应用程序和用户的访问次数,来控制API的调用频率。然而,这种频率控制并没有考虑到第三方的恶意调用对正常访问开放平台的不利影响。例如:假设API服务每分钟可以10000次的调用,每个用户(User)可以调用每个应用程序(App,Application)服务的次数为1000次,那么正常情况下User持续调用时,API服务最大可以支持10个User/每分钟;如果某第三方恶意注册10个应用,并持续进行调用,那么这种情况下显然只允许1个User/每分钟,从而会导致其他合法的请求访问失败。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种开放平台访问的频率控制方法和系统、频率服务器,以增强对开放平台访问的频率控制效果,防止API的恶意调用。

为达到上述目的,本发明的技术方案是这样实现的:

本发明提供了一种开放平台访问的频率控制方法,该方法包括:

在接收到第三方对开放平台的应用程序编程接口API调用请求后,依据所述API调用请求携带的应用程序标识AppID、用户标识UserID和网络协议IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态;

依据所述频率统计状态,在确定所述AppID、UserID和IP信息中的至少之一在单位时间内的访问频率超过各自对应的单位时间访问上限时,拒绝所述API调用请求。

较佳的,在依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态之前,该方法还包括:

接收到API调用请求后,检测当前的单位时间内的请求量,并在所述单位时间内的请求量超出预设的请求量阈值时,拒绝所述API调用请求。

较佳的,在依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态之前,该方法还包括:

接收到API调用请求后,检测所述API调用请求携带的AppID、UserID和IP信息的合法性,并在所述AppID、UserID和IP信息中的至少之一没有通过合法性检测时,拒绝所述API调用请求;

其中,检测AppID、UserID和IP信息的合法性,具体为:检测所述AppID是否位于AppID的黑名单中,检测所述UserID是否位于UserID的黑名单中,检测所述IP信息是否位于IP信息的黑名单中。

较佳的,该方法进一步包括:

在确定所述AppID、UserID和IP信息在单位时间内的访问频率都没有超过各自对应的单位时间访问上限时,将所述API调用请求路由到开放平台,并将所述AppID、UserID和IP信息在单位时间内的访问频率分别加1。

较佳的,所述统计相应AppID、UserID和IP信息的频率统计状态还包括:

在每次跳转到下一个单位时间时,重新统计所述AppID、UserID和IP信息在当前的单位时间内的访问频率。

本发明还提供了一种开放平台访问的频率控制系统,该系统包括:前端服务器和频率服务器,

所述前端服务器,用于接收第三方对开放平台的应用程序编程接口API调用请求,并将所述API调用请求路由到所述频率服务器;

所述频率服务器,用于依据所述API调用请求携带的应用程序标识AppID、用户标识UserID和网络协议IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态;依据所述频率统计状态,在确定所述AppID、UserID和IP信息中的至少之一在单位时间内的访问频率超过各自对应的单位时间访问上限时,拒绝所述API调用请求。

较佳的,所述频率服务器进一步用于,在接收到API调用请求后,检测当前的单位时间内的请求量,并在所述单位时间内的请求量超出预设的请求量阈值时,拒绝所述API调用请求。

较佳的,所述频率服务器进一步用于,接收到API调用请求后,检测所述API调用请求携带的AppID、UserID和IP信息的合法性,并在所述AppID、UserID和IP信息中的至少之一没有通过合法性检测时,拒绝所述API调用请求;

其中,检测AppID、UserID和IP信息的合法性,具体为:检测所述AppID是否位于AppID的黑名单中,检测所述UserID是否位于UserID的黑名单中,检测所述IP信息是否位于IP信息的黑名单中。

较佳的,所述频率服务器进一步用于,在确定所述AppID、UserID和IP信息在单位时间内的访问频率都没有超过各自对应的单位时间访问上限时,将所述API调用请求路由到开放平台,并将所述AppID、UserID和IP信息在单位时间内的访问频率分别加1。

较佳的,所述频率服务器进一步用于,在每次跳转到下一个单位时间时,重新统计所述AppID、UserID和IP信息在当前的单位时间内的访问频率。

本发明还提供了一种频率服务器,包括:应用程序编程接口API调用请求接收模块、频率统计状态检测模块和处理模块,

所述API调用请求接收模块,用于接收前端服务器提供的第三方对开放平台的API调用请求;

所述频率统计状态检测模块,用于依据所述API调用请求携带的应用程序标识AppID、用户标识UserID和网络协议IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态;依据所述频率统计状态,在确定所述AppID、UserID和IP信息中的至少之一在单位时间内的访问频率超过各自对应的单位时间访问上限时通知所述处理模块;

所述处理模块,用于依据所述频率统计状态检测模块的通知,拒绝所述API调用请求。

较佳的,所述频率服务器还包括:请求量检测模块,连接所述API调用请求接收模块和处理模块,用于在所述API调用请求接收模块接收到API调用请求后,检测当前的单位时间内的请求量,并在所述单位时间内的请求量超出预设的请求量阈值时,通知所述处理模块;所述处理模块拒绝所述API调用请求。

较佳的,所述频率服务器还包括:合法性检测模块,连接所述API调用请求接收模块和处理模块,用于在所述API调用请求接收模块接收到API调用请求后,检测所述API调用请求携带的AppID、UserID和IP信息的合法性,并在所述AppID、UserID和IP信息中的至少之一没有通过合法性检测时,通知所述处理模块;所述处理模块拒绝所述API调用请求;

其中,检测AppID、UserID和IP信息的合法性,具体为:检测所述AppID是否位于AppID的黑名单中,检测所述UserID是否位于UserID的黑名单中,检测所述IP信息是否位于IP信息的黑名单中。

较佳的,所述频率统计状态检测模块进一步用于,在确定所述AppID、UserID和IP信息在单位时间内的访问频率都没有超过各自对应的单位时间访问上限时,将所述AppID、UserID和IP信息在单位时间内的访问频率分别加1,并通知所述处理模块将所述API调用请求路由到开放平台。

较佳的,所述频率统计状态检测模块进一步用于,在每次跳转到下一个单位时间时,重新统计所述AppID、UserID和IP信息在当前的单位时间内的访问频率。

本发明所提供的一种开放平台访问的频率控制方法和系统、频率服务器,能够增强对开放平台访问的频率控制效果,阻止API的恶意调用,提高API服务的稳定性、易用性和可控性。

附图说明

图1为本发明实施例的一种开放平台访问的频率控制方法的流程图;

图2为本发明实施例的一种开放平台访问的频率控制系统的结构示意图;

图3为本发明实施例的一种频率服务器的结构示意图。

具体实施方式

下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。

本发明实施例提供的一种开放平台访问的频率控制方法,如图1所示,主要包括:

步骤101,在接收到第三方对开放平台的API调用请求后,依据API调用请求携带的应用程序标识(AppID,Application Identity)、用户标识(UserID)和网络协议(IP)信息,分别检测相应AppID、UserID和IP信息的频率统计状态。

前端服务器接收到第三方对开放平台的API调用请求后,将该API调用请求路由到频率服务器;频率服务器在接收到第三方对开放平台的API调用请求后,依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态,具体为:

检测API调用请求中携带的AppID在当前的单位时间内的访问频率(或次数)是否超出了相应的App单位时间访问上限,

检测API调用请求中携带的UserID在当前的单位时间内的访问频率是否超出了相应的用户单位时间访问上限,

检测API调用请求中携带的IP信息在当前的单位时间内的访问频率是否超出了相应的IP单位时间访问上限。

步骤102,依据该频率统计状态,在确定AppID、UserID和IP信息中的至少之一在单位时间内的访问频率超过各自对应的单位时间访问上限时,拒绝该API调用请求。

依据步骤101中检测的频率统计状态,如果AppID在当前的单位时间内的访问频率超出了相应的App单位时间访问上限、或者UserID在当前的单位时间内的访问频率超出了相应的用户单位时间访问上限、或者IP信息在当前的单位时间内的访问频率超出了相应的IP单位时间访问上限,只要满足这三个条件中的任何一个,即确定相应的AppID、UserID或IP信息对API接口的调用过于频繁,从而拒绝相应的API调用请求,向API接口调用方返回频率限制的错误码。API接口调用方根据该错误码,获知API接口调用过于频繁,从而可以及时调整API接口的调用频率,或者申请更高的API接口的频率访问额度。

其中,AppID在当前的单位时间内的访问频率,即为在当前的单位时间内,所有用户在使用该App的过程中,引发App调用API接口的总次数;

UserID在当前的单位时间内的访问频率,即为在当前的单位时间内,该UserID在使用所有App的过程中,引发App调用API接口的总次数;

IP信息在当前的单位时间内的访问频率,即为在当前的单位时间内,该IP信息在使用所有App的过程中,引发App调用API接口的总次数。

作为本发明的一种较佳实施方式,在接收到API调用请求后,且依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态之前,还可以包括以下处理:

检测当前的单位时间内的请求量,并在该单位时间内的请求量超出预设的请求量阈值时,直接拒绝该API调用请求。

作为本发明的另一种较佳实施方式,在接收到API调用请求后,且依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态之前,还可以包括以下处理:

检测API调用请求携带的AppID、UserID和IP信息的合法性,并在AppID、UserID和IP信息中的至少之一没有通过合法性检测时,拒绝该API调用请求;

其中,检测AppID、UserID和IP信息的合法性,具体为:检测AppID是否位于AppID的黑名单中,检测UserID是否位于UserID的黑名单中,检测IP信息是否位于IP信息的黑名单中。

UserID的黑名单是通过对各个UserID调用API接口的行为进行监控,由存在恶意调用行为的UserID所组成的黑名单;

AppID的黑名单是通过对各个AppID调用API接口的行为进行监控,由存在恶意调用行为的AppID所组成的黑名单;

IP信息的黑名单是通过对各个IP信息调用API接口的行为进行监控,由存在恶意调用行为的IP信息所组成的黑名单。

上述恶意调用行为包括:在若干个(或者连续若干个)单位时间内的访问频率超出相应的单位时间访问上限等等。

需要说明的是,上述检测请求量的相关处理、以及检测合法性的相关处理可以结合使用,且这两种处理的执行没有先后顺序的限制。在接收到API调用请求后,可以先执行检测请求量的相关处理,再执行检测合法性的相关处理;也可以先执行检测合法性的相关处理,再执行检测请求量的相关处理;还可以两种处理同时执行。

此外,在确定AppID、UserID和IP信息在单位时间内的访问频率都没有超过各自对应的单位时间访问上限时,确定对应的访问为正常访问,从而将该API调用请求路由到开放平台,并将AppID、UserID和IP信息在单位时间内的访问频率分别加1。

而且,在每次跳转到下一个单位时间时,都需要重新统计AppID、UserID和IP信息在当前的单位时间内的访问频率。即在每次跳转到下一个单位时间时,所有统计AppID、UserID和IP信息在当前的单位时间内的访问频率全部清零,重新开始计数。

对应上述开放平台访问的频率控制方法,本发明的实施例还提供了一种开放平台访问的频率控制系统,如图2所示,该系统包括:前端服务器10和频率服务器20。

其中,前端服务器10,用于接收第三方对开放平台的API调用请求,并将该API调用请求路由到频率服务器20;

频率服务器20,用于依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态;依据该频率统计状态,在确定AppID、UserID和IP信息中的至少之一在单位时间内的访问频率超过各自对应的单位时间访问上限时,拒绝该API调用请求。

较佳的,频率服务器20还可用于,在接收到API调用请求后,检测当前的单位时间内的请求量,并在该单位时间内的请求量超出预设的请求量阈值时,拒绝该API调用请求。

较佳的,频率服务器20还可用于,在接收到API调用请求后,检测API调用请求携带的AppID、UserID和IP信息的合法性,并在AppID、UserID和IP信息中的至少之一没有通过合法性检测时,拒绝该API调用请求;

其中,检测AppID、UserID和IP信息的合法性,具体为:检测该AppID是否位于AppID的黑名单中,检测该UserID是否位于UserID的黑名单中,检测该IP信息是否位于IP信息的黑名单中。

较佳的,频率服务器20还可用于,在确定AppID、UserID和IP信息在单位时间内的访问频率都没有超过各自对应的单位时间访问上限时,将该API调用请求路由到开放平台,并将AppID、UserID和IP信息在单位时间内的访问频率分别加1。

较佳的,频率服务器20还可用于,在每次跳转到下一个单位时间时,重新统计AppID、UserID和IP信息在当前的单位时间内的访问频率。

此外,作为本发明的一种较佳实施方式,频率服务器20还可进一步包含图3所示的结构。如图3所示,频率服务器20主要包括:API调用请求接收模块21、频率统计状态检测模块22和处理模块23。

其中,API调用请求接收模块21,用于接收前端服务器10提供的第三方对开放平台的API调用请求;

频率统计状态检测模块22,用于依据API调用请求携带的AppID、UserID和IP信息,分别检测相应AppID、UserID和IP信息的频率统计状态;依据该频率统计状态,在确定AppID、UserID和IP信息中的至少之一在单位时间内的访问频率超过各自对应的单位时间访问上限时通知处理模块23;

处理模块23,用于依据频率统计状态检测模块22的通知,拒绝该API调用请求。

较佳的,频率服务器20还可进一步包括:请求量检测模块24,连接API调用请求接收模块21和处理模块23,用于在API调用请求接收模块21接收到API调用请求后,检测当前的单位时间内的请求量,并在单位时间内的请求量超出预设的请求量阈值时,通知23处理模块;处理模块23拒绝该API调用请求。

较佳的,频率服务器20还可进一步包括:合法性检测模块24,连接API调用请求接收模块21和处理模块23,用于在API调用请求接收模块21接收到API调用请求后,检测API调用请求携带的AppID、UserID和IP信息的合法性,并在AppID、UserID和IP信息中的至少之一没有通过合法性检测时,通知处理模块23;处理模块23拒绝该API调用请求;

其中,检测AppID、UserID和IP信息的合法性,具体为:检测AppID是否位于AppID的黑名单中,检测UserID是否位于UserID的黑名单中,检测IP信息是否位于IP信息的黑名单中。

较佳的,频率统计状态检测模块22进一步用于,在确定AppID、UserID和IP信息在单位时间内的访问频率都没有超过各自对应的单位时间访问上限时,将AppID、UserID和IP信息在单位时间内的访问频率分别加1,并通知处理模块23将该API调用请求路由到开放平台。

较佳的,频率统计状态检测模块22进一步用于,在每次跳转到下一个单位时间时,重新统计AppID、UserID和IP信息在当前的单位时间内的访问频率。

综上所述,本发明的实施例通过AppID、UserID和IP信息的多维度频率检测,能够增强对开放平台访问的频率控制效果,阻止API的恶意调用,提高API服务的稳定性、易用性和可控性。

此外,本发明的实施例适用于微博开放平台、SNS开放平台、网页搜索开放平台等任意形式的为第三方提供API接口调用的开放平台。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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