CN107798051A - 文件对象模型事务爬行器 - Google Patents
文件对象模型事务爬行器 Download PDFInfo
- Publication number
- CN107798051A CN107798051A CN201710700555.0A CN201710700555A CN107798051A CN 107798051 A CN107798051 A CN 107798051A CN 201710700555 A CN201710700555 A CN 201710700555A CN 107798051 A CN107798051 A CN 107798051A
- Authority
- CN
- China
- Prior art keywords
- event
- state
- document dbject
- dbject model
- dom
- 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.)
- Pending
Links
Classifications
-
- 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/986—Document structures and storage, e.g. HTML extensions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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/951—Indexing; Web crawling techniques
-
- 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/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- 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
Abstract
本文的示例涉及文件对象模型(DOM)事务爬行器。本文的示例涉及识别文件对象模型的第一状态中的事件。该事件被执行以引起从文件对象模型的第一状态到文件对象模型的第二状态的状态变化。而且,该状态变化被存储在事务日志中,以存储文件对象模型的第一状态与文件对象模型的第二状态之间的差别。
Description
背景技术
网络爬行器(crawler)识别网页内容,以使得实体能够自动地确定网页内容而无需用户与该网页交互。网络爬行器可使用网页的超文本标记语言(HTML)、网页的文件对象模型(DOM)等识别网页的内容。一些网页可能包括网络应用,该网络应用使用户能够经由该网络应用与网页和/或网页的特征交互。
附图说明
图1例示了包括可根据本公开的方面实施的文件对象模型(DOM)事务爬行器的示例性DOM爬行器系统的示意图;
图2是可用于实施图1中的DOM事务爬行器的示例性DOM事务爬行器的框图;
图3例示了根据本文的示例、可由图2中的DOM事务爬行器遍历的、DOM的示例性事件树;
图4是表示可被执行以实施图2中的DOM事务爬行器的示例性机器可读指令的流程图;
图5是表示示例性机器可读指令的流程图,该示例性机器可读指令可被执行以实施根据本公开的方面的图2中的DOM事务爬行器,从而通过管理事务并且存储DOM的状态之间的状态变化而实现以隔离的方式执行事件;
图6是表示示例性机器可读指令的流程图,该示例性机器可读指令可被运行以实施根据本公开的方面的图2中的DOM事务爬行器,从而执行遍历事件的迭代;
图7是能够执行图4、图5和/或图6中的指令从而实施图2中的DOM事务爬行器的示例性处理器平台的框图。
在任何可能情况下,在本文中的各附图以及相应说明中使用相同的附图标记指代相同或类似的部件。
具体实施方式
本文公开的示例涉及用于导航(navigate)网页或者网络应用(例如,单页面应用或其他动态应用)的文件对象模型(DOM)事务爬行器(transaction crawler)。
一般来说,网络爬行器用于自动地(不需要任何用户交互,除了可能初始化爬行器之外)发现网络应用的内容。然而,在没有正确理解应用的内容的情况下,可能无法识别网络应用中的所有事件(或者安全扫描器的所有攻击点)。大型动态站点(例如,单页面应用(SPA))的内容可能是经由DOM以及通过代码(例如,JavaScript)驱动的DOM的各状态之间的转换(transition)来表示的。为了使爬行器能发现DOM转换,该爬行器获取DOM的知识,从而使用探试算法导航DOM转换,如同用户可能会导航网络应用。然而,网络应用的事件空间会变得很大并且足以使得爬行难以驾驭。为了精确地导航DOM,从网络爬行器第一次与网络应用交互开始,以精确的顺序执行事件并且请求资源。其结果是,可能需要重复地加载并执行整个网络应用,从而到达DOM的每个转换。在本文的示例中,网络事务爬行器记录运行DOM的事件时的原子态变化,使得可将状态变化复原(revert)到运行该事件之前的先前状态。相应地,本文的示例提供一种有效并且有效率地遍历网络应用的DOM的手段,无需重复运行该网络应用以到达该DOM的每个转换或事件。
在本文的示例中,通过执行事件、识别响应于事件的执行的状态变化、以及在事务日志中记录(或存储)该状态变化来遍历事件。相应地,基于记录的状态变化,可将事务返回到执行该应用的任何事件之前的先前状态,以使得可识别并执行DOM中的任何剩余事件,就好像事件未被执行过一样。同样地,复原(例如,回滚(rolling back))由事件的执行产生的状态变化,并且可回放该状态变化(通过取回并实施DOM中的状态变化)以爬行DOM而无需重新执行事件。
本文的示例涉及:识别文件对象模型的第一状态中的事件。该事件被执行以引起从该文件对象模型的第一状态到该文件对象模型的第二状态的状态变化。而且,该状态变化可被存储在事务日志中,从而存储文件对象模型的第一状态与文件对象模型的第二状态之间的差别。示例还涉及:将文件对象模型从文件对象模型的第二状态复原到文件对象模型的第一状态,以用于执行文件对象模型的第一状态的后续事件。
如本文使用的,网页或者网络应用的内容可指:可经由该网页或网络应用提供和/或获取的任意文本、图形、图片、用户界面、可点击的(例如,按键、下拉等等)、鼠标悬停等等。此外,网页或网络应用可互换地使用,然而网络应用(或者SPA)可能包含在网页中。
图1是包括根据本文的示例实施的DOM事务爬行器110的示例性文件对象模型(DOM)爬行器系统100的示意图示例。图1中的示例性DOM爬行器系统100包括DOM事务爬行器110、DOM创建器120以及漏洞检测器130。本文的示例中,DOM创建器120从全球资源定位器(URL)的超文本标记语言(HTML)创建DOM,DOM事务爬行器110使用生成的DOM确定网页或网络应用的内容,并且漏洞检测器130检测URL的网页或网络应用的内容中的漏洞。
示例性DOM创建器120使用接收到的或者取回的URL的HTML来生成网页的DOM。例如,DOM创建器120可通过无界面浏览器(headless browser)实施,以从HTML构建网页或网络应用的DOM。例如,DOM创建器120可解析URL的HTML,并且运行加载SPA所必须的任意代码(例如,JavaScript)。示例性DOM创建器120可通过给对象的属性添加标签来表示对象,从而修改DOM所包含的任意数据对象以及代码运行时间。作为触发DOM中的事件的结果,可在每次发生属性变化时调整此类属性。相应地,所生成的DOM可用于独立地检测、执行并且分析网络应用的内容,同时会影响实际的网络应用。
根据本文的示例,图1中的DOM事务爬行器110爬行由DOM创建器120生成的DOM。DOM事务爬行器110发现所生成的DOM内的事件。例如,DOM事务爬行器110可识别诸如用户交互事件的感兴趣的事件。本文的示例中,所生成的DOM中的事件可构成树型结构,以使得响应于触发其他事件而触发某些事件。然后,该示例性DOM事务爬行器110可执行DOM中的事件(独立于实际的网页或网络应用的任意事件的执行),以确定网页或网络应用的内容。而且,本文的示例中,DOM事务爬行器110采用事务机制来记录(例如,在事务日志中记录)响应于事件的触发的、DOM的状态变化,并且在触发每个事件之后将DOM复原到先前状态。示例性地,所记录的变化可用于有效并且有效率地导航DOM的转换。
一旦DOM事务爬行器110导航DOM以确定网页或网络应用的内容,漏洞检测器130就可通过使用安全扫描器攻击或访问网页内容的各部分来检测网络应用的内容中的漏洞。可使用任何适当的技术来执行安全扫描并且检测网页内容中的漏洞。在一些示例中,图1的示例性系统100中可能包含漏洞检测器130的额外组件或替换性组件,以对DOM事务爬行器110所识别的网页内容执行额外的/替换性分析。相应地,本文的示例可通过有效地爬行从网页或网络应用的HTML生成的DOM而检测网页或网络应用的漏洞,或者进行其他任意类型的分析。
图2是可用于实施图1中DOM事务爬行器110的示例性DOM事务爬行器110的框图。图2中的示例性DOM事务爬行器110包括事件识别器210、事件执行器220、事务管理器230以及状态变化记录器240。本文的示例中,事件识别器210识别网络应用的DOM中的事件;事件执行器220执行所识别的事件;事务管理器230在执行该事件之后维持DOM的状态;并且状态变化记录器240记录该事件执行后DOM的状态变化。
示例性事件识别器210可扫描或检索DOM(例如,由图1的DOM创建器120生成的DOM)中感兴趣的事件。示例性的感兴趣的事件可包括用户交互事件,比如按键点击、鼠标悬停或者表格提交。事件识别器110可通过遍历DOM的节点以及扫描事件属性(例如,从事件的被添加标签的属性扫描事件属性)来识别静态事件。例如,DOM的<按键>(<button>)元件可包括属性(例如,“鼠标单击”属性)内的代码(例如,JavaScript)。在一些示例中,可使用“调用”功能(例如,‘添加事件监听器’(‘addEventListener’))动态地将事件应用于元件,该“调用”可被追踪从而存储并执行事件。在一些示例中,通过在代码的头部添加‘javascript:’,锚标签(anchor tag)可包括定义(例如,‘超链接(href)’定义)中的代码。同样地,事件识别器210可识别DOM中的事件,比如由图1中DOM创建器120生成的DOM。
示例性事件执行器220执行事件以抽取(elicit)DOM状态转换,这使得可获取和/或可识别额外的事件。本文的示例中,当执行了DOM中的事件之后,生成DOM的新状态。示例性的DOM的新状态可反映作为执行该事件的结果的DOM的状态。本文类示例中,当执行事件之后,事件识别器210可扫描DOM的新状态,以识别DOM的新状态中的任何新事件或其他事件。这些新事件可能是将在后续迭代中执行的后续事件。相应地,这个迭代进程可构建DOM事件树,可遍历该事件树以发现网络应用的内容。
本文的示例中,事件执行器220和事件识别器210可使用DOM的事件树的探试算法,比如宽度优先爬行或深度优先爬行。例如,宽度优先爬行包括:在推进到DOM的事件树的下一层(tier)之前,执行该DOM的事件树的一层的每个同级(sibling)事件;而深度优先爬行包括:在推进到DOM的事件树的下一分支之前,执行该DOM的事件树的一分支的同级事件(参见图3以及以下相关说明)。额外地或者可替代地,可使用或实施其他探试算法来反映用户的行为(例如,使用与网络应用的频繁流量模式(frequented traffic patterns)相对应的信息)。例如,可在触发表格提交事件之前、群集(cluster)用户与表格内元件的交互。相应地,事件执行器220可有效地将基于事件的爬行与基于流量的爬行配对,从而遍历DOM的事件并且实现对网络应用的内容的访问。
图2中的示例性事务管理器230识别响应于事件执行器220执行的每个事件的、DOM的状态(例如,事件树的层或分支)之间的状态变化,并且将生成的DOM复原/返回到事件执行器220执行每个事件之前的先前状态,无需重新执行整个网络应用。相应地,通过回放状态变化(取回存储的状态变化),事务管理器230使DOM事务爬行器110能够爬行DOM的事件而不保留先前事件遍历的影响。例如,当以深度优先方式遍历事件时,可运行同级事件(来自DOM的同一状态的事件)而不影响其他事件的触发。该示例性事务管理器230通过以下方式实现这一点:在事件执行器220执行事件之后,事务管理器230确定DOM的状态变化(通过状态变化记录器240记录)并且将DOM返回到执行该事件之前的DOM的状态,然后运行同级事件。事务管理器230可通过简单地回滚(rolling back)状态变化而将DOM返回到先前状态。
本文的示例中,为了复原状态变化,事务管理器230可参考通过状态变化记录器240维持的状态变化日志。状态变化记录器240在事务日志中记录事件执行器220执行DOM的每个事件之后的、DOM的原子态变化。相应地,状态变化记录器240可包括用于维持事务日志的数据库或者可访问该数据库。本文的示例中,事务管理器230随后可参考事务日志中的状态变化,从而在执行每个事件之后复原或回滚DOM的状态,以使得可执行同级事件而不会彼此影响。换言之,执行一个同级事件产生的状态变化将不会滞留到另一同级事件的执行。同样地,事件执行器220(通常还有DOM事务爬行器110)能够遍历并且执行同级事件,就好像同级事件都尚未被执行过一样,尽管其中的一些实际上已经被执行过。而且,在执行了DOM的状态中的所有同级事件之后,事务管理器230可使用事务日志以对DOM的后续状态回放状态变化。例如,事务管理器可取回与状态变化记录器的事务日志中的事件相对应的状态变化,并且在DOM中实施那些变化,从而到达DOM的期望事件。事务管理器230可使用事务日志中的状态变化来遍历DOM,以到达DOM的特定状态。相应地,可到达DOM的后续状态中的后续事件,而无需重新执行整个网络应用或者网络应用中的事件(例如,从DOM的一开始或者初始状态开始重新执行)。
通过仅在事务日志中记录DOM的状态变化,事务管理器230使得DOM事务爬行器110能够有效并且有效率地遍历DOM的事件。在每次执行事件之后记录DOM的状态变化,并且回滚该状态变化,从而允许以隔离方式执行事件,这有利于遍历DOM的事件而不会积累状态转换。而且,通过使DOM转换在不必重新遍历网络应用的情况下发生,事务管理器230和状态变化记录器240有助于爬行的易处理性。此外,通过将事务保存在永久存储器中并且缓解DOM事务爬行器110上的存储压力,事务管理器230和状态变化记录器240可提高易处理性。
虽然在图2中例示了图1中DOM事务爬行器110的示例性实施形式,但图2所示的至少一个元件、进程和/或装置可被组合、划分、重新布置、省略、消除和/或以任意其他方式实施。而且,图2中的事件识别器210、事件执行器220、事务管理器230、状态变化记录器240和/或更普遍地、DOM事务爬行器110可通过硬件和/或硬件与可运行指令(例如,软件和/或固件)的任意组合实施。由此,例如,图2中的事件识别器210、事件执行器220、事务管理器230、状态变化记录器240和/或更普遍地DOM事务爬行器110中的任一可通过逻辑或数字电路、逻辑电路、可编程处理器、专用集成电路(ASIC)、可编程逻辑装置(PLD)和/或域可编程逻辑装置(FPLD)中的至少一个来实施。当本专利的设备或系统权利要求的解读覆盖了纯软件和/或固件实施方式时,事件识别器210、事件执行器220、事务管理器230和/或状态变化记录器240中的至少一个在本文被明确地限定为包括存储可运行指令的可触知的机器可读存储介质或存储盘,比如存储器、数字通用磁盘(DVD)、光盘(CD)、蓝光光盘等等。更进一步地,图2中的示例性DOM事务管理器110可包括至少一个元件、进程和/或装置以作为图2所示的那些的补充或替换,和/或,可包括所示出的任一或所有元件、进程和装置中的多于一个。
图3例示了可通过DOM事务爬行器110遍历的DOM 320的示例性事件树310,该DOM事务爬行器110可通过图2中的DOM事务管理器110实施。示例性事件树310包括十个(编号为1-10)事件,可通过事件执行器220执行该十个事件以访问DOM320的网络应用的内容。
如上所述,DOM事务爬行器110可经由宽度优先爬行或者深度优先爬行遍历DOM320的事件。参见图3,示例性的事件树310的宽度优先爬行包括:事件执行器220执行事件树的跨层的事件。例如,为了执行事件树310的宽度优先爬行,事件执行器220执行事件1,状态变化记录器240在事务日志中记录执行事件1之后DOM的状态的任何变化,并且事务管理器230将DOM 320的状态复原到执行事件1之前的DOM的状态(就好像事件1并未被执行过一样)。然后,在执行事件、记录状态变化以及相对于事件1的执行而复原回到DOM的原始状态(下文中简称为事件迭代)之后,事件识别器210和/或事件执行器220可确定是否存在即将执行的、事件1的任何剩余同级事件(宽度优先同级事件)。识别事件2为宽度优先爬行同级事件,然后事件执行器220可执行事件2,记录任意状态变化,并且复原回到执行事件2之前的DOM 320的原始状态。当事件树的该层上的所有同级事件都已被执行时,事件执行器220可继续运行以执行下一事件。
为了继续运行到下一事件,事件执行器220可参照事务日志以确定执行事件1的状态变化,该状态变化可能表示响应于执行事件1而创建了事件3和4。然后,事件执行器220可执行事件3,状态变化记录器240可在事务日志中存储DOM 320的状态的任意变化,并且事务管理器230将DOM 320复原回到执行事件3之前的DOM的状态。此后,事件执行器220、状态变化记录器240和事务管理器230可对事件4执行相同的迭代(识别事件4为事件3的同级事件)。在执行事件4之后,由于不存在事件3和事件4的剩余同级事件,事件执行器220可回放从事件1到3的状态变化并且对事件6执行相同的迭代;随后回放从事件1到4的状态变化并对事件7执行迭代;然后事件8、然后事件10;然后返回到事件2的分支以回放事件2的状态变化并对事件5和9执行迭代。在这些示例中,当从一个分支移动到另一个分支时,DOM事务爬行器110(例如,经由事务管理器)可参照状态变化记录器240的事务日志并且取回状态变化,以有效地将DOM 320的状态设定为适当状态(例如,在执行事件2之后、继续执行事件5的状态),从而移动到每个分支。
额外地或可替代地,根据本文的示例,DOM事务爬行器110可经由深度优先爬行遍历DOM 320的事件树310。对于深度优先爬行,示例性事件执行器220可对事件1执行迭代,然后对事件3执行迭代,然后对事件6执行迭代;随后复原回到DOM 320的状态并且回放从执行事件1开始的状态变化,从而对事件4、事件7、事件8和事件10执行迭代。在完成事件树310的从事件1延伸的分支之后,处于深度优先爬行中的DOM事务爬行器可将DOM回放到DOM 320的原始状态(通过参照状态变化记录器240的事务日志),以对该事件树的从事件2延伸的分支(即,事件2、事件5和事件9)执行迭代。
相应地,示例性事件树310的宽度优先爬行的迭代顺序可为1、2、3、4、6、7、8、10、5、9,而该示例性事件树310的深度优先爬行的迭代顺序可为1、3、6、4、7、8、10、2、5、9。可使用用户设置或偏爱(preference)来选定遍历方式。因此,不管选择了什么方式,通过存储状态变化、取回状态变化、以及在已经执行了DOM的状态中的所有同级事件之后加载状态变化,DOM事务爬行器110可有效并且有效率地遍历事件树。
在图4、5和6中示出了表示用于实施图2中DOM事务爬行器110的示例性机器可读指令的流程图。本文示例中,机器可读指令包括用于由处理器(比如下文中结合图7讨论的示例性处理器平台700中所示的处理器712)执行的程序/进程。该程序/进程可通过存储在可触知(tangible)机器可读存储介质(比如CD-ROM、软盘、硬盘驱动、数字通用磁盘(DVD)、蓝光光盘或者与处理器712相关联的存储器)上的可执行指令(例如,软件)的形式实现,但整个程序/进程和/或其部分可以可替代地由除处理器712之外的装置执行,和/或,通过固件或专用硬件实现。而且,尽管本文参照图4、5和/或6所示的流程图描述了示例性程序/进程,但也可替代地使用许多实施示例性DOM事务爬行器110的其他方法。例如,各步骤块的执行顺序可发生变化,和/或,所描述的步骤块中的一些可发生变化、省略或组合。
图4中的示例性进程400起始于DOM事务爬行器110的初始化(例如,在开机之后、在来自用户的指令之后、在开启用于实施该DOM事务爬行器110的装置(例如,DOM爬行系统100)之后,等等)。图4中的示例性进程400可被执行以根据本文的示例遍历DOM的事件。在步骤块410中,事件识别器210识别DOM的第一状态中的事件。例如,在步骤块410中,事件识别器210可识别用户交互事件(例如,使用DOM中存储的事件的属性)。在步骤块420中,事件执行器220执行该事件以确定从DOM的第一状态到DOM的第二状态的状态变化。
在图4的步骤块430中,状态变化记录器240在事务日志中存储状态变化,该状态变化包括DOM的第一状态与DOM的第二状态之间的差别。在步骤块440中,事务管理器230将DOM从DOM的第二状态复原到DOM的第一状态,以用于执行DOM的第一状态中的后续事件。在步骤块440之后,示例性进程400结束。
图5中的示例性进程500起始于DOM事务爬行器110的初始化。图5中的示例性进程500可被执行从而通过管理事务并且存储DOM的状态之间的状态变化而实现以隔离的方式执行事件。在步骤块510中,事务管理器230响应于执行DOM的第一状态中的事件而识别应用的DOM中的第一状态变化。步骤块510中DOM的状态变化为DOM的第一状态与DOM的第二状态之间的差别。在步骤块520中,状态变化记录器240在事务日志中存储状态变化。
在图5的步骤块530中,事件识别器210和/或事件执行器220确定DOM的第一状态中是否存在任何剩余的同级事件。如果DOM的第一状态中不存在任何剩余的同级事件,则示例性进程500结束(例如,事件执行器220遍历DOM至DOM的事件树的新分支)。如果DOM的第一状态中存在剩余的同级事件(步骤块530),则在步骤块540中,事务管理器230将DOM从DOM的第二状态复原到DOM的第一状态。在步骤块550中,事件执行器220执行该同级事件。在步骤块550中,状态变化存储器240响应于执行该同级事件在日志中存储DOM的第二状态变化。在步骤块560之后,该示例性进程500结束。
图6中的示例性进程600起始于DOM事务爬行器110的初始化。根据本文的示例,示例性进程600可被迭代地执行,从而执行遍历事件的迭代。在步骤块610中,事件执行器220执行DOM的状态的下一事件。在步骤块620中,状态变化记录器240记录状态变化(例如,基于事件执行器220执行该事件之后由事务管理器230识别的状态变化)。在步骤块630中,事件识别器210和/或事件执行器220确定DOM的状态中是否存在任何剩余的同级事件。如果在步骤块630中确定DOM的状态中不存在任何剩余的同级事件,则控制返回步骤块610以进行后续的迭代。如果在DOM中存在剩余的同级事件,则在步骤块640中,事件识别器210和/或事件执行器220确定DOM中是否存在任何剩余事件。如果在步骤块640中确定不存在剩余事件,则示例性进程600结束。如果在步骤块640中确定DOM中存在剩余事件,则在步骤块650中,事务管理器230从事务日志中取回状态变化数据以用于DOM的下一状态,并且将DOM复原到与DOM的下一事件对应的状态。在步骤块650之后,控制返回到步骤块610以进行后续迭代。
如上所述,图4、图5和/或图6中的示例性进程可通过使用存储在可触知的机器可读存储介质上的编码指令(例如,计算机和/或机器可读指令)实现,该机器可读存储介质比如是硬盘驱动、闪存、只读存储器(ROM)、光盘、数字通用磁盘(DVD)、缓存、随机存取存储器(RAM)和/或任意其他以任意持续时间(例如,长时期、永久、短时暂态、临时缓冲和/或信息的超高速缓存)存储信息的存储装置或存储光盘。本文使用的术语“可触知的机器可读存储介质”被明确限定为包括任意类型的机器可读存储装置和/或存储光盘,并且不包括传播中的信号和传输介质。本文使用的术语“计算机可读存储介质”和“机器可读存储介质”可互换地使用。额外地或者可替换地,图4、图5和/或图6中的示例性进程可通过使用存储在非暂态计算机和/或机器可读介质(比如硬盘驱动、闪存、只读存储器(ROM)、光盘、数字通用磁盘、缓存、随机存取存储器(RAM)和/或任意其他以任意持续时间(例如,长时期、永久、短时暂态、临时缓冲和/或信息的超高速缓存)存储信息的存储装置或存储光盘)上的编码指令(例如,计算机和/或机器可读指令)实现。本文使用的术语“非暂态机器可读介质”被明确限定为包括任意类型的机器可读存储装置和/或存储光盘,并且不包括传播中的信号和传输介质。
当本文使用的短语“至少”用作权利要求前序部分中的过渡词时,其与术语“包括”一样是开放式的。本文使用的术语“一”可意指“至少一个”。因此,当用于描述元件时,“一”并非一定将具体元件限定至单个元件。本文以并列形式使用术语“或”时,除非另外指明,其不应被视为是“异或”。
图7是能够执行图4、图5和/或图6中的指令以实施图2中的DOM事务管理器110的示例性处理器平台700的框图。示例性处理器平台700可为或可包含在任意类型的设备(比如服务器、个人电脑、移动装置或者任意类型的计算装置)中。
图7所示示例中的处理器平台700包括处理器712。所示示例中的处理器712为硬件。例如,处理器712可通过来自任何期望的家族或制造商的至少一个集成电路、逻辑电路、微处理器或者控制器实施。
所示示例中的处理器712包括本地存储器713(例如,缓存)。所示示例中的处理器712经由总线718与主存储器通信,该主存储器包括易失性存储器714和非易失性存储器716。易失性存储器714可通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任意其他类型的随机存取存储装置实现。非易失性存储器716可通过闪存、可经由内存结构访问的永久性的字节编址存储器和/或任意其他期望类型的非易失性存储装置实现。对主存储器714、716的访问受到存储器控制器的控制。
所示示例中的处理器平台700还包括接口电路720。接口电路720可通过任意类型的接口标准实现,比如以太网接口、通用串行总线(USB)和/或外围设备互连(PCI)传输接口。
在所示示例中,至少一个输入装置722连接至该接口电路720。输入装置722允许用户将数据和命令输入到处理器712中。输入装置可通过例如音频传感器、麦克风、相机(静物或视频)、键盘、按键、鼠标、触摸屏、触控板、轨迹球和/或语音识别系统来实施。
至少一个输出装置724也可连接至所示示例的接口电路720。输出装置724可通过例如显示装置(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器、阴极射线管显示器(CRT)、触摸屏、可触知的输出装置、发光二极管(LED)、打印机和/或扬声器)来实施。由此,所示示例的接口电路720可包括显卡驱动卡、显卡驱动芯片或显卡驱动处理器。
所示示例的该接口电路720还包括通信装置,比如发射器、接收器、收发器、调制解调器和/或网络接口卡,以利于经由网络726(例如,以太网连接、数字用户线路(DSL)、电话线路、同轴光缆、蜂窝电话系统等)与外部机器(例如,任意类型的计算装置)的数据交换。
所示示例中的处理器平台700还包括至少一个用于存储可执行指令(例如,软件)和/或数据的大容量存储装置728。这种大容量存储装置728的示例包括软盘驱动、硬盘驱动、光盘驱动、蓝光光盘驱动、RAID系统和数字通用磁盘(DVD)驱动。
实施图4、图5和/或图6中的进程的编码指令732可被存储在大容量存储装置728中、存储在本地存储器713中、存储在易失性存储器714中、存储在非易失性存储器716中和/或可移除并且可触知的机器可读存储介质(比如CD或DVD)上。
通过以上描述,应意识到的是,上文中公开的方法、设备以及制品提供了一种DOM事务爬行器,该DOM事务爬行器使用记录的事务来遍历网页或网络应用中的事件,从而能够有效并且有效率地爬行网页或网络应用。本文的示例中,网络爬行器可在DOM的事件之间导航,无需针对DOM的各状态之间的每次转换加载并执行整个网络应用。相应地,本文公开的事务机制记录被回放或回滚的原子态变化,以利于DOM转换导航,无需重新执行该应用。此外,本文的示例允许以隔离的方式执行事件,这有利于遍历应用事件空间而不会累积状态转换。通过使用本文的示例,可将事务保存在光盘上从而缓解网络爬行器上的存储压力,由此可进一步改善易处理性。
虽然已在本文公开了特定的示例性方法、设备和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖等同地落入本专利权利要求书范围内的所有方法、设备和制品。
Claims (20)
1.一种用于爬行一应用的文件对象模型的方法,所述方法包括:
识别文件对象模型的第一状态中的事件;
执行所述事件以引起从所述文件对象模型的所述第一状态到所述文件对象模型的第二状态的状态变化;并且
在事务日志中存储所述状态变化,所述状态变化包括所述文件对象模型的所述第一状态与所述文件对象模型的所述第二状态之间的差别;并且
将所述文件对象模型从所述文件对象模型的所述第二状态复原到所述文件对象模型的所述第一状态,以用于执行所述文件对象模型的后续事件。
2.如权利要求1所述的方法,进一步包括:
由全球资源定位器的超文本标记语言创建所述文件对象模型。
3.如权利要求1所述的方法,进一步包括:
确定所述后续事件是所述文件对象模型的所述第一状态中的所述事件的同级事件;并且
执行所述同级事件,以引起从所述文件对象模型的所述第一状态到所述文件对象模型的第三状态的状态变化。
4.如权利要求3所述的方法,进一步包括:
在所述事务日志中存储从所述文件对象模型的所述第一状态到所述文件对象模型的所述第三状态的所述状态变化。
5.如权利要求1所述的方法,进一步包括:
遍历所述文件对象模型,以使用所述事务日志到达所述文件对象模型的所述第二状态,而不重新执行所述应用的事件以到达所述文件对象模型的所述第二状态。
6.如权利要求5所述的方法,进一步包括:
从所述事务日志中取回所述状态变化,以到达所述文件对象模型的所述第二状态。
7.如权利要求1所述的方法,进一步包括:
确定所述文件对象模型的所述第一状态中不剩下所述事件的同级事件;并且
遍历所述文件对象模型至所述文件对象模型的所述第二状态,以用于执行所述后续事件,所述后续事件包括所述文件对象模型的所述第二状态中的事件。
8.一种非暂态机器可读介质,包括指令,当所述指令被执行时引起机器至少:
响应于执行一应用的文件对象模型的第一状态中的事件,识别所述文件对象模型的第一状态变化,所述状态变化包括所述文件对象模型的所述第一状态与所述文件对象模型的第二状态之间的差别;
在事务日志中存储所述第一状态变化;并且
如果所述文件对象模型的所述第一状态中存在所述事件的剩余同级事件,则:
将所述文件对象模型从所述文件对象模型的所述第二状态复原到所述文件对象模型的所述第一状态;
执行所述同级事件;并且
响应于执行所述同级事件,在所述日志中存储所述文件对象模型的第二状态变化。
9.如权利要求8所述的非暂态机器可读介质,其中,当所述指令被执行时进一步引起所述机器:
如果所述文件对象模型的所述第一状态中不存在所述事件的剩余同级事件,则:
执行所述文件对象模型的第二状态中的事件,所述文件对象模型的所述第二状态包括所述第一状态变化。
10.如权利要求8所述的非暂态机器可读介质,其中,当所述指令被执行时进一步引起所述机器:
执行所述文件对象模型的所述第一状态的所述事件。
11.如权利要求8所述的非暂态机器可读介质,其中,当所述指令被执行时进一步引起所述机器:
由所述应用的超文本标记语言生成所述文件对象模型。
12.如权利要求8所述的非暂态机器可读介质,其中,当所述指令被执行时进一步引起所述机器:
从所述事务日志取回所述第一状态变化,以将所述文件对象模型返回到所述文件对象模型的所述第二状态,而不重新执行所述应用。
13.如权利要求8所述的非暂态机器可读介质,其中,当所述指令被执行时进一步引起所述机器:
基于所述文件对象模型的宽度优先爬行,确定存在所述事件的所述剩余同级事件。
14.如权利要求8所述的非暂态机器可读介质,其中,当所述指令被执行时进一步引起所述机器:
基于所述文件对象模型的深度优先爬行,确定存在所述事件的所述剩余同级事件。
15.一种设备,包括:
事件识别器,用于识别应用的文件对象模型的事件;
事件执行器,用于执行所述文件对象模型的所述事件中的每一个;
事务管理器,用于在所述文件对象模型的每个事件的每次执行之后识别所述文件对象模型的状态的状态变化;以及
状态变化记录器,用于在事务日志中记录所述状态变化中的每一个,以确定所述应用的内容。
16.如权利要求15所述的设备,其中,所述事件执行器使用宽度优先爬行来执行所述文件对象模型的所述事件。
17.如权利要求15所述的设备,其中,所述事件执行器使用深度优先爬行来执行所述文件对象模型的所述事件。
18.如权利要求15所述的设备,进一步包括:
文件对象模型创建器,用于由所述应用的超文本标记语言创建所述DOM。
19.如权利要求15所述的设备,其中,所述事务管理器用于在所述DOM的每个事件的每次执行之后将所述文件对象模型复原到所述文件对象模型的先前状态,
所述文件对象模型的所述先前状态包括:在所述事件中的每个事件的所述执行之前所述文件对象模型的状态。
20.如权利要求15所述的设备,其中,所述事务管理器用于取回所述事务日志中的状态变化,以将所述文件对象模型导航至所述文件对象模型的特定事件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662382149P | 2016-08-31 | 2016-08-31 | |
US62/382,149 | 2016-08-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107798051A true CN107798051A (zh) | 2018-03-13 |
Family
ID=59738256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710700555.0A Pending CN107798051A (zh) | 2016-08-31 | 2017-08-16 | 文件对象模型事务爬行器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10769234B2 (zh) |
EP (1) | EP3291109A1 (zh) |
CN (1) | CN107798051A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107146082B (zh) * | 2017-05-27 | 2021-01-29 | 北京小米移动软件有限公司 | 交易记录信息获取方法、装置及计算机可读存储介质 |
CN110290114B (zh) * | 2019-06-04 | 2020-09-08 | 武汉大学 | 一种基于预警信息的漏洞自动化防护方法及系统 |
US11562037B2 (en) | 2019-09-18 | 2023-01-24 | International Business Machines Corporation | Crawlability of single page applications |
CN111078519A (zh) * | 2019-12-13 | 2020-04-28 | 杭州安恒信息技术股份有限公司 | 异常监控行为回溯的方法、装置和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8630997B1 (en) * | 2009-03-05 | 2014-01-14 | Cisco Technology, Inc. | Streaming event procesing |
CN105824965A (zh) * | 2016-04-01 | 2016-08-03 | 无锡中科富农物联科技有限公司 | 基于动态爬虫技术的数据源发现方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070006078A1 (en) * | 2005-07-01 | 2007-01-04 | Microsoft Corporation | Declaratively responding to state changes in an interactive multimedia environment |
US9276952B2 (en) | 2011-05-31 | 2016-03-01 | Hewlett Packard Enterprise Development Lp | Automated security testing |
US9135147B2 (en) * | 2012-04-26 | 2015-09-15 | International Business Machines Corporation | Automated testing of applications with scripting code |
US9208235B1 (en) | 2013-03-11 | 2015-12-08 | Symantec Corporation | Systems and methods for profiling web applications |
CA2816781C (en) | 2013-05-28 | 2022-07-05 | Ibm Canada Limited - Ibm Canada Limitee | Identifying client states |
US10430212B1 (en) * | 2016-07-13 | 2019-10-01 | Screenshare Technology Ltd. | Method for recording, editing and reproduction of computer session |
US10372785B2 (en) * | 2016-07-29 | 2019-08-06 | Microsoft Technology Licensing, Llc | Client-side modularization of a requested webpage |
-
2017
- 2017-08-16 CN CN201710700555.0A patent/CN107798051A/zh active Pending
- 2017-08-18 US US15/680,418 patent/US10769234B2/en active Active
- 2017-08-29 EP EP17188285.5A patent/EP3291109A1/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8630997B1 (en) * | 2009-03-05 | 2014-01-14 | Cisco Technology, Inc. | Streaming event procesing |
CN105824965A (zh) * | 2016-04-01 | 2016-08-03 | 无锡中科富农物联科技有限公司 | 基于动态爬虫技术的数据源发现方法 |
Non-Patent Citations (2)
Title |
---|
XUESONG ZHANG: "AJAX Crawling Scheme Based on Document Object Model", 《COMPUTATIONA AND INFORMATION SCIENCES》 * |
王溧等: "《SQL Server 2005基础教程及上机指导》", 31 May 2009 * |
Also Published As
Publication number | Publication date |
---|---|
US20180060446A1 (en) | 2018-03-01 |
EP3291109A1 (en) | 2018-03-07 |
US10769234B2 (en) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755387B1 (en) | Updating code of an app feature based on a value of a query feature | |
US20180052809A1 (en) | Inferring user interaction with an iframe | |
CA2911670C (en) | System and method for identifying web elements present on a web-page | |
CN104813291B (zh) | 备份用户界面 | |
US8756593B2 (en) | Map generator for representing interrelationships between app features forged by dynamic pointers | |
US9032067B2 (en) | Determining differences in an event-driven application accessed in different client-tier environments | |
US9934214B2 (en) | DOM snapshot capture | |
US8589876B1 (en) | Detection of central-registry events influencing dynamic pointers and app feature dependencies | |
CN107798051A (zh) | 文件对象模型事务爬行器 | |
CN101202794A (zh) | 移动设备的网络控制仿真器 | |
CN102768683B (zh) | 一种图片信息的搜索方法及搜索装置 | |
CN102067161A (zh) | 基于网页交互呈现广告 | |
WO2013119416A1 (en) | A system to view and manipulate artifacts at a temporal reference point | |
CN103678487A (zh) | 一种网页快照的生成方法和装置 | |
CN106897347A (zh) | 一种网页展示方法、操作事件记录方法及装置 | |
US10970465B2 (en) | Web page manipulation | |
FR2964484A1 (fr) | Procede de recueil de donnees a caracteres evenementiel de formulaires electroniques | |
CN102930032B (zh) | 搜索查询的上下文建议 | |
CN113987393A (zh) | 一种网页操作记录器、系统、装置及方法 | |
US20160103799A1 (en) | Methods and systems for automated detection of pagination | |
CN110472126A (zh) | 一种页面数据的获取方法、装置和设备 | |
CN103955478A (zh) | 已关闭的网页标签和/或浏览器窗口的显示方法和装置 | |
CN111552872A (zh) | 还原用户行为的方法及系统、电子设备及存储介质 | |
Dutta et al. | Structural analysis and regular expressions based noise elimination from web pages for web content mining | |
JP2009075777A (ja) | 文書処理システム及び方法 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Utah, USA Applicant after: Weifosi Co., Ltd Address before: California, USA Applicant before: Antiy Software Co.,Ltd. |