基于JavaScript堆栈信息检测浏览器的方法与流程

文档序号:15557708发布日期:2018-09-29 01:30阅读:529来源:国知局

本发明具体涉及基于javascript堆栈信息检测浏览器的方法。



背景技术:

软件自动化测试的发展诞生了许多优秀的测试工具,比如安卓、浏览器的模拟器。测试人员通过编程来驱动模拟器打开应用、网页,点击按钮、提交表单,还能发送鼠标和键盘的动作事件来模拟真实的用户行为。这种模拟器测试工具有广泛的使用价值,比如作为爬虫来高频次的恶意访问某网站,产生大量的垃圾注册用户等。目前现有的区分正常浏览器用户和模拟器的方法如下表所示。

但上述目前的方法均存在不小的技术缺陷,useragent的缺点是模拟器都可以很轻易的修改成为任意正常的useragent;plugins的缺点是模拟器可以在页面加载前将plugins设置为一个合理的值;callphantom_phantom...的缺点是模拟器可以在页面加载前将这些属性和方法删除,并定义为不可枚举;alert判断延迟的缺点是网站弹出对话框会立即卡住页面,造成极不友好的用户体验模拟器也提供接口,可以设置页面弹框如何下一步操作;浏览器功能检测的缺点是在低版本浏览器中不可用,该检测在使用真实ui的模拟器中无效,兼容性检测的数量庞大,对比没有针对性,也没有特别有效的区分模拟器的方案,因为useragent对应关系过多;用户行为跟踪的缺点是模拟器可以随机产生一些简单的点到点之间的鼠标移动,大多数web开发人员并不熟悉如何区分判断出机器的行为轨迹,一般由某些安全服务公司提供,该检测在手机移动端会失效,因为触摸屏在单页操作时没有指针移动等滑屏操作。本发明可以通过分析堆栈信息来识别出特定的模拟器,从而区分出正常用户与模拟器。



技术实现要素:

本发明要解决的技术问题在于,针对上述目前现有的识别特定模拟器的方法的技术缺陷,提供基于javascript堆栈信息检测浏览器的方法解决上述技术缺陷。

基于javascript堆栈信息检测浏览器的方法,其特征在于,所述方法包括:

s1、获取当前访问用户执行javascript发生错误时的堆栈信息;

s2、对当前访问用户执行javascript发生错误的堆栈信息和预设的多种浏览器执行javascript发生错误的堆栈信息进行格式对比,若存在格式差异,则判断为模拟器,进入步骤s3,若所述当前访问用户执行javascript发生错误的堆栈信息与某一种浏览器执行javascript发生错误的堆栈信息无格式差异,则判断此访问用户为使用此种浏览器的正常访问用户;

s3、对当前访问用户进行处理。

进一步的,所述访问用户具体是指浏览器或模拟器。

进一步的,所述步骤s2中进行格式对比的具体的方法是:浏览器堆栈信息相同点是,除了第一行外,每行都包含脚本文件或页面的真实网络路径,每行都会有http://路径;浏览器堆栈信息的格式区别有,ie9+和ieedge浏览器最后一行为atglobalcode开头再加上javascript脚本的地址,chrome、safari和安卓浏览器最后一行为athttp://,即at后加javascript脚本的地址;最后firefox浏览器的最后一行为@http://,即@后加javascript脚本的地址。

还涉及一种存储设备,其特征在于,所述存储设备存储指令及数据用于实现任意一种基于javascript堆栈信息检测浏览器的方法。

还涉及基于javascript堆栈信息检测浏览器的系统,其特征在于,包括:处理器及所述存储设备;所述处理器加载并执行所述存储设备中的指令及数据用于实现任意一种基于javascript堆栈信息检测浏览器的方法。

传统的检测方法都可以被有经验的爬虫人员添加一些伪装代码欺骗脚本进行绕过,而javascript的堆栈信息是语言运行时动态提供的,不能在模拟器中通过脚本直接进行篡改配合前端代码的混淆加密,有很好的隐蔽效果。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明基于javascript堆栈信息检测浏览器的方法的流程图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

基于javascript堆栈信息检测浏览器的方法,如图1所示,所述方法包括:

s1、获取当前访问用户执行javascript发生错误的堆栈信息;

s2、对当前访问用户执行javascript发生错误的堆栈信息和多种浏览器执行javascript发生错误的堆栈信息进行格式对比,若存在格式差异,则判断为模拟器,进入步骤s3,若所述当前访问用户执行javascript发生错误的堆栈信息与某一种浏览器执行javascript发生错误的堆栈信息无格式差异,则判断此访问用户为使用此种浏览器的正常访问用户;

s3、根据步骤s2中得到的格式对比结果对当前访问用户进行处理,可限制其权限、禁止其访问、对其进行安全检测等。

javascript是一种通用的浏览器脚本语言,简称js。堆栈(stack)是指程序语言运行时会提供被执行函数的物理文件地址信息。模拟器是一种软件自动化测试的浏览器软件,功能和正常浏览器高度一致,可以看作是一种特殊构建的浏览器,它在底层功能实现上可能会比其他正常浏览器有所阉割和改变,因为模拟器通常是基于开源的浏览器项目去改写。一些模拟器在脚本发生错误时,抛出的堆栈信息会与正常浏览器有明显的格式差异,这是因为开发者自己改写了源代码的错误异常类。在caniuse网站中可以查询常用浏览器特性和兼容性列表报告,网址为:https://caniuse.com/,此处对比几款常用的浏览器在执行javascript发生错误的堆栈信息:

可以观察到:浏览器堆栈信息相同点是,除了第一行外,每行都包含脚本文件或页面的真实网络路径,考虑到网站都是http或https协议,每行都会有http://之类的路径;堆栈信息的重要格式区别有如下几点:ie9+和ieedge浏览器最后一行为atglobalcode开头再加上javascript脚本的地址,chrome、safari和安卓浏览器最后一行为athttp://,即at后加javascript脚本的地址(可以为https://);最后firefox浏览器的最后一行为@http://,即@后加javascript脚本的地址(可以为https://)。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

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