一种基于程序动态分析的网站访问信息自动获取方法技术

技术编号:18501276 阅读:31 留言:0更新日期:2018-07-21 22:31
本发明专利技术公开了一种基于程序动态分析、自动获取用户在不同时间段访问网站信息的方法。首先使用动态插桩技术获取用户访问网页的行为,然后收集该行为并存储在一个变量中,同时使用代理按域名缓存用户访问的网页,然后使用工具Selenium设置定时,多次自动化访问同一个网页,再比较采集的文件,以发现用户的行为差异。本发明专利技术在多次自动化获取用户的动态行为方面有显著效果。

An automatic access method for website access based on program dynamic analysis

The invention discloses a method for automatically accessing the website information of users at different time periods based on program dynamic analysis. First, dynamic plug - in is used to obtain the user's access to the web page, then collect the behavior and store it in a variable, use the proxy to access the web page by the domain name caching user, then use the tool Selenium to set the timing, automatically access the same web page several times, and compare the collected files to find the user. Behavioral differences. The invention has remarkable effect in automatically acquiring dynamic behavior of users in many times.

【技术实现步骤摘要】
一种基于程序动态分析的网站访问信息自动获取方法
本专利技术涉及一种模拟用户多次定时自动访问一个网站、记录其行为并进行分析的动态分析框架,属于互联网应用领域。
技术介绍
随着互联网的发展,JavaScript(简称JS)脚本语言在Web客户端中得到了广泛应用。大量开发框架的出现(如Node.js等)使得用JavaScript来编写服务器端程序变得可行,也有越来越多的JavaScript应用出现在服务器端,体现了JavaScript语言的强大性。目前针对JavaScript的研究和应用也变得越来越流行。Selenium是一个用于Web应用客户端程序测试的工具。Selenium测试直接运行在浏览器中,它基于JavaScript并结合其WebDriver来模拟用户的真实操作,并且支持多种浏览器(如Safari,IE,Firefox,Chrome等),可以运行在多种操作系统上面。Jalangi是一个对前端和后端JavaScript代码进行动态分析的框架,它可以通过添加钩子来监控JavaScript的每一个操作,如变量的读/写、一元/二元运算、函数/方法调用等。我们可以根据实际需要,使用Jalangi对JavaScript代码进行插桩,以提取相关的信息。
技术实现思路
技术问题:本专利技术的目的是模拟一个用户在不同时间段访问同一个网页并自动化记录该用户的动态行为,将其序列化存入本地文件之后,对比不同时间段上网页内容的差异。该技术克服了现有的爬虫技术只能批量获取网页本身已有的内容、不能对用户的某些特殊行为进行批量记录并分析的不足。为实现上述目的,本专利技术通过使用JavaScript动态插桩工具Jalangi,对整个网页的JavaScript源码进行插桩,以获取我们所需要的信息(比如用户所执行的JavaScript文件以及包含信息的JavaScript变量),然后通过Selenium获取到已插桩网页中的JavaScript变量。由于Selenium支持多种语言(包括Java),我们用Java中的流方法保存获取到的信息到本地文件,并设置定时以批量获取用户的动态行为以及访问服务器信息。此外,Selenium可以使用executeScript方法执行一段JS脚本来对页面进行处理,我们据此执行一段JS脚本或者返回JS变量。本专利技术方法具体包括如下步骤:步骤1:对用户访问网页中执行的JavaScript代码进行插桩。使用JavaScript的动态插桩工具Jalangi,在网页加载时对一个用户所执行的JavaScript代码进行插桩,以获取其动态特性。由于JavaScript允许对象动态绑定属性,可以在所需信息的对象上添加一个JS变量,网页执行过程中,这个JS变量被添加和传递,以此来记录用户的动态行为。步骤2:采集用户一次访问中的动态行为。步骤2.1:利用火狐浏览器设置代理服务器,这样用户执行的网页经过代理服务器,代理服务器调用Jalangi进行插桩,返回给用户的页面包含步骤一中添加的JS变量;利用Selenium的executeScript方法获取此变量包含的信息,并利用Java的流方法将其序列化到本地文件中进行永久化保存;此外,还可以利用executeScript在Selenium中执行一段JS脚本来获取我们所需要的信息,比如获取script标签中含有src属性的url信息等。步骤2.2:利用代理mitmproxy调用Python脚本缓存用户访问的网页,文件按请求Web内容的url域名分别进行存放,并且记录每个文件的md5码(文件不同,所生成的md5码也不同),然后把记录下来的文件拷贝到本地。步骤3:模拟用户多次定时访问同一个网站,并记录其批量信息。Selenium具有自动开启和关闭火狐浏览器的特性,据此可以模拟用户访问一个网站。利用定时器可以让这个动作重复定时执行多次,以完成同一个用户多次定时访问同一个网站的目的。因为mitmproxy缓存的文件是持续记录的,所以在每次访问完这个网站之后、重新访问这个网站之前要删除已经缓存的文件,以确保每次的记录都对应的是一次访问的结果。因此,要在访问网页之后、浏览器关闭的指定时间内把文件拷贝完成并且删除本次缓存的文件,并且利用Selenium的延时作用,保证在这指定的时间内浏览器不访问网页,等待删除缓存之后,再继续访问同一个网页。步骤4:对获取到的用户的动态行为进行分析比较。对于通过mitmproxy获取的批量文件进行分析:如果用户访问的文件不同,则生成的md5就不相同,可以通过对比md5码的异同来区分用户访问同一网站的动态行为的差异;对于用户的多次访问,我们取当前访问的时间进行区分。我们用第一次访问获得的信息与之后的文件分别作md5码的比较,比较结果用域名作为键,记录前一次有、但后一次没有的文件作为值。对于Selenium获取到的JS变量信息进行分析,可以采用相同的方式进行。与现有技术相比,本专利技术具有如下有益效果:通过使用Selenium、Jalangi、代理服务器等技术,可以模仿用户多次定时访问同一个网站,并且使用Jalangi对网页JavaScript代码进行插桩,可以很方便地追踪、检测和获取用户的动态行为特征。另外,在浏览器中设置代理服务器,当用户访问网页时,网页经过代理服务器,代理服务器调用Jalangi进行插桩,返回的网页中就包含了我们记录信息的JS变量,可以用Selenium自动化获取该变量的信息,而这个变量在网页插桩之前是不存在的,能够有效弥补现有的爬虫技术只能获取网页本身的静态内容且无法爬取同一个用户多次访问内容的不足。并且由于代理服务器会根据域名缓存插桩前后的用户访问信息,包括JS,HTML等,可以对比一个用户多次访问网页的差异,而爬虫技术只能爬取整个网页的源代码、无法对不同的域名内容进行区分。附图说明图1是用户访问一次网页时获取存储信息的JS变量流程图;图2是用户访问一次网页时获取不用域名下md5文件的流程图;图3是用户多次访问同一网页时文件的获取流程图;图4是对获取的文件进行比较处理的流程图;具体实施方式下面结合附图对本专利技术作进一步详细说明。步骤1:对用户访问网页中执行的JavaScript代码进行插桩。使用JavaScript的动态插桩工具Jalangi,使用Selenium模仿用户访问网页,在Selenium启动火狐浏览器之前就设置好代理服务器,包括设置代理服务器的IP地址、代理服务器的端口地址等等。然后启动浏览器,使用浏览器的get方法传入用户要访问的网址,并加载页面,在网页加载时对一个用户所执行的JavaScript代码进行插桩,以获取其动态特性,由于JavaScript允许对象动态绑定属性,所以可以在所需信息的对象上添加一个JS变量,网页执行过程中,这个JS变量被添加和传递,以此来记录用户的动态行为。步骤2:采集用户一次访问的一次动态行为。步骤2.1:利用火狐浏览器设置代理服务器,这样用户执行的网页经过代理服务器,代理服务器调用Jalangi进行插桩,返回给用户的页面包含步骤一中添加的JS变量,利用Selenium的executeScript方法获取此变量包含的信息,此方法返回object类型的变量,能够对其进行格式转换,转为方便做比较的类型,比如JSON本文档来自技高网...

