CN107622015B - 一种数据流分析方法、装置、设备及介质 - Google Patents
一种数据流分析方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN107622015B CN107622015B CN201710874992.4A CN201710874992A CN107622015B CN 107622015 B CN107622015 B CN 107622015B CN 201710874992 A CN201710874992 A CN 201710874992A CN 107622015 B CN107622015 B CN 107622015B
- Authority
- CN
- China
- Prior art keywords
- data
- code
- web application
- resource file
- probe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Transfer Between Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种数据流分析方法、装置、设备及介质,涉及数据处理技术。该方法包括:获取待分析的web应用对应的资源文件中的JavaScript代码;判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录;根据记录的数据对所述web应用进行分析。本发明实施例提供一种数据流分析方法、装置、设备及介质,实现了对web应用借助浏览器实现代码逻辑过程中的数据的获取和分析。
Description
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种数据流分析方法、装置、设备及介质。
背景技术
现如今大型与复杂前端的网页Web应用非常普及,然而对于这些复杂Web应用,实现应用功能的一部分业务逻辑与数据处理逻辑是借助浏览器运行实现的,因此无法直接从服务器返回的网页文档中提取Web应用执行过程中的所有数据。例如,Web应用的视图就是通过浏览器中的JavaScript引擎对相应JavaScript代码的转译运行进行渲染得到,其中渲染数据是无法直接从服务器返回的网页文档中提取的。
现有的数据流分析方案主要分为以下两种,同时发明人在实现本发明的过程中发现现有技术存在如下缺陷:
第一种方案使用了程序分析与约束求解领域中的一些方法,对JavaScript代码进行统一的静态分析或者动态分析。JavaScript代码的高度动态性使得静态程序分析手段如静态程序切片技术与副作用分析技术难以有效应用于JavaScript代码的分析。因为不同浏览器具有不同的特性,统一的动态分析手段无法针对浏览器的不同特性进行分析,从而导致该方案的分析存在局限性。
第二种方案是让开发者在浏览器中使用前端调试工具如谷歌开发者工具包或Firebug对Web应用前端进行跟踪调试。但使用传统的插入断点、监视变量等方式跟踪查看数据的流向以进行调试的方法,也非常低效与耗时。
发明内容
本发明提供一种数据流分析方法、装置、设备及介质,以实现对web应用借助不同浏览器实现代码逻辑过程中的数据的获取和分析。
第一方面,本发明实施例提供了一种数据流分析方法,应用于浏览器端,该方法包括:
获取待分析的web应用对应的资源文件中的JavaScript代码;
判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;
运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录;
根据记录的数据对所述web应用进行分析。
进一步的,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录包括:
基于浏览器中的预设分析代码,根据所述探针,获取所述web应用借助所述浏览器实现代码逻辑过程中的数据;
将所述数据进行归一化,并存储。
进一步的,根据记录的数据对所述web应用进行分析包括:
读取记录的数据;
根据所述数据中的数据对象、数据对象的产生时间、数据对象的输入和数据对象的输出,重构整个事件树;
基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况,所述执行情况包括所述感兴趣数据执行所述浏览器机制的情况。
进一步的,基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况,所述执行情况包括所述感兴趣数据执行所述浏览器机制的情况包括:
确定所述感兴趣数据对象在所述事件树中对应的节点,并将所述节点作为当前节点;
基于所述事件树,以所述当前节点为基准,向前和向后遍历与所述当前节点存在直接和/或间接关系的节点对应的数据对象;
根据所述数据对象确定所述感兴趣数据对象的可达集合。
进一步的,基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况包括:
获取感兴趣数据;
根据所述感兴趣数据,确定所述感兴趣数据所在的感兴趣数据对象对应的节点;
根据所述节点和所述事件树,确定所述感兴趣数据在所述web应用的运行过程中的执行情况。
进一步的,判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,包括:
判断所述JavaScript代码对应的资源文件是否是预设的忽略资源文件,若否,则判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针。
进一步的,所述获取待分析的web应用对应的资源文件中的JavaScript代码包括:
获取待分析的web应用对应的服务器返回的相关的资源文件;
判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的代码;
若所述资源文件是超文本标记语言HTML文件,则根据设定标识确定内嵌的JavaScript代码。
第二方面,本发明实施例还提供了一种数据流分析装置,应用于浏览器端,该装置包括:
代码获取模块,用于获取待分析的web应用对应的资源文件中的JavaScript代码;
逻辑判断模块,用于判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;
数据获取模块,用于运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录数据分析模块,用于根据记录的数据对所述web应用进行分析。
第三方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
如权利要求2-5中任一所述的浏览器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据流分析方法。
第四方面,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-7中任一所述的数据流分析方法。
本发明实施例通过,在获取的待分析的web应用对应的JavaScript代码中,插入探针实现web应用借助浏览器实现代码逻辑过程中的数据的获取,根据获取的数据对web应用进行分析。因为是在源代码中插入探针,所以该方法能适用于具有不同特性的浏览器。又因为通过插入的探针自动获取对应代码逻辑过程中的数据,所以解决了使用传统的插入断点、监视变量等方式来跟踪调试数据,造成的低效和耗时的问题。
附图说明
图1为本发明实施例一提供的一种数据流分析方法的流程图;
图2是本发明是实施例二提供的一种数据流分析方法的流程图;
图3是本发明是实施例二提供的另一种数据流分析方法中的数据流获取部分的流程图;
图4是本发明是实施例二提供的另一种数据流分析方法中的数据流分析部分的流程图;
图5是本发明实施例三提供的一种数据流分析装置的结构示意图;
图6为本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据流分析方法的流程图。本实施例可适用于对借助浏览器实现代码逻辑过程中的数据进行分析的情况。该方法应用于浏览器端,可以由一种数据流分析装置来执行,该装置可以由软件和/或硬件的方式实现。参见图1,本实施例提供的一种数据流分析方法包括:
S110、获取待分析的web应用对应的资源文件中的JavaScript代码。
具体的,获取待分析的web应用对应的资源文件中的JavaScript代码过程可以包括:
获取用户确定的待分析web应用的统一资源标识符;
根据上述统一资源标识符,发送请求给上述web应用对应的服务器;
接收所述服务器返回的网页数据;
解析所述网页数据,根据解析结果请求相关的资源文件;
接收服务器返回的所述资源文件;
判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的代码;
若所述资源文件是HTML文件,则根据设定标识确定内嵌的JavaScript代码。
S120、判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针。
其中,所述探针是一段代码,用于实现对JavaScript代码的执行、变量的变化等情况进行检查。代码逻辑可以是赋值逻辑、循环逻辑、判断逻辑等,代码逻辑可以通过对应函数或符号进行判断,例如识别到“=”的符号,则判断为赋值逻辑;识别到“if”,则判断为判断逻辑。
为了提高覆盖率,可以对全部资源中的JavaScript代码进行代码逻辑的判断,并进行探针的插入。从而实现对所有代码逻辑的覆盖,进而提高数据分析的完整性。
进一步的,判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,包括:
判断所述JavaScript代码对应的资源文件是否是预设的忽略资源文件,若否,则判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针。
其中,预设的忽略资源文件是不需要插入探针的资源文件。具体可以是预设的不关心的资源文件,或者对web应用的分析没有帮助的资源文件,或者已经知道其中的数据逻辑的资源文件。在判断所述JavaScript代码对应的资源文件是预设的忽略资源文件后,将该资源文件跳过,继续执行对其他资源文件的判断。
通过判断所述JavaScript代码对应的资源文件是否是预设的忽略资源文件,可以是实现这样的效果:因为对预设的忽略资源文件中的数据逻辑不关心,所以对预设的忽略资源文件中的JavaScript代码不进行代码逻辑的判断,也不进行探针的插入。从而节省了对预设的忽略资源文件中的JavaScript代码,进行代码逻辑的判断和探针插入的时间。
S130、运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录。
典型的,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,可以是上述代码逻辑执行过程中的数据,该数据可以包括函数名、方法名、调用中传递的参数及回调函数中的语句。
S140、根据记录的数据对所述web应用进行分析。
典型的,通过所述探针获取的数据中的所述web应用借助所述浏览器实现代码逻辑过程中的数据,可以实现对在浏览器端执行的数据处理逻辑进行分析。
本发明实施例的技术方案,通过在获取的待分析的web应用对应的JavaScript代码中,插入探针实现web应用借助浏览器实现代码逻辑过程中的数据的获取,根据探针获取的数据进行对web应用进行分析。因为是在源代码中插入探针,所以该方法能适用于具有不同特性的浏览器。又因为通过插入的探针自动获取对应代码逻辑过程中的数据,所以解决了使用传统的插入断点、监视变量等方式来查看数据,造成的低效和耗时的问题。
实施例二
图2是本发明是实施例二提供的一种数据流分析方法的流程图。本实施例是在上述实施例一的基础上提出的一种可选方案。参见图2,本实施例提供的数据流分析方法包括:
S210、获取待分析web应用对应的服务器返回的资源文件。
S220、判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的代码。
S230、若所述资源文件是HTML文件,则根据设定标识确定内嵌的JavaScript代码。
S240、判断所述JavaScript代码对应的资源文件是否是预设的忽略资源文件,若否,则判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针。
S250、运行插入探针的所述资源文件,根据所述探针获取包括所述web应用借助所述浏览器实现代码逻辑过程中的数据。
S260、基于浏览器中的预设分析代码,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据。
其中,上述数据包括用户的操作事件和操作事件的DOM树节点。预设分析代码可以根据需要进行设定,本实施例对此并不进行限定。
S270、将所述数据进行归一化,并存储。
其中,归一化为将不同格式的数据转为统一的数据格式。
S280、读取所述数据,根据所述数据中的数据对象、数据对象的产生时间、数据对象的输入和数据对象的输出,重构整个事件树。
可以理解的,通过数据对象的输入和输出,可以关联出数据来源和数据去向,通过数据对象的产生时间可以确定数据的执行流程,根据数据去向和数据的执行流程可以重构整个事件树。
S290、基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况,所述执行情况包括所述感兴趣数据对象执行所述浏览器机制的情况。
其中,感兴趣数据对象可以是上述web应用执行过程中触发的任一数据对象,具体可以根据需要设定。所述浏览器机制包括:储存在用户本地设备上的数据Cookie、异步的JavaScript和XML(Asynchronous JavaScript and XML,Ajax)、Web Storage、DOM事件机制。
具体的,基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况包括:
确定所述感兴趣数据对象在所述事件树中对应的节点,并将所述节点作为当前节点;
基于所述事件树,以所述当前节点为基准,向前和向后遍历与所述当前节点存在直接和/或间接关系的节点对应的数据对象;
根据所述数据对象确定所述感兴趣数据对象的可达集合。
其中,可达集合为包含感兴趣数据对象在内的一系列关联数据对象。通过可达集合可以确定感兴趣数据对象的来源和去向。据此,可以实现对待分析web应用中的感兴趣数据对象进行分析。
具体的,基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况包括:
获取感兴趣数据;
根据所述感兴趣数据,确定所述感兴趣数据所在的感兴趣数据对象对应的节点;
根据所述节点和所述事件树,确定所述感兴趣数据在所述web应用的运行过程中的执行情况。
其中,感兴趣数据可以具体是某个参数,可以通过用户的输入获得。所述感兴趣数据在所述web应用的运行过程中的执行情况,具体可以是所述感兴趣数据再所述web应用的运行过程中经过的对象、进行的运算、调用的函数等。据此,可以实现对待分析web应用中的感兴趣数据进行分析。
在实际应用中,参见图3,数据流分析方法还可以描述为:确定待分析web应用;获取服务器返回的,基于web应用的首页的资源文件;判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的JavaScript代码;若所述资源文件是HTML文件,则根据设定标识确定内嵌的JavaScript代码;判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针;利用浏览器中的预设分析代码,解析DOM树,分析记录用户操作事件、用户数据及数据流向;将预设分析代码产生的数据进行归一化存储;若获取到服务器返回的,基于web应用的其他关联页面的资源文件,则返回继续执行,判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的JavaScript代码的步骤。
参见图4,在利用预设分析代码产生的数据对待分析web应用的分析过程可以描述为:读取预设分析代码产生的数据,根据所述数据中的数据对象、数据对象的产生时间、数据对象的输入和数据对象的输出,重构整个事件树;根据数据标记或数据值在事件树中枚举数据流向,表明整个数据流过程。从而实现对待分析web应用中数据流的分析。
本发明实施的技术方案,通过浏览器中的预设分析代码可以实现对探针获取的数据进行自定义分析;同时,通过根据探针获取的数据,重构整个事件树,基于整个事件树可以实现对感兴趣事件或感兴趣数据的整体分析。
实施例三
图5是本发明实施例三提供的一种数据流分析装置的结构示意图。参见图5,本实施例提供的数据流分析装置包括:代码获取模块10、逻辑判断模块20、数据获取模块30和数据分析模块40。其中,代码获取模块10,用于获取待分析的web应用对应的资源文件中的JavaScript代码;
逻辑判断模块20,用于判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;
数据获取模块30,用于运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录;
数据分析模块40,用于根据记录的数据对所述web应用进行分析。
本发明实施例的技术方案,通过在获取的待分析的web应用对应的JavaScript代码中,插入探针实现web应用借助浏览器实现代码逻辑过程中的数据的获取,根据获取的数据对web应用进行分析。因为是在源代码中插入探针,所以该方法能适用于具有不同特性的浏览器。又因为通过插入的探针自动获取对应代码逻辑过程中的数据,所以解决了使用传统的插入断点、监视变量等方式来跟踪调试数据,造成的低效和耗时的问题。
实施例四
图6为本发明实施例四提供的一种设备的结构示意图,如图6所示,该设备包括处理器70、存储器71、输入装置72和输出装置73,其中输出装置73包括本发明实施例中任一所述的浏览器;设备中处理器70的数量可以是一个或多个,图6中以一个处理器70为例;设备中的处理器70、存储器71、输入装置72和输出装置73可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据流分析方法对应的程序指令/模块(例如,数据流分析装置中包括的代码获取模块10、逻辑判断模块20、数据获取模块30和数据分析模块40)。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据流分析方法。
存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据流分析方法,该方法包括:
获取待分析的web应用对应的资源文件中的JavaScript代码;
判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;
运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录;
根据记录的数据对所述web应用进行分析。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据流分析方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种数据流分析方法,应用于浏览器端,其特征在于,包括:
获取待分析的网页web应用对应的资源文件中的直译式脚本语言JavaScript代码;
判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;
运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录;
根据记录的数据对所述web应用进行分析,所述分析包括根据所述数据中的数据对象、数据对象的产生时间、数据对象的输入和数据对象的输出,重构整个事件树;
所述获取待分析的web应用对应的资源文件中的JavaScript代码包括:
获取待分析的web应用对应的服务器返回的相关的资源文件;
判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的代码;
若所述资源文件是超文本标记语言HTML文件,则根据设定标识确定内嵌的JavaScript代码。
2.根据权利要求1所述的方法,其特征在于,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录包括:
基于所述浏览器中的预设分析代码,根据所述探针,获取所述web应用借助所述浏览器实现代码逻辑过程中的数据;
将所述数据进行归一化,并存储。
3.根据权利要求2所述的方法,其特征在于,根据记录的数据对所述web应用进行分析包括:
读取记录的数据;
基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况,所述执行情况包括所述感兴趣数据对象执行浏览器机制的情况。
4.根据权利要求3所述的方法,其特征在于,基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况包括:
确定所述感兴趣数据对象在所述事件树中对应的节点,并将所述节点作为当前节点;
基于所述事件树,以所述当前节点为基准,向前和向后遍历与所述当前节点存在直接和/或间接关系的节点对应的数据对象;
根据所述数据对象确定所述感兴趣数据对象的可达集合。
5.根据权利要求3所述的方法,其特征在于,基于所述事件树和获取的感兴趣数据对象,确定所述感兴趣数据对象在所述web应用的运行过程中的执行情况包括:
获取感兴趣数据;
根据所述感兴趣数据,确定所述感兴趣数据所在的感兴趣数据对象对应的节点;
根据所述节点和所述事件树,确定所述感兴趣数据在所述web应用的运行过程中的执行情况。
6.根据权利要求1所述的方法,其特征在于,判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,包括:
判断所述JavaScript代码对应的资源文件是否是预设的忽略资源文件,若否,则判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针。
7.一种数据流分析装置,应用于浏览器端,其特征在于,包括:
代码获取模块,用于获取待分析的网页web应用对应的资源文件中的直译式脚本语言JavaScript代码;
逻辑判断模块,用于判断所述JavaScript代码的代码逻辑,根据所述代码逻辑在所述JavaScript代码中插入探针,其中所述探针是一段代码;
数据获取模块,用于运行插入探针的所述资源文件,根据所述探针获取所述web应用借助所述浏览器实现代码逻辑过程中的数据,并记录;
数据分析模块,用于根据记录的数据对所述web应用进行分析,所述分析包括根据所述数据中的数据对象、数据对象的产生时间、数据对象的输入和数据对象的输出,重构整个事件树;
所述获取待分析的web应用对应的资源文件中的JavaScript代码包括:
获取待分析的web应用对应的服务器返回的相关的资源文件;
判断所述资源文件的类型,若所述资源文件是JavaScript文件,则获取其中的代码;
若所述资源文件是超文本标记语言HTML文件,则根据设定标识确定内嵌的JavaScript代码。
8.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
如权利要求2-5中任一所述的浏览器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的数据流分析方法。
9.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的数据流分析方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710874992.4A CN107622015B (zh) | 2017-09-25 | 2017-09-25 | 一种数据流分析方法、装置、设备及介质 |
US16/314,148 US20210224349A1 (en) | 2017-09-25 | 2018-04-12 | Method and apparatus for analyzing data flow, device, and medium |
PCT/CN2018/082822 WO2019056741A1 (zh) | 2017-09-25 | 2018-04-12 | 数据流分析方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710874992.4A CN107622015B (zh) | 2017-09-25 | 2017-09-25 | 一种数据流分析方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107622015A CN107622015A (zh) | 2018-01-23 |
CN107622015B true CN107622015B (zh) | 2021-05-04 |
Family
ID=61090590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710874992.4A Active CN107622015B (zh) | 2017-09-25 | 2017-09-25 | 一种数据流分析方法、装置、设备及介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210224349A1 (zh) |
CN (1) | CN107622015B (zh) |
WO (1) | WO2019056741A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622015B (zh) * | 2017-09-25 | 2021-05-04 | 北京因特睿软件有限公司 | 一种数据流分析方法、装置、设备及介质 |
KR101891140B1 (ko) * | 2017-12-16 | 2018-08-23 | 세타랩 주식회사 | 테스트 자동화를 위한 기법 |
CN109240700B (zh) * | 2018-07-06 | 2021-04-23 | 北京大学 | 关键代码定位方法与系统 |
CN110334302B (zh) * | 2019-05-24 | 2021-09-10 | 北京因特睿软件有限公司 | 复杂Web应用前端运行时分析方法 |
CN110262804A (zh) * | 2019-06-13 | 2019-09-20 | 南京邮电大学 | 基于程序切片的JavaScript延续传递风格转化方法 |
CN110472178A (zh) * | 2019-08-20 | 2019-11-19 | 北京博睿宏远数据科技股份有限公司 | 一种探针注入方法、装置、计算机设备及存储介质 |
CN110781058B (zh) * | 2019-11-05 | 2023-07-18 | 北京博睿宏远数据科技股份有限公司 | 一种移动端应用性能数据采集方法、装置、设备及介质 |
CN111538635B (zh) * | 2020-04-14 | 2023-11-17 | 北京宝兰德软件股份有限公司 | 系统资源画像的生成方法、装置、电子设备和存储介质 |
CN112860543A (zh) * | 2021-01-20 | 2021-05-28 | 维沃移动通信(深圳)有限公司 | 检测页面运行的方法和电子设备 |
CN112783734A (zh) * | 2021-02-02 | 2021-05-11 | 北京比特易湃信息技术有限公司 | 一种适用于前端页面性能和错误指标采集的系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006058075A2 (en) * | 2004-11-22 | 2006-06-01 | Truveo, Inc. | Method and apparatus for an application crawler |
CN103279567A (zh) * | 2013-06-18 | 2013-09-04 | 重庆邮电大学 | 一种基于AJAX的Web数据采集方法及系统 |
CN104252409B (zh) * | 2013-06-26 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 一种获取WebApp执行过程的方法及系统 |
US9098636B2 (en) * | 2013-12-18 | 2015-08-04 | Software Ag | White-box testing systems and/or methods in web applications |
CN104598378B (zh) * | 2014-12-31 | 2018-01-30 | 天津橙子科技有限公司 | 一种web工程自动化测试探针 |
CN105095092A (zh) * | 2015-09-25 | 2015-11-25 | 南京大学 | 基于静态分析和动态运行的Web应用JavaScript代码原子性违反检测 |
CN106897215A (zh) * | 2017-01-20 | 2017-06-27 | 华南理工大学 | 一种基于WebView网页加载性能及用户行为流数据采集的方法 |
CN107622015B (zh) * | 2017-09-25 | 2021-05-04 | 北京因特睿软件有限公司 | 一种数据流分析方法、装置、设备及介质 |
-
2017
- 2017-09-25 CN CN201710874992.4A patent/CN107622015B/zh active Active
-
2018
- 2018-04-12 US US16/314,148 patent/US20210224349A1/en not_active Abandoned
- 2018-04-12 WO PCT/CN2018/082822 patent/WO2019056741A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20210224349A1 (en) | 2021-07-22 |
CN107622015A (zh) | 2018-01-23 |
WO2019056741A1 (zh) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107622015B (zh) | 一种数据流分析方法、装置、设备及介质 | |
CN108628751B (zh) | 一种无用依赖项检测方法及装置 | |
US10699017B2 (en) | Determining coverage of dynamic security scans using runtime and static code analyses | |
Bento et al. | Automated analysis of distributed tracing: Challenges and research directions | |
US11977934B2 (en) | Automation solutions for event logging and debugging on KUBERNETES | |
CN109597618B (zh) | 程序开发方法、装置、计算机设备及存储介质 | |
CN112532490A (zh) | 回归测试系统、方法和电子设备 | |
CN111611152B (zh) | 测试用例生成方法、装置、电子设备及可读存储介质 | |
CN110598135A (zh) | 网络请求处理方法、装置、计算机可读介质及电子设备 | |
CN115186274A (zh) | 基于iast的安全测试方法及装置 | |
CN111580821B (zh) | 脚本绑定方法、装置、电子设备及计算机可读存储介质 | |
CN113645138B (zh) | 一种路由配置生成方法、装置、电子设备及存储介质 | |
CN111124937B (zh) | 基于插桩函数辅助提高生成测试用例效率的方法及系统 | |
CN112632419A (zh) | 域名预解析配置方法、装置、计算机设备及存储介质 | |
Wang et al. | Fast reproducing web application errors | |
CN111767161A (zh) | 远程调用深度识别方法、装置、计算机设备及可读存储介质 | |
CN113190235B (zh) | 一种代码的分析方法、装置、电子终端及存储介质 | |
CN111966930B (zh) | 基于XPath序列的网页列表解析方法及系统 | |
CN112346981A (zh) | 联调测试覆盖率检测方法及系统 | |
CN113377674B (zh) | 一种日志代码添加方法及装置 | |
CN113010240B (zh) | 一种数据采集方法、系统、电子设备及存储介质 | |
CN114706785B (zh) | 一种覆盖率过滤文件生成方法、装置、设备及介质 | |
CN117435481A (zh) | 应用程序的溯源检测方法、装置及设备 | |
CN114764461A (zh) | 数据采集方法、装置、电子设备及计算机可读存储介质 | |
CN117493180A (zh) | 测试用例的生成方法、装置和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |