首页> 中国专利> 一种识别web自动化工具的设备、装置及方法

一种识别web自动化工具的设备、装置及方法

摘要

本发明公开一种识别web自动化工具的设备、装置及方法。其中,识别web自动化工具的设备,包括:存储器和处理器;所述存储器,存储javascript检测脚本;所述处理器,向页面中预置所述存储器存储的javascript检测脚本,获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,从所述函数调用栈中查找出设定特征,通过所述设定特征确定所述页面访问方为web自动化工具。本发明提供的方案,能比较有效地识别出web自动化工具。

著录项

  • 公开/公告号CN106250761A

    专利类型发明专利

  • 公开/公告日2016-12-21

    原文格式PDF

  • 申请/专利权人 广州爱九游信息技术有限公司;

    申请/专利号CN201610607509.1

  • 发明设计人 程龙;

    申请日2016-07-28

  • 分类号G06F21/53(20130101);G06F21/56(20130101);

  • 代理机构11452 北京展翼知识产权代理事务所(特殊普通合伙);

  • 代理人屠长存

  • 地址 510665 广东省广州市天河区黄埔大道西平云路163号广电平云广场B塔13楼自编02单元

  • 入库时间 2023-06-19 01:11:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-12-20

    授权

    授权

  • 2017-01-18

    实质审查的生效 IPC(主分类):G06F21/53 申请日:20160728

    实质审查的生效

  • 2016-12-21

    公开

    公开

说明书

技术领域

本发明涉及移动互联网技术领域,具体涉及一种识别web自动化工具的设备、装置及方法。

背景技术

随着移动互联网应用的不断发展,金融、应用服务提供商、电子商务及政府单位等各类机构都将其业务系统移植到web上来。因为越来越多地承载各类客户的核心业务,web成为互联网上最主要的信息发布平台。但是,越来越多的web自动化工具也被开发出来,这些web自动化工具有时会被一些恶意访问者用于作弊。例如某些恶意访问者,用web自动化工具访问web页面,用程序代码构造出用户行为(如点击或拖动鼠标、键盘输入字符、在触屏上点击或拖动等),去参与页面上的活动、发垃圾帖和垃圾评论、进行刷单或刷赞、领取虚拟物品等资源,整个过程几乎全是程序自动化完成的,无需访问者像正常用户那样手动操作。这些利用web自动化工具完成的作弊行为,会给互联网产品服务提供方,带来经济损失以及口碑上的负面影响,同时也有损正常用户的体验。因此,如何识别这类web自动化工具,是当前面临的一个重要问题。

现有的针对web自动化工具的识别方法,仅能检测一些较明显的特征,且这些特征很容易被攻击者规避。例如,现有的传统识别方法是读取访问者所使用的浏览器的一些全局变量,如浏览器用户代理navigator.userAgent字符串,判断其中是否带有web自动化工具的关键字,根据带有web自动化工具的关键字判断出该浏览器为web自动化工具。但是,不少web自动化工具可以轻易修改自己的navigator.userAgent,伪装成正常的浏览器。另外,越来越多的web自动化工具也带有沙箱机制,其加载的web页面完全运行在沙箱环境中,沙箱环境跟正常浏览器环境极为相似,即使发现了沙箱内某种微妙的环境差异,如某个全局属性与正常浏览器不同,恶意访问者也能很轻易地通过修改沙箱内对应的环境变量,从而迅速规避被检测和识别。

综上所述,现有的识别web自动化工具的方法还无法十分有效地识别出web自动化工具。

发明内容

为解决上述技术问题,本发明提供一种识别web自动化工具的设备、装置及方法,能比较有效地识别出web自动化工具。

根据本发明的一个方面,提供一种识别web自动化工具的设备,包括:存储器和处理器;

所述存储器,存储javascript检测脚本;

所述处理器,向页面中预置所述存储器存储的javascript检测脚本,获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,从所述函数调用栈中查找出设定特征,通过所述设定特征确定所述页面访问方为web自动化工具。

优选的,所述处理器从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出设定特征。

根据本发明的另一个方面,提供一种识别web自动化工具的装置,包括:

获取模块,用于获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,其中所述javascript检测脚本预置于所述页面当中;

查找模块,用于从所述获取模块获取的函数调用栈中查找出设定特征;

识别模块,用于通过所述查找模块查找的设定特征确定所述页面访问方为web自动化工具。

优选的,所述查找模块包括:

第一查找子模块,用于从所述函数调用栈的沙箱内调用栈中查找出设定特征;和/或,

第二查找子模块,用于从所述函数调用栈的跨沙箱调用栈中查找出设定特征。

优选的,所述识别模块根据所述第一查找子模块查找到所述函数调用栈的沙箱内调用栈中缺少异常类型或存在全局代码关键字,确定所述页面访问方为web自动化工具。

优选的,所述识别模块根据所述第二查找子模块查找到所述函数调用栈的跨沙箱调用栈中存在web自动化工具关键字、求值关键字或全局作用域关键字,确定所述页面访问方为web自动化工具。

优选的,所述装置还包括:预置模块,用于在所述页面中预置javascript检测脚本,在所述预置的javascript检测脚本中设置代理文档对象模型DOM标准方法的代理方法供所述页面访问方调用。

优选的,所述预置模块在所述代理方法中重写设定标准方法,以使得所述设定标准方法的返回值与所述DOM标准方法的同名方法的返回值保持相同。

优选的,所述预置模块在所述代理方法中设置主动抛出设定类型的异常。

优选的,所述获取模块在页面访问方调用页面中javascript检测脚本的代理方法且所述代理方法抛出设定类型的异常后,获取所述异常中包含的完整的函数调用栈,所述函数调用栈含有描述从最外层的调用函数到最内层的被调用函数中的异常抛出点的信息;

所述查找模块通过解析所述函数调用栈中的异常抛出点的信息,查找所述函数调用栈是否含有设定特征。

根据本发明的另一个方面,提供一种识别web自动化工具的方法,包括:

获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,其中所述javascript检测脚本预置于所述页面当中;

从所述函数调用栈中查找出设定特征;

通过所述设定特征确定所述页面访问方为web自动化工具。

优选的,所述从所述函数调用栈中查找出设定特征,包括:

从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出设定特征。

优选的,所述通过所述设定特征确定所述页面访问方为web自动化工具,包括:

根据所述函数调用栈的沙箱内调用栈中缺少异常类型或存在全局代码关键字,确定所述页面访问方为web自动化工具。

优选的,所述通过所述设定特征确定所述页面访问方为web自动化工具,包括:

根据所述函数调用栈的跨沙箱调用栈中存在web自动化工具关键字、求值关键字或全局作用域关键字,确定所述页面访问方为web自动化工具。

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

在所述javascript检测脚本中设有代理文档对象模型DOM标准方法的代理方法供所述页面访问方调用。

优选的,所述代理方法中的设定标准方法被重写,以使得所述设定标准方法的返回值与所述DOM标准方法的同名方法的返回值保持相同。

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

在所述代理方法中设置主动抛出设定类型的异常。

优选的,所述获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,包括:

在页面访问方调用页面中javascript检测脚本的代理方法且所述代理方法抛出设定类型的异常后,获取所述异常中包含的完整的函数调用栈,所述函数调用栈含有描述从最外层的调用函数到最内层的被调用函数中的异常抛出点的信息;

所述从所述函数调用栈中查找出设定特征,包括:

通过解析所述函数调用栈中的异常抛出点的信息,查找所述函数调用栈是否含有设定特征。