【技术保护点】
1.一种基于程序动态分析的网站访问信息自动获取的方法,其特征在于,基于程序动态分析、自动获取用户在不同时间段访问网站的信息,即:首先使用插桩技术对整个网页的JavaScript源码进行插桩,获取用户在访问网页中的动态行为;然后对该动态行为进行收集并存储在一个变量中,同时使用代理按域名缓存用户访问的网页;然后使用Selenium获取到插桩过的网页中的JavaScript变量并设置定时多次自动化访问同一个网页;最后比较采集的文件,以发现用户的动态行为差异。

【技术特征摘要】
1.一种基于程序动态分析的网站访问信息自动获取的方法,其特征在于,基于程序动态分析、自动获取用户在不同时间段访问网站的信息,即:首先使用插桩技术对整个网页的JavaScript源码进行插桩,获取用户在访问网页中的动态行为;然后对该动态行为进行收集并存储在一个变量中,同时使用代理按域名缓存用户访问的网页;然后使用Selenium获取到插桩过的网页中的JavaScript变量并设置定时多次自动化访问同一个网页;最后比较采集的文件,以发现用户的动态行为差异。2.根据权利要求1所述基于程序动态分析的网站访问信息自动获取方法,其特征是包括以下步骤:1)使用JavaScript的动态插桩工具Jalangi,使用Selenium模仿用户访问网页,对用户访问网页中执行的JavaScript代码进行插桩,在所需信息的对象上添加一个JS变量,网页执行过程中,这个JS变量被添加和传递,以此来记录用户的动态行为。2)利用火狐浏览器设置代理服务器,这样用户执行的网页经过代理服务器,代理服务器调用Jalangi进行插桩;利用Selenium的executeScript方法获取此变量包含的信息。3)利用代理mitmproxy调用Python脚本缓存用户访问的网页,文件按请求Web内容的url域名分别进行存放,并且记录每个文件的md5码。4)模拟用户多次定时访问同一个网站,并记录其批量信息,即使用Selenium模拟用户访问一个网站,利用定时器让这个动作重复定时执行多次。5)对于通过mitmproxy获取的批量文件进行分析,因为用户访问的文件不同,生成的md5就不相同,可以通过对比md5码的异同来区分用户访问同一网站的动态行为差异。3.根据权利要求2所述的自动获取网站访问信息的方法,其特征是步骤1)中,对用户访问网页中执行的JavaScript代码进行插桩,即:使用JavaScript的动态插桩工具Jalangi,并使用工具Selenium模仿用户访问网页,在Selenium启动火狐浏览器之前就设置好代理服务器,包括设置代理服务器的IP地址、代理服务器的端口地址等等;然后启动浏览器,使用浏览器的get方法传入用户要访问的网址,并加载页面,在网页加载时对一个用户所执行的JavaScript代码进行插桩,以获取其动态特性,在所需信息的对象上添加一个JS变量,网页执行过程中,这个JS变量被添加和传递,以此来记录用户的动态行为。4.根据权利要求2所述的自动获取网站访问信息的方法,其特征是步骤2)中,采集用户一次访问的一次动态行为:利用火狐浏览器设置代理服务器,这样用户执行的网页经过代理服务器,代理服务器调用Jalangi进行插桩,返回给用户的页面包含步骤一中添加的JS变量,利用Selenium的executeScript方法获取此变量包含的信息,此方法返回object类型的变量,能够对其进行格式转换,转为方便做比较的类型,比如JSON格式;采用Sel...

【专利技术属性】
技术研发人员:张卫丰陈贵美刘蕊成赵晨许蕾周国强张迎周王子元
申请(专利权)人:南京邮电大学盐城大数据研究院有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1