CN104778070A - 隐藏变量抽取方法和设备以及信息提取方法和设备 - Google Patents
隐藏变量抽取方法和设备以及信息提取方法和设备 Download PDFInfo
- Publication number
- CN104778070A CN104778070A CN201410017788.7A CN201410017788A CN104778070A CN 104778070 A CN104778070 A CN 104778070A CN 201410017788 A CN201410017788 A CN 201410017788A CN 104778070 A CN104778070 A CN 104778070A
- Authority
- CN
- China
- Prior art keywords
- variable
- information flow
- expectation value
- page
- needed
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种隐藏变量抽取方法和设备以及信息提取方法和设备。该隐藏变量抽取方法包括:获得起始URL及其测试例,测试例包括:用户输入及其在起始URL对应的起始页面的DOM树中的位置、以及通过在起始页面中输入用户输入而得到的最终页面上的期望值;获取起始页面、最终页面、以及两者之间的中间页面中的所有JS代码;按照预定的准则,解析所获取的JS代码,以确定所有变量的信息流,每个变量的信息流包括生成变量的值所需的变量和JS代码;根据用户输入及其在DOM树中的位置、以及最终页面上的期望值,确定用于生成期望值所需的变量;根据用于生成期望值所需的变量,从所有变量的信息流中抽取出生成期望值所需的信息流。
Description
技术领域
本发明一般地涉及信息处理领域。具体而言,本发明涉及一种寻找在Java script(Java脚本,下文中简称为JS)代码中隐藏的变量的方法和设备以及一种信息提取方法和设备。
背景技术
在web应用中,JS得到了广泛的应用。这提高了抽取web中的信息的难度。传统的信息抽取技术直接从原始网页(即下载的网页,如HTML(Hyper Text Mark-up Language,超文本标记语言)网页)的DOM(DocumentObject Model,文档对象模型)树中抽取变量的值。然而,伴随着JS的使用,所需要的值(下文中简称为期望值)以及为了生成期望值所需的中间值可能由JS代码动态产生并***DOM树中,并不出现在原始网页的DOM树中。
也就是说,期望值以及为了生成期望值所需的中间值可能由于JS代码的使用而隐藏起来,导致无法直接提取相关变量的值从而抽取期望值。
因此,期望一种能够寻找在JS代码中隐藏的变量的方法和设备、以及利用上述方法和设备来提取信息的方法和设备。
发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
本发明的目的是针对现有技术的上述问题,提出了一种能够寻找在JS代码中隐藏的变量的方法和设备、以及相应的信息提取方法和设备。
为了实现上述目的,根据本发明的一个方面,提供了一种寻找在JS代码中隐藏的变量的方法,包括:获得起始URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JS代码;按照预定的准则,解析所获取的JS代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JS代码;根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;以及根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
根据本发明的另一个方面,提供了一种信息提取方法,包括:利用上述寻找在JS代码中隐藏的变量的方法,提取生成期望值所需的变量和信息流;以及按所提取的信息流,执行相关的JS代码,以得到期望值。
根据本发明的再一个方面,提供了一种寻找在JS代码中隐藏的变量的设备,包括:获得装置,被配置为:获得起始URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;获取装置,被配置为:获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JS代码;解析装置,被配置为:按照预定的准则,解析所获取的JS代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JS代码;确定装置,被配置为:根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;以及抽取装置,被配置为:根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
根据本发明的又一个方面,提供了一种信息提取设备,包括:上述寻找在JS代码中隐藏的变量的设备,用于提取生成期望值所需的变量和信息流;以及执行装置,被配置为:按所提取的信息流,执行相关的JS代码,以得到期望值。
另外,根据本发明的另一方面,还提供了一种存储介质。所述存储介质包括机器可读的程序代码,当在信息处理设备上执行所述程序代码时,所述程序代码使得所述信息处理设备执行根据本发明的上述方法。
此外,根据本发明的再一方面,还提供了一种程序产品。所述程序产品包括机器可执行的指令,当在信息处理设备上执行所述指令时,所述指令使得所述信息处理设备执行根据本发明的上述方法。
附图说明
参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。附图中的部件只是为了示出本发明的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。附图中:
图1示出了根据本发明的实施例的隐藏变量抽取方法的流程图;
图2示出了根据本发明的实施例的信息抽取方法的流程图;
图3示出了根据本发明实施例的隐藏变量抽取设备的结构方框图;
图4示出了根据本发明实施例的信息抽取设备的结构方框图;以及
图5示出了可用于实施根据本发明实施例的方法和设备的计算机的示意性框图。
具体实施方式
在下文中将结合附图对本发明的示范性实施例进行详细描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施方式的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,例如,符合与***及业务相关的那些限制条件,并且这些限制条件可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。另外,还需要指出的是,在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。
本发明的基本思想是提供测试例,通过分析测试例来确定起始页面、中间页面(起始页面和最终页面之间的重定向页面)和最终页面中的所需变量,提取并分析所有页面中的JS代码以获得所有变量的信息流,根据所需变量抽取所需的信息流。所抽取的信息流体现了从用户输入到期望值的所需的变量关系、JS代码和逻辑顺序。因此,重复所抽取的信息流就可以得到对应于用户输入的期望值。
下面具体说明本发明的实施例,以期对本发明的实质内容有充分的理解。
现在,参照图1描述根据本发明的实施例的隐藏变量抽取方法的流程。
图1示出了根据本发明的实施例的隐藏变量抽取方法的流程图。如图1所示,根据本发明的实施例的隐藏变量抽取方法寻找在JS代码中隐藏的变量,该方法包括如下步骤:获得起始URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值(步骤S1);获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JS代码(步骤S2);按照预定的准则,解析所获取的JS代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JS代码(步骤S3);根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量(步骤S4);根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流(步骤S5)。
在步骤S1中,获得起始URL(Uniform Resource Locator,统一资源定位符)及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值。
具体地说,起始URL是起始页面的URL,是用户输入的入口。通常,用户将起始URL键入浏览器的地址栏,返回的页面是起始页面。用户在起始页面中进行输入,例如用户名、密码、查询关键词等,经过一系列的中间页面,即重定向页面之后,返回最终页面,在最终页面上呈现出用户希望知道的期望值。因此,无论是利用测试例寻找隐藏值,还是利用找到的信息流提取期望值,都要从起始URL开始。
起始页面例如包括如下动作:加载HTML主页,加载JS、CSS(CascadingStyle Sheet,级联样式表)、图像文件等,执行JS代码,执行onLoad事件或onTimer事件,用户动作(输入名称和密码、点击按钮),执行触发的事件,提交表格或改变位置。
中间页面例如包括如下动作:加载HTML主页,加载JS、CSS、图像文件等,执行JS代码,执行onLoad事件或onTimer事件,重定向。
最终页面例如包括如下动作:加载HTML主页,加载JS、CSS、图像文件等,执行JS代码,执行onLoad事件或onTimer事件。
此外,在测试例中,还需提供用户输入及其在起始页面的DOM树中的位置的信息。知晓了用户输入在起始页面的DOM树中的位置就可以将用户输入的值赋予到相应位置上的变量。在后续的处理中,基于这些位置对应的变量,确定生成期望值所需的变量。
不言而喻,为了明确寻找的目标,还需在测试例中提供在最终页面上显示的用户希望看到的期望值。
根据上述信息,就可以逐步找出体现从用户输入到期望值的所需的变量关系、JS代码和逻辑顺序的信息流。
在步骤S2中,获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JS代码。
由于本发明所解决的问题的根源在于JS代码的使用,所以有必要获取和分析JS代码,将有用的JS代码提取出来,以用于提取期望值。
另一方面,有必要寻找变量之间的关系,分析出哪些变量对于期望值的生成起到作用,也就是在生成期望值的信息流中涉及的变量。
因此,在步骤S3中,按照预定的准则,解析所获取的JS代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JS代码。
信息流解析的目标在于找出变量是被哪些其他变量如何影响的。
在一个页面的内部的变量之间存在互相的影响。主要有两种类型:一种是JS代码动态执行,根据变量A的值计算出变量B的值。此时,需要提取相应的JS代码。另一种是通过将变量A的值***到DOM树,从而影响到变量B的值。此时,直接提取变量A和变量B,认定变量B是生成变量A的值所需的变量。变量对变量的影响实际上是写操作,跟踪写操作的指令,可以知道哪个变量对哪个变量有影响。
故而,在步骤S3中,针对每一个页面,解析出该页面内的所有变量的信息流。
举例来说,对于代码“var i=0;var j=1;i=j+10;j=j+20”来说,可提取i的信息流“var i=0;var j=1;i=j+10”和j的信息流“varj=1;j=j+20”。
解析引擎例如可以是Rhino。基于由Rhino输出的解析树,可以寻找在其背后的信息流。
其中,对于同名的变量,可根据scope(范围)的不同而加以区分。
预定的准则可以包括:
(1)如果变量A依赖于变量B,则变量B的信息流合并入变量A的信息流;
(2)如果变量A依赖于函数C,则函数C的返回值D的信息流合并入变量A的信息流,函数C的返回值D的信息流包括函数C的调用指令和函数所有参数的信息流;
(3)如果变量A被赋值或被传递为函数C的参数是基于条件或循环的,则该条件或循环被包含在变量A的信息流中;
(4)信息流包括浏览器API(Application Programming Interface,应用程序编程接口),如t=getElementById,则getElementById要被包括在变量t的信息流中。
在步骤S4中,根据用户输入及其在DOM树中的位置、以及最终页面上的期望值,确定用于生成期望值所需的变量。
在步骤S3中,找到了每个页面内部的信息流,也就是每个页面内部的各个变量之间如何互相影响的信息。如前所述,从起始页面开始,经一系列的中间页面,得到最终页面。在各个页面之间起连接作用的是HTTP请求。基于在前的页面中的变量的值,生成HTTP请求并发往服务器,服务器应HTTP请求,返回在后的页面。因此,在步骤S4中,有必要找到那些对于生成引发下一个页面的HTTP请求的生成有用的变量。同时,对于最终页面而言,有必要确定最终呈现的期望值对应的变量。这样,才能从后往前顺着变量之间的信息流,找到用于生成期望值所需的所有变量及其逻辑顺序。
因此,在步骤S4中,针对不同的页面类型,采用不同的处理方式。
对于起始页面,根据用户输入及其在DOM树中的位置,确定用户输入对应的输入变量。
对于最终页面,在最终页面的DOM树上搜索期望值,以确定期望值对应的变量。如果在最终页面的DOM树上搜索不到期望值,则找到用于生成期望值的JS代码。
对于中间页面,确定导致从起始页面或中间页面进入下一个页面的变量。可以从表格提交的JS API、window.location.href或者onLoad事件中定位这样的变量。
在步骤S5中,根据用于生成期望值所需的变量,从所有变量的信息流中抽取出生成期望值所需的信息流。
具体地,从最终页面的期望值对应的变量,按照信息流,往起始页面倒推,寻找从用户输入一直生成期望值的完整的信息流。
如果用于生成期望值所需的变量是静态变量,即可直接从DOM树上提取该变量的值,则直接提取与其相关的信息流。如果用于生成期望值所需的变量是动态变量,即获得该变量的值依赖于JS代码的执行,则提取与其相关的JS代码。
举例来说,如果变量t对应的代码是“vart=document.getElementById(“id_hidden”).value”,则变量t为静态变量。如果变量t对应的代码为“var t=calculateValue(j)”,则变量t为动态变量。
此外,要提取所有的eval函数。这是因为eval函数将作为其参数的字符串当作JS代码来执行,所以无法确知其影响的每个变量。
经过如上的步骤S1-S5,就可以抽取到被JS代码隐藏的变量,从而可以掌握反映从用户输入如何一步步地生成期望值的完整信息流。
因此,可以进行期望值的抽取。
下面,参考图2说明根据本发明的实施例的信息抽取方法。
图2示出了根据本发明的实施例的信息抽取方法的流程图。
如图2所示,根据本发明的实施例的信息抽取方法,包括如下步骤:利用如上所述的寻找在JS代码中隐藏的变量的方法,提取生成期望值所需的变量和信息流(步骤S21);以及按所提取的信息流,执行相关的JS代码,以得到期望值(步骤S22)。
具体地,根据所提取的变量和信息流,可以从用户输入出发,逐个计算需要的变量的值。其中,如果变量的值是根据之前变量的赋值而得到,则可直接如此进行计算;如果变量的值是通过JS代码动态执行而得到,则可通过执行已提取出来的JS代码来计算。
变量的值的计算包括一个页面内的,也包括页面之间的。当一个页面中的、构成引起下一个页面的HTTP请求的变量的值已知时,基于这样的变量生成HTTP请求,以请求下个页面。如此类推,直至获得最终页面。在最终页面的DOM树中直接获取最终值,或者执行JS代码以获取最终值。
下面,将参照图3描述根据本发明实施例的隐藏变量抽取设备。
图3示出了根据本发明实施例的隐藏变量抽取设备的结构方框图。如图3所示,根据本发明实施例的隐藏变量抽取设备300用于寻找在JS代码中隐藏的变量,该隐藏变量抽取设备300包括:获得装置31,被配置为:获得起始URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;获取装置32,被配置为:获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JS代码;解析装置33,被配置为:按照预定的准则,解析所获取的JS代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JS代码;确定装置34,被配置为:根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;以及抽取装置35,被配置为:根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
在一个实施例中,预定的准则包括:如果变量A依赖于变量B,则变量B的信息流合并入变量A的信息流;如果变量A依赖于函数C,则函数C的返回值D的信息流合并入变量A的信息流,函数C的返回值D的信息流包括函数C的调用指令和函数所有参数的信息流;如果变量A被赋值或被传递为函数C的参数是基于条件或循环的,则该条件或循环被包含在变量A的信息流中;信息流包括浏览器API。
在一个实施例中,确定装置34被进一步配置为:根据所述用户输入及其在所述DOM树中的位置,确定所述用户输入对应的输入变量。
在一个实施例中,确定装置34被进一步配置为:确定导致从所述起始页面或所述中间页面进入下一个页面的变量。
在一个实施例中,确定装置34被进一步配置为:在所述最终页面的DOM树上搜索所述期望值,以确定所述期望值对应的变量。
在一个实施例中,确定装置34被进一步配置为:如果在所述最终页面的DOM树上搜索不到所述期望值,则找到用于生成所述期望值的JS代码。
在一个实施例中,抽取装置35被进一步配置为:如果所述用于生成期望值所需的变量是静态变量,则直接提取与其相关的信息流;如果所述用于生成期望值所需的变量是动态变量,则提取与其相关的JS代码。
在一个实施例中,抽取装置35被进一步配置为:提取所有的eval函数。
下面,将参照图4描述根据本发明实施例的信息抽取设备。
图4示出了根据本发明实施例的信息抽取设备400的结构方框图。如图4所示,根据本发明实施例的信息抽取设备400包括:如上所述的隐藏变量抽取装置41,用于提取生成期望值所需的变量和信息流;以及执行装置42,被配置为:按所提取的信息流,执行相关的JS代码,以得到期望值。
在一个实施例中,执行装置42被进一步配置为:执行JS代码以得到变量值,基于变量值生成HTTP请求以请求下个页面直至获取最终页面;在所述最终页面的DOM树中直接获取所述最终值,或者执行JS代码以获取所述最终值。
由于在根据本发明的隐藏变量抽取设备、信息抽取设备中所包括的各个装置和单元中的处理分别与上面描述的隐藏变量抽取方法、信息抽取方法中所包括的各个步骤中的处理类似,因此为了简洁起见,在此省略这些装置和单元的详细描述。
此外,这里尚需指出的是,上述设备中各个组成装置、单元可以通过软件、固件、硬件或其组合的方式进行配置。配置可使用的具体手段或方式为本领域技术人员所熟知,在此不再赘述。在通过软件或固件实现的情况下,从存储介质或网络向具有专用硬件结构的计算机(例如图5所示的通用计算机500)安装构成该软件的程序,该计算机在安装有各种程序时,能够执行各种功能等。
图5示出了可用于实施根据本发明实施例的方法和设备的计算机的示意性框图。
在图5中,中央处理单元(CPU)501根据只读存储器(ROM)502中存储的程序或从存储部分508加载到随机存取存储器(RAM)503的程序执行各种处理。在RAM503中,还根据需要存储当CPU501执行各种处理等等时所需的数据。CPU501、ROM502和RAM503经由总线504彼此连接。输入/输出接口505也连接到总线504。
下述部件连接到输入/输出接口505:输入部分506(包括键盘、鼠标等等)、输出部分507(包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等,和扬声器等)、存储部分508(包括硬盘等)、通信部分509(包括网络接口卡比如LAN卡、调制解调器等)。通信部分509经由网络比如因特网执行通信处理。根据需要,驱动器510也可连接到输入/输出接口505。可拆卸介质511比如磁盘、光盘、磁光盘、半导体存储器等等可以根据需要被安装在驱动器510上,使得从中读出的计算机程序根据需要被安装到存储部分508中。
在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质511安装构成软件的程序。
本领域的技术人员应当理解,这种存储介质不局限于图5所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质511。可拆卸介质511的例子包含磁盘(包含软盘(注册商标))、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)(注册商标))和半导体存储器。或者,存储介质可以是ROM502、存储部分508中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。
本发明还提出一种存储有机器可读取的指令代码的程序产品。所述指令代码由机器读取并执行时,可执行上述根据本发明实施例的方法。
相应地,用于承载上述存储有机器可读取的指令代码的程序产品的存储介质也包括在本发明的公开中。所述存储介质包括但不限于软盘、光盘、磁光盘、存储卡、存储棒等等。
在上面对本发明具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
此外,本发明的方法不限于按照说明书中描述的时间顺序来执行,也可以按照其他的时间顺序地、并行地或独立地执行。因此,本说明书中描述的方法的执行顺序不对本发明的技术范围构成限制。
尽管上面已经通过对本发明的具体实施例的描述对本发明进行了披露,但是,应该理解,上述的所有实施例和示例均是示例性的,而非限制性的。本领域的技术人员可在所附权利要求的精神和范围内设计对本发明的各种修改、改进或者等同物。这些修改、改进或者等同物也应当被认为包括在本发明的保护范围内。
附记
1.一种寻找在JAVA脚本代码中隐藏的变量的方法,包括:
获得起始统一资源定位符URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的文档对象模型DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;
获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JAVA脚本代码;
按照预定的准则,解析所获取的JAVA脚本代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JAVA脚本代码;
根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;以及
根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
2.如附记1所述的方法,其中所述预定的准则包括:
如果变量A依赖于变量B,则变量B的信息流合并入变量A的信息流;
如果变量A依赖于函数C,则函数C的返回值D的信息流合并入变量A的信息流,函数C的返回值D的信息流包括函数C的调用指令和函数所有参数的信息流;
如果变量A被赋值或被传递为函数C的参数是基于条件或循环的,则该条件或循环被包含在变量A的信息流中;
信息流包括浏览器API。
3.如附记1所述的方法,其中所述根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量包括:
根据所述用户输入及其在所述DOM树中的位置,确定所述用户输入对应的输入变量。
4.如附记1所述的方法,其中所述根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量包括:
确定导致从所述起始页面或所述中间页面进入下一个页面的变量。
5.如附记1所述的方法,其中所述根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量包括:
在所述最终页面的DOM树上搜索所述期望值,以确定所述期望值对应的变量。
6.如附记5所述的方法,其中如果在所述最终页面的DOM树上搜索不到所述期望值,则找到用于生成所述期望值的JAVA脚本代码。
7.如附记1所述的方法,其中所述根据用于生成期望值所需的变量,从所有变量的信息流中抽取出生成期望值所需的信息流包括:
如果所述用于生成期望值所需的变量是静态变量,则直接提取与其相关的信息流;
如果所述用于生成期望值所需的变量是动态变量,则提取与其相关的JAVA脚本代码。
8.如附记7所述的方法,其中所述根据用于生成期望值所需的变量,从所有变量的信息流中抽取出生成期望值所需的信息流还包括:
提取所有的eval函数。
9.一种信息提取方法,包括:
利用附记1-8所述的方法,提取生成期望值所需的变量和信息流;以及
按所提取的信息流,执行相关的JAVA脚本代码,以得到期望值。
10.如附记9所述的信息提取方法,其中
执行JAVA脚本代码以得到变量值,基于变量值生成HTTP请求以请求下个页面直至获取最终页面;
在所述最终页面的DOM树中直接获取所述最终值,或者执行JAVA脚本代码以获取所述最终值。
11.一种寻找在JAVA脚本代码中隐藏的变量的设备,包括:
获得装置,被配置为:获得起始统一资源定位符URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的文档对象模型DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;
获取装置,被配置为:获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JAVA脚本代码;
解析装置,被配置为:按照预定的准则,解析所获取的JAVA脚本代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JAVA脚本代码;
确定装置,被配置为:根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;以及
抽取装置,被配置为:根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
12.如附记11所述的设备,其中所述预定的准则包括:
如果变量A依赖于变量B,则变量B的信息流合并入变量A的信息流;
如果变量A依赖于函数C,则函数C的返回值D的信息流合并入变量A的信息流,函数C的返回值D的信息流包括函数C的调用指令和函数所有参数的信息流;
如果变量A被赋值或被传递为函数C的参数是基于条件或循环的,则该条件或循环被包含在变量A的信息流中;
信息流包括浏览器API。
13.如附记11所述的设备,其中所述确定装置被进一步配置为:
根据所述用户输入及其在所述DOM树中的位置,确定所述用户输入对应的输入变量。
14.如附记11所述的设备,其中所述确定装置被进一步配置为:
确定导致从所述起始页面或所述中间页面进入下一个页面的变量。
15.如附记11所述的设备,其中所述确定装置被进一步配置为:
在所述最终页面的DOM树上搜索所述期望值,以确定所述期望值对应的变量。
16.如附记15所述的设备,其中确定装置被进一步配置为:如果在所述最终页面的DOM树上搜索不到所述期望值,则找到用于生成所述期望值的JAVA脚本代码。
17.如附记11所述的设备,其中所述抽取装置被进一步配置为:
如果所述用于生成期望值所需的变量是静态变量,则直接提取与其相关的信息流;
如果所述用于生成期望值所需的变量是动态变量,则提取与其相关的JAVA脚本代码。
18.如附记17所述的设备,其中所述抽取装置被进一步配置为:
提取所有的eval函数。
19.一种信息提取设备,包括:
如附记11-18所述的设备,用于提取生成期望值所需的变量和信息流;以及
执行装置,被配置为:按所提取的信息流,执行相关的JAVA脚本代码,以得到期望值。
20.如附记19所述的信息提取设备,其中所述执行装置被进一步配置为:
执行JAVA脚本代码以得到变量值,基于变量值生成HTTP请求以请求下个页面直至获取最终页面;
在所述最终页面的DOM树中直接获取所述最终值,或者执行JAVA脚本代码以获取所述最终值。
Claims (10)
1.一种寻找在JAVA脚本代码中隐藏的变量的方法,包括:
获得起始统一资源定位符URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的文档对象模型DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;
获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JAVA脚本代码;
按照预定的准则,解析所获取的JAVA脚本代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JAVA脚本代码;
根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;
根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
2.如权利要求1所述的方法,其中所述预定的准则包括:
如果变量A依赖于变量B,则变量B的信息流合并入变量A的信息流;
如果变量A依赖于函数C,则函数C的返回值D的信息流合并入变量A的信息流,函数C的返回值D的信息流包括函数C的调用指令和函数所有参数的信息流;
如果变量A被赋值或被传递为函数C的参数是基于条件或循环的,则该条件或循环被包含在变量A的信息流中;
信息流包括浏览器应用程序编程接口API。
3.如权利要求1所述的方法,其中所述根据用户输入及其在DOM树中的位置、以及最终页面上的期望值,确定用于生成期望值所需的变量包括:
根据所述用户输入及其在所述DOM树中的位置,确定所述用户输入对应的输入变量。
4.如权利要求1所述的方法,其中所述根据用户输入及其在DOM树中的位置、以及最终页面上的期望值,确定用于生成期望值所需的变量包括:
确定导致从所述起始页面或所述中间页面进入下一个页面的变量。
5.如权利要求1所述的方法,其中所述根据用户输入及其在DOM树中的位置、以及最终页面上的期望值,确定用于生成期望值所需的变量包括:
在所述最终页面的DOM树上搜索所述期望值,以确定所述期望值对应的变量。
6.如权利要求5所述的方法,其中如果在所述最终页面的DOM树上搜索不到所述期望值,则找到用于生成所述期望值的JAVA脚本代码。
7.如权利要求1所述的方法,其中所述根据用于生成期望值所需的变量,从所有变量的信息流中抽取出生成期望值所需的信息流包括:
如果所述用于生成期望值所需的变量是静态变量,则直接提取与其相关的信息流;
如果所述用于生成期望值所需的变量是动态变量,则提取与其相关的JAVA脚本代码。
8.如权利要求7所述的方法,其中所述根据用于生成期望值所需的变量,从所有变量的信息流中抽取出生成期望值所需的信息流还包括:
提取所有的eval函数。
9.一种信息提取方法,包括:
利用权利要求1-8所述的方法,提取生成期望值所需的变量和信息流;
按所提取的信息流,执行相关的JAVA脚本代码,以得到期望值。
10.一种寻找在JAVA脚本代码中隐藏的变量的设备,包括:
获得装置,被配置为:获得起始统一资源定位符URL及其测试例,所述测试例包括:用户输入及其在所述起始URL对应的起始页面的文档对象模型DOM树中的位置、以及通过在所述起始页面中输入所述用户输入而得到的最终页面上的期望值;
获取装置,被配置为:获取所述起始页面、所述最终页面、以及两者之间的中间页面中的所有JAVA脚本代码;
解析装置,被配置为:按照预定的准则,解析所获取的JAVA脚本代码,以确定所有变量的信息流,每个变量的信息流包括生成所述变量的值所需的变量和JAVA脚本代码;
确定装置,被配置为:根据所述用户输入及其在所述DOM树中的位置、以及所述最终页面上的期望值,确定用于生成所述期望值所需的变量;以及
抽取装置,被配置为:根据所述用于生成所述期望值所需的变量,从所述所有变量的信息流中抽取出生成所述期望值所需的信息流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410017788.7A CN104778070B (zh) | 2014-01-15 | 2014-01-15 | 隐藏变量抽取方法和设备以及信息提取方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410017788.7A CN104778070B (zh) | 2014-01-15 | 2014-01-15 | 隐藏变量抽取方法和设备以及信息提取方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778070A true CN104778070A (zh) | 2015-07-15 |
CN104778070B CN104778070B (zh) | 2018-07-06 |
Family
ID=53619555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410017788.7A Expired - Fee Related CN104778070B (zh) | 2014-01-15 | 2014-01-15 | 隐藏变量抽取方法和设备以及信息提取方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778070B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224948A (zh) * | 2015-09-22 | 2016-01-06 | 清华大学 | 一种基于图像处理的最大间隔深度生成模型的生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251824A (zh) * | 2008-03-31 | 2008-08-27 | 中兴通讯股份有限公司 | 测试公共对象请求代理结构的方法和测试工具 |
US20110078556A1 (en) * | 2009-09-30 | 2011-03-31 | Fujitsu Limited | Client-tier validation of dynamic web applications |
US20110191676A1 (en) * | 2010-01-29 | 2011-08-04 | Microsoft Corporation | Cross-Browser Interactivity Recording, Playback, and Editing |
CN102831345A (zh) * | 2012-07-30 | 2012-12-19 | 西北工业大学 | Sql注入漏洞检测中的注入点提取方法 |
CN103268361A (zh) * | 2013-06-07 | 2013-08-28 | 百度在线网络技术(北京)有限公司 | 网页中隐藏url的提取方法、装置和*** |
-
2014
- 2014-01-15 CN CN201410017788.7A patent/CN104778070B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251824A (zh) * | 2008-03-31 | 2008-08-27 | 中兴通讯股份有限公司 | 测试公共对象请求代理结构的方法和测试工具 |
US20110078556A1 (en) * | 2009-09-30 | 2011-03-31 | Fujitsu Limited | Client-tier validation of dynamic web applications |
US20110191676A1 (en) * | 2010-01-29 | 2011-08-04 | Microsoft Corporation | Cross-Browser Interactivity Recording, Playback, and Editing |
CN102831345A (zh) * | 2012-07-30 | 2012-12-19 | 西北工业大学 | Sql注入漏洞检测中的注入点提取方法 |
CN103268361A (zh) * | 2013-06-07 | 2013-08-28 | 百度在线网络技术(北京)有限公司 | 网页中隐藏url的提取方法、装置和*** |
Non-Patent Citations (1)
Title |
---|
王保卫 等: "基于XML的移动设备人机交互引擎", 《计算机应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224948A (zh) * | 2015-09-22 | 2016-01-06 | 清华大学 | 一种基于图像处理的最大间隔深度生成模型的生成方法 |
CN105224948B (zh) * | 2015-09-22 | 2019-03-01 | 清华大学 | 一种基于图像处理的最大间隔深度生成模型的生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104778070B (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Uzun | A novel web scraping approach using the additional information obtained from web pages | |
US8065667B2 (en) | Injecting content into third party documents for document processing | |
CN109190049B (zh) | 关键词推荐方法、***、电子设备和计算机可读介质 | |
US6021416A (en) | Dynamic source code capture for a selected region of a display | |
WO2019051426A1 (en) | PRUNING ENGINE | |
CN105045645B (zh) | 网页加载方法、装置及*** | |
US9311062B2 (en) | Consolidating and reusing portal information | |
US11263062B2 (en) | API mashup exploration and recommendation | |
Uzun et al. | Comparison of python libraries used for web data extraction | |
Alrashedy et al. | Scc++: Predicting the programming language of questions and snippets of stack overflow | |
US20210081598A1 (en) | Process for creating a fixed length representation of a variable length input | |
CN105205080A (zh) | 冗余文件清理方法、装置和*** | |
CN102375847A (zh) | 形成用于生成文档模板的合并树的方法以及装置 | |
CN111859075A (zh) | 一种基于异步处理框架的具有自动测试功能的数据爬取方法 | |
CN114398138A (zh) | 界面生成方法、装置、计算机设备和存储介质 | |
CN113901169A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
Nguyen et al. | Varis: IDE support for embedded client code in PHP web applications | |
Kowalczyk et al. | Enhancing SEO in single-page web applications in contrast with multi-page applications | |
US10372744B2 (en) | DITA relationship table based on contextual taxonomy density | |
CN104778070A (zh) | 隐藏变量抽取方法和设备以及信息提取方法和设备 | |
CN108664511B (zh) | 获取网页信息方法和装置 | |
Mathur et al. | Machine-Learning directed Article Detection on the Web using DOM and text-based features | |
US10769388B2 (en) | Changing a language for a user session replay | |
CN109597873B (zh) | 语料数据的处理方法、装置、计算机可读介质及电子设备 | |
CN110147477B (zh) | Web***的数据资源模型化提取方法、装置以及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180706 Termination date: 20190115 |