可以发现,本发明实施例的技术方案,在页面中预置设定的javascript检测脚本,当页面访问方访问页面时会运行所述页面中预置的javascript检测脚本,那么通过获取页面访问方运行javascript检测脚本出错时的函数调用栈,就可以从所述函数调用栈中查找出设定特征,通过设定特征确定所述页面访问方为web自动化工具,从而使得即使web自动化工具带有沙箱机制,也可以基于函数调用栈所查找出的设定特征识别出web自动化工具,因此本发明实施例的技术方案能比较有效地识别出web自动化工具。

进一步的,本发明实施例中,可以根据从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出的设定特征确定所述页面访问方为web自动化工具,也就是说,可以仅利用沙箱内调用栈,或仅利用跨沙箱调用栈,或同时利用沙箱内调用栈和跨沙箱调用栈,来识别出web自动化工具。

进一步的,本发明实施例可以在所述javascript检测脚本中设置代理DOM(Document Object Model,文档对象模型)标准方法的代理方法供所述页面访问方调用,也即通过设置javascript蜜罐供所述页面访问方调用,使得产生跨沙箱调用栈用于进行识别。

进一步的,本发明实施例可以在所述代理方法中重写设定标准方法,以使得所述设定标准方法的返回值与所述DOM标准方法的同名方法的返回值保持相同,以便有效避免恶意访问者发现设置的javascript蜜罐,增强识别方案的隐蔽性,进而提高恶意访问者规避的难度。

进一步的,本发明实施例可以在所述代理方法中设置主动抛出设定类型的异常,使得恶意访问者无法轻易进行纂改。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1是根据本发明的一个实施例的一种识别web自动化工具的设备的示意性方框图;

图2是根据本发明的一个实施例的一种识别web自动化工具的装置的示意性方框图;

图3是根据本发明的一个实施例的一种识别web自动化工具的装置的另一示意性方框图;

图4是根据本发明的一个实施例的一种识别web自动化工具的方法的示意性流程图;

图5是根据本发明的一个实施例的一种识别web自动化工具的方法的另一示意性流程图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本发明提供一种识别web自动化工具的设备,能比较有效地识别出web自动化工具。

图1是根据本发明的一个实施例的一种识别web自动化工具的设备的示意性方框图。

如图1所示,在一种识别web自动化工具的设备10中包括:存储器11和处理器12。

所述存储器11,存储javascript检测脚本。

所述处理器12,向页面中预置所述存储器11存储的javascript检测脚本,获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,从所述函数调用栈中查找出设定特征,通过所述设定特征确定所述页面访问方为web自动化工具。

所述处理器12从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出设定特征。

在上述识别web自动化工具的设备中的处理器12,可以作为一个独立的装置结构,该独立的装置结构可以称为一种识别web自动化工具的装置,该识别web自动化工具的装置可以包括多个子模块,下文将结合图2和图3对该识别web自动化工具的装置的结构进行详细说明。

图2是根据本发明的一个实施例的一种识别web自动化工具的装置的示意性方框图。

如图2所示,在一种识别web自动化工具的装置20中可以包括:获取模块21、查找模块22和识别模块23。

获取模块21,用于获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,其中所述javascript检测脚本预置于所述页面当中。

查找模块22,用于从所述获取模块获取的函数调用栈中查找出设定特征。

识别模块23,用于通过所述查找模块22查找的设定特征确定所述页面访问方为web自动化工具。

查找模块22可以从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出设定特征。

由该实施例可见,本发明实施例的技术方案,在页面中预置设定的javascript检测脚本,当页面访问方访问页面时会运行所述页面中预置的javascript检测脚本,那么通过获取页面访问方运行javascript检测脚本出错时的函数调用栈,就可以从所述函数调用栈中查找出设定特征,通过设定特征确定所述页面访问方为web自动化工具,从而使得即使web自动化工具带有沙箱机制,也可以基于函数调用栈所查找出的设定特征识别出web自动化工具,因此本发明实施例的技术方案能比较有效地识别出web自动化工具。

图3是根据本发明的一个实施例的一种识别web自动化工具的装置的另一示意性方框图。

