[发明专利]一种获取网页执行JavaScript函数调用路径的方法有效
申请号: | 201710033454.2 | 申请日: | 2017-01-13 |
公开(公告)号: | CN108304173B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 张卫丰;刘蕊成;赵晨;陈贵美;许蕾;王子元;周国强;张迎周 | 申请(专利权)人: | 南京邮电大学盐城大数据研究院有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 北京冠和权律师事务所 11399 | 代理人: | 赵银萍 |
地址: | 224000 江苏省盐城市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 获取 网页 执行 javascript 函数 调用 路径 方法 | ||
本发明公开了一种获取网页执行JavaScript函数调用路径的方法,通过使用JavaScript的动态插桩工具Jalangi对网页进行动态插桩,对网页中JavaScript执行路径中的所有函数加入函数调用路径信息。首先定义一个可以在JavaScript函数的最后添加一个参数的方法,该方法用于在函数执行前在函数的参数列表中保存执行到当前的函数调用路径信息;然后对如setTimeOut,setInterval,apply和call等函数加入参数的操作进行特殊处理,保证函数调用路径的延续和统一执行;最后对于生成iframe、script和a标签的部分,输出对应的函数调用路径信息。该发明对函数调用关系有一个完整的链路输出,方便开发者追踪和调试。
技术领域
本发明涉及一种获取网页执行JavaScript函数调用路径的方法,属于互联网领域。
背景技术
随着Web2.0技术的发展,使用JavaScript的应用发展随之不断加快。JavaScript是一种网络脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是嵌入在HTML页面中,以实现特定的功能。
许多大型JavaScript应用程序间的函数调用关系是非常复杂的,在开发或者调试过程中,经常需要跟踪某个函数是由哪些函数调用后才触发执行的,弄清楚这些函数的调用顺序对我们理解程序代码中的数据流向、进而排查定位错误是非常重要的。
浏览器中可以通过调试获得JavaScript函数调用关系,如Firefox需要开发者输入console.trace()显示该函数调用的上下文关系,但无法获取完整的调用链路;另外浏览器的函数调用关系碰到setTimeOut和setInterval等定时函数无法对其调用执行的函数进行追踪,一旦使用setTimeOut或setInterval等函数,将导致函数调用路径的断链。
发明内容
技术问题:本发明的目的是通过对网页代码进行执行,获得网页中JavaScript的完整函数调用路径信息,克服现有浏览器技术只能获得JavaScript函数上下文调用关系的缺点和对setTimeOut函数与setInterval函数无法继续追踪的缺点;另外还可以动态配置开发者需要显示的调用路径信息,并且获得跨iframe的函数调用信息。
为实现上述目的,本发明通过使用JavaScript动态插桩工具,对整个网页的JavaScript源码进行插桩,获取JavaScript执行时的函数调用路径信息;对setTimeOut和setInterval等函数进行特殊处理,保证使用定时函数不会出现调用路径断链的情况;允许动态配置调用路径,并在网页加载时进行调用路径的显示,具有一定的灵活性,对于获取到的调用路径信息,通过匹配的方法,获取生成该iframe或脚本的调用信息和当前执行的函数调用信息。
本发明方法具体包括如下步骤:
步骤1:对网页执行的JavaScript代码进行插桩
使用JavaScript的动态插桩工具Jalangi,在网页加载时对所有执行的JavaScript代码进行插桩,以便获取插桩代码中所需要的链路信息。
步骤2:对JavaScript函数调用路径信息进行获取和追踪
由于JavaScript语言具有允许动态绑定属性到函数的特性,所以考虑在调用路径的函数上绑定一个用于记录追踪路径的trace属性,该trace属性记录了主动调用当前函数的函数,通过在全局变量中对trace属性的保存,达到记录页面中JavaScript源码所有调用关系的目的。
步骤3:对JavaScript中特殊函数存取调用关系信息的处理
步骤3.1:对于setTimeOut和setInterval函数的处理
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学盐城大数据研究院有限公司,未经南京邮电大学盐城大数据研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710033454.2/2.html,转载请声明来源钻瓜专利网。