如图3所示,在一种识别web自动化工具的装置20中可以包括:获取模块21、查找模块22、识别模块23、预置模块24。

其中,获取模块21、查找模块22、识别模块23的功能参见图2所示。

其中,所述查找模块22可以包括:第一查找子模块221和/或第二查找子模块222。

第一查找子模块221,用于从所述函数调用栈的沙箱内调用栈中查找出设定特征。

第二查找子模块222,用于从所述函数调用栈的跨沙箱调用栈中查找出设定特征。

其中,所述识别模块23根据所述第一查找子模块221查找到所述函数调用栈的沙箱内调用栈中缺少异常类型或存在全局代码global code关键字,确定所述页面访问方为web自动化工具。

其中,所述识别模块23根据所述第二查找子模块222查找到所述函数调用栈的跨沙箱调用栈中存在web自动化工具关键字、求值关键字(evaluate)或全局作用域globalscope关键字,确定所述页面访问方为web自动化工具。

预置模块24,用于在所述页面中预置javascript检测脚本,在所述预置的javascript检测脚本中设置代理文档对象模型DOM标准方法的代理方法供所述页面访问方调用。

其中,所述预置模块23在所述代理方法中重写设定标准方法,以使得所述设定标准方法的返回值与所述DOM标准方法的同名方法的返回值保持相同。

其中,所述预置模块23在所述代理方法中设置主动抛出设定类型的异常类型。

其中,所述获取模块21在页面访问方调用页面中javascript检测脚本的代理方法且所述代理方法抛出设定类型的异常后,获取所述异常中包含的完整的函数调用栈,所述函数调用栈含有描述从最外层的调用函数到最内层的被调用函数中的异常抛出点的信息;

所述查找模块22通过解析所述函数调用栈中的异常抛出点的信息,查找所述函数调用栈是否含有设定特征。

上述详细介绍了本发明的一种识别web自动化工具的设备及装置,以下介绍本发明对应的识别web自动化工具的方法。

图4是根据本发明的一个实施例的一种识别web自动化工具的方法的示意性流程图。

如图4所示,在步骤401中,获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,其中所述javascript检测脚本预置于所述页面当中。

该步骤可以由识别web自动化工具的装置,获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈。

其中,预置的javascript检测脚本,其源码可以是混淆的代码,以防被恶意访问者识别出用途。

在步骤402中,从所述函数调用栈中查找出设定特征。

该步骤可以由识别web自动化工具的装置,从所述函数调用栈中查找出设定特征。

其中,该步骤可以从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出设定特征。

在步骤403中,通过所述设定特征确定识别出所述页面访问方为自动化工具。

该步骤可以由识别web自动化工具的装置,通过所述设定特征确定识别出所述页面访问方为自动化工具。

其中,通过所述设定特征确定所述页面访问方为web自动化工具,可以包括:根据所述函数调用栈的沙箱内调用栈中缺少异常类型或存在全局代码global code关键字,确定所述页面访问方为web自动化工具。

其中,通过所述设定特征确定所述页面访问方为web自动化工具,还可以包括:根据所述函数调用栈的跨沙箱调用栈中存在web自动化工具关键字、求值关键字(evaluate)或全局作用域global scope关键字,确定所述页面访问方为web自动化工具。

需说明的是,上述方法还可以包括:在所述预置的javascript检测脚本中设有代理DOM标准方法的代理方法供所述页面访问方调用。其中,所述代理方法中的设定标准方法被重写,以使得所述设定标准方法的返回值与所述DOM标准方法的同名方法的返回值保持相同。所述方法还可以包括:在所述代理方法中主动抛出设定类型的异常。

还需说明的是,上述获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈,可以包括:在页面访问方调用页面中javascript检测脚本的代理方法且所述代理方法抛出设定类型的异常后,获取所述异常中包含的完整的函数调用栈,所述函数调用栈含有描述从最外层的调用函数到最内层的被调用函数中的异常抛出点的信息;上述从所述函数调用栈中查找出设定特征,可以包括:通过解析所述函数调用栈中的异常抛出点的信息,查找所述函数调用栈是否含有设定特征。

由该实施例可见,本发明实施例的技术方案,在页面中预置设定的javascript检测脚本,当页面访问方访问页面时会运行所述页面中预置的javascript检测脚本,那么通过获取页面访问方运行javascript检测脚本出错时的函数调用栈,就可以从所述函数调用栈中查找出设定特征,通过设定特征确定所述页面访问方为web自动化工具,从而使得即使web自动化工具带有沙箱机制,也可以基于函数调用栈所查找出的设定特征识别出web自动化工具,因此本发明实施例的技术方案能比较有效地识别出web自动化工具。

图5是根据本发明的一个实施例的一种识别web自动化工具的方法的另一示意性流程图。

图5相对于图4更详细描述了本发明实施例的技术方案。

本发明实施例的技术方案是通过引诱web自动化工具报出自己的函数调用栈,通过检查该调用栈的设定特征发现其环境与正常页面访问方的差异,从而识别出web自动化工具。本发明实施例所说的web自动化工具,例如可以是现有的基于各种渲染引擎的无界面浏览器(如PhantomJS、SlimerJS、TrifileJS及其衍生品)及其他模拟正常浏览器的工具等(如HtmlUnit)。

如图5所示,在步骤501中,在web页面预先嵌入预置的javascript检测脚本。

本发明实施例在web页面中预先嵌入一段javascript检测脚本,该脚本实现了基于调用栈的自动化工具检测技术。当恶意访问者用web自动化工具加载预置了javascript检测脚本的web页面,并向页面注入恶意脚本时,上述javascript检测脚本就能检测到当前页面的访问者是否使用了web自动化工具。

需说明的是,所说的预置的javascript检测脚本,其源码可以进行混淆处理,以防被恶意访问者识别出用途。

其中,本发明实施例还可以在所述预置的javascript检测脚本中设置代理DOM标准方法的代理方法供web自动化工具调用。生成代理若干DOM标准方法的代理方法,也即是设置javascript蜜罐,诱导恶意访问者调用这些代理方法。所说的蜜罐,可以理解为是情报收集系统,蜜罐是故意让人攻击的目标,引诱攻击者前来攻击,当攻击者入侵后,就可以知道攻击者的攻击方式,从而了解攻击者发动的最新的攻击和自身防守存在的漏洞。因此,如果web自动化工具的恶意脚本调用到web页面所提供的这些代理方法时,就会触发产生跨沙箱调用栈。一般函数调用栈可以包括沙箱内调用栈或跨沙箱调用栈。其中,与正常浏览器相比,沙箱内调用栈存在细微的特征差别,跨沙箱调用栈存在明显的特征差别,因此通过设置代理方法供web自动化工具调用来触发产生跨沙箱调用栈,可以比较容易识别出web自动化工具。需说明的是,如果不使用跨沙箱调用栈进行识别,则可以不设置上述代理方法。

在所述预置的javascript检测脚本中设置DOM标准方法的代理方法,包括但不限于修改沙箱内文档对象模型DOM标准方法,如document.getElementById()方法等。通常这类方法是恶意访问者定位或篡改页面元素、模拟用户交互时所必须用到的DOM标准方法。以document.getElementById方法为例,本发明实施例可以设置代理document.getElementById方法。

进一步的,本发明实施例还可以在代理方法内设置主动抛出异常,后续通过检查该异常的调用栈,查看调用栈中是否有可疑的特征来识别出web自动化工具。所说的抛出异常(throw exception),是javascript等前端脚本语言中一个程序处理动作。抛出异常是指javascript等前端语言代码运行在浏览器等web客户端环境中时,由于代码逻辑或运行环境等错误而引发web客户端立即中断当前执行的这行代码,生成一个异常对象并向上一级调用函数返回该异常对象,上一级调用函数可以选择捕获该异常,并对调用栈进行分析。通常,一个异常对象会包含当前执行出错的代码的上下文以及调用路径的描述信息(例如所在的文件名、行号、函数名等),即通常所谓的调用栈。本发明实施例在代理方法内主动抛出异常,获取该异常的调用栈,解析该调用栈,判断该调用栈是否含有可疑的特征,根据判断结果识别出web自动化工具。一般而言,不同web自动化工具具有不同的调用栈特征。

本发明实施例通过主动抛出异常,获取该异常的调用栈并解析该调用栈,可以突破一些web自动化工具的沙箱限制,检测出其跨沙箱调用栈的特征。对于主动抛出的异常,可以选择一些恶意访问者无法轻易篡改的设定类型的异常类型进行抛出,如TypeError(类型错误)类型的异常类型等。

需说明的是,为了不引起恶意访问者的怀疑,本发明实施例设置的代理方法可以采用调用真正的document.getElementById()方法的方式,并将执行结果返回给恶意访问者。通过选择调用真正的被代理的DOM标准方法,并将调用结果返回给调用方(如恶意访问者),可以避免被调用方发现这是设置好的javascript蜜罐,进而想办法规避检测。

还需说明的是,同样为了不引起恶意访问者的怀疑,本发明实施例设置的代理方法可以重写设定类型的标准方法,例如document.getElementById的toString、toLocaleString、valueOf以及toSource等标准方法,以免恶意访问者查看到代理方法的内部源码。通过重写toString、toLocaleString、valueOf、toSource等标准方法,使这些标准方法的返回值与DOM标准方法的同名方法的返回值保持相同,可以有效避免恶意访问者发现上述设置的蜜罐,从而增强本方案的隐蔽性,进而提高恶意访问者规避的难度。

在步骤502中,页面访问方加载web页面,运行页面中的javascript检测脚本。

在步骤503中,获取页面访问方运行页面中javascript检测脚本出错时的函数调用栈。

该步骤中,可以获取页面访问方运行页面中预置的javascript检测脚本出错时的函数调用栈,包括沙箱内调用栈和/或跨沙箱调用栈。其中,与正常浏览器相比,沙箱内调用栈存在细微的特征差别,跨沙箱调用栈存在明显的特征差别。

在步骤504中,根据从所述函数调用栈中查找出的设定特征识别出所述页面访问方为web自动化工具。

该步骤可以根据从所述函数调用栈的沙箱内调用栈和/或跨沙箱调用栈中查找出的设定特征识别出所述页面访问方为自动化工具。

1)可以仅根据从所述函数调用栈的沙箱内调用栈中查找出的设定特征识别出所述页面访问方为自动化工具,包括:根据所述函数调用栈的沙箱内调用栈中缺少异常类型或存在全局代码global code关键字,识别出所述页面访问方为自动化工具。

在正常的浏览器中,当web页面上的javascript检测脚本运行出错时,javascript引擎会抛出异常,该异常中包含完整的函数调用栈,调用栈描述了从最外层的调用函数到最内层的被调函数中的异常抛出点的信息,包括但不限于函数名、文件名、行号、列号等等。举例描述,当访问某网站时,正常浏览器抛出调用栈,可以截取页面在正常浏览器中运行时打印的前两段调用栈,这两段调用栈均为页面内正常javascript检测脚本执行时的调用栈,称为沙箱内调用栈。使用web自动化工具访问相同的网站时,抛出调用栈(以PhantonJS为例),可以截取页面在web自动化工具中运行时打印的前三段调用栈,同样的,其中前两段是页面内正常javascript检测脚本的调用栈,即沙箱内调用栈,第三段则是通过web自动化工具注入到页面内的javascript检测脚本的调用栈,称为跨沙箱调用栈。

从前两段可以看出,PhantomJS的沙箱内调用栈的格式与正常浏览器不一样,最明显的特征就是没有异常类型TypeError。其次,对于全局javascript函数的描述,web自动化工具PhantomJS用了global code关键字,而普通浏览器则没有使用global code关键字。因此,根据所述函数调用栈的沙箱内调用栈中缺少异常类型或存在全局代码global code关键字,可以识别出所述页面访问方为web自动化工具。

2)可以仅根据从所述函数调用栈的跨沙箱调用栈中查找出的设定特征识别出所述页面访问方为web自动化工具,包括:根据所述函数调用栈的跨沙箱调用栈中存在自动化工具关键字、求值关键字(evaluate)或全局作用域global scope关键字,识别出所述页面访问方为web自动化工具。

通过对比沙箱内调用栈,就已经可以识别出web自动化工具的特征,但更为明显的方法是得到跨沙箱调用栈来识别,跨沙箱调用栈在恶意访问者输入的恶意脚本调用到web页面提供的代理方法会触发产生。现有的无界面web自动化工具,虽然能建立与浏览器运行环境相似的沙箱,并能跨沙箱运行恶意访问者往页面注入的恶意脚本从而操纵整个页面,但是恶意脚本的跨沙箱调用栈,能够完整地暴露它从沙箱外到沙箱内的调用路径,因此通过跨沙箱调用栈来识别web自动化工具是比较有限的方式。

以web自动化工具PhantomJS为例,跨沙箱调用栈是通过web自动化工具PhantomJS的沙箱机制向web页面注入恶意脚本代码时,触发了异常进而打印出来的调用栈。从该调用栈中可以看出恶意脚本完整的跨沙箱调用过程,首先是恶意访问者从沙箱外注入脚本的地方开始,到进入沙箱内全局环境,执行注入的代码,再到恶意访问者注入的脚本引起了异常。整个跨沙箱调用栈中,最明显的特征就是含有web自动化工具phantomjs关键字,其次是含有求值关键字(evaluate)、全局作用域global scope关键字。如果web自动化工具是使用SlimerJS,那么含有的web自动化工具关键字就是SlimerJS关键字。因此,根据所述函数调用栈的跨沙箱调用栈中存在web自动化工具关键字、求值关键字(evaluate)或全局作用域global scope关键字,可以识别出所述页面访问方为web自动化工具。

需说明的是,本发明实施例可以仅利用沙箱内调用栈,或仅利用跨沙箱调用栈,或同时利用沙箱内调用栈和跨沙箱调用栈,来识别出自动化工具。

可以发现,本发明实施例使用上述识别方法后,针对基于无界面的web自动化工具发起的各类攻击(包括但不限于作弊欺诈、抓爬关键数据),均能有效识别到,页面应用的提供方可以根据识别结果采取相应的措施,如弹出验证码、拒绝访问等等。而且,恶意访问者规避本发明实施例方案特征的成本较高,因而也具有一定的实用价值。经实验证明,本发明实施例方案,对现有的基于各种渲染引擎的无界面浏览器(如PhantomJS、SlimerJS、TrifileJS及其衍生品)及其他模拟正常浏览器的工具(如HtmlUnit),均有效果。

本发明实施例方案相比于传统的基于沙箱内环境检测的方案,优点主要在于效果明显、无法轻易规避,实施起来也较为隐蔽。由于传统技术方案很容易被恶意访问者意识到,而且很容易篡改web自动化工具的环境变量,因而效果不好。本发明实施例方案可以采用检测跨沙箱调用栈的方法,使得恶意访问者规避起来没那么容易,因此总的来说,本发明实施例方案基于调用栈的识别方法,对众多的web自动化工具均有识别效果,且难以规避。

上文中已经参考附图详细描述了根据本发明的技术方案。

此外,根据本发明的方法还可以实现为一种计算机程序,该计算机程序包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。或者,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的上述方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号