CN103268361B - 网页中隐藏url的提取方法、装置和系统 - Google Patents

网页中隐藏url的提取方法、装置和系统 Download PDF

Info

Publication number
CN103268361B
CN103268361B CN201310226579.9A CN201310226579A CN103268361B CN 103268361 B CN103268361 B CN 103268361B CN 201310226579 A CN201310226579 A CN 201310226579A CN 103268361 B CN103268361 B CN 103268361B
Authority
CN
China
Prior art keywords
url
webpage
browser
event
hidden
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
Application number
CN201310226579.9A
Other languages
English (en)
Other versions
CN103268361A (zh
Inventor
周正吉
李鸣雷
张彪
王丹
练坤梅
刘磊
许静
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nankai University
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Nankai University
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nankai University, Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Nankai University
Priority to CN201310226579.9A priority Critical patent/CN103268361B/zh
Publication of CN103268361A publication Critical patent/CN103268361A/zh
Application granted granted Critical
Publication of CN103268361B publication Critical patent/CN103268361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明提出一种网页中隐藏动态统一资源定位符URL的提取方法、装置和系统,其中该方法包括以下步骤:获取并加载网页;对网页进行分析以提取网页中的JavaScript脚本中的事件句柄代码;以及通过JavaScript引擎加载事件句柄代码,并根据加载结果获取网页中隐藏的URL。根据本发明实施例方法,一方面在对网站进行安全测试时可以覆盖更多的隐藏在网页中的URL,提高了安全测试的效率和覆盖率,另一方面可以将本发明的方法提供给网络爬虫,网络爬虫通过获取的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络爬虫的网络覆盖率。

Description

网页中隐藏URL的提取方法、装置和系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种网页中隐藏URL的提取方法、装置和系统。
背景技术
网络爬虫获取互联网中网页的URL(Uniform Resource Locator,动态统一资源定位符),以通过搜索引擎等提供给用户更多的信息服务。
目前,网络爬虫可以利用页面标签正则表达式匹配获取页面中的URL,这种静态的获取方法存在以下缺点:(1)无法获取页面加载过程中产生的URL;(2)无法获取页面加载后被服务器重定向的URL;(3)无法获取动态的网页中隐藏的URL。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的第一个目的在于提出一种网页中隐藏URL的提取方法。该方法一方面在对网站进行安全测试时可以覆盖更多的隐藏在网页中的URL,提高了安全测试的效率和覆盖率。
本发明的第二个目的在于提出一种网页中隐藏URL的提取装置。
本发明的第三个目的在于提出一种网页中隐藏URL的提取系统。
为了实现上述目的,本发明第一方面实施例的文件中漏洞的检测方法包括以下步骤:获取并加载网页;对所述网页进行分析以提取所述网页中的JavaScript脚本中的事件句柄代码;以及通过JavaScript引擎加载所述事件句柄代码,并根据加载结果获取所述网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取方法,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄,并根据加载结果获取网页中隐藏的URL,一方面在对网站进行安全测试时可以覆盖更多的隐藏在网页中的URL,提高了安全测试的效率和覆盖率,另一方面可以将本发明的方法提供给网络爬虫,网络爬虫通过获取的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络爬虫的网络覆盖率。
为了实现上述目的,本发明第二方面实施例的网页中隐藏URL的提取装置,包括:网页获取模块,用于获取并加载网页;分析提取模块,用于对所述网页进行分析以提取所述网页中的JavaScript脚本中的事件句柄代码;以及加载及URL获取模块,用于通过JavaScript引擎加载所述事件句柄代码,并根据加载结果获取所述网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取装置,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄,并根据加载结果获取网页中隐藏的URL,一方面在对网站进行安全测试时可以覆盖更多的隐藏在网页中的URL,提高了安全测试的效率和覆盖率,另一方面可以将本发明的方法提供给网络爬虫,网络爬虫通过获取的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络爬虫的网络覆盖率。
为了实现上述目的,本发明第三方面实施例的网页中隐藏URL的提取系统,包括:搜索引擎;以及如权利要求6-9任一项所述的网页中隐藏URL的提取装置,所述提取装置将所述网页中隐藏的URL提供至所述搜索引擎。
根据本发明实施例的网页中隐藏URL的提取系统,搜索引擎通过回调模块回调的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络覆盖率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的网页中隐藏URL的提取方法的流程图;
图2是根据本发明一个具体实施例的网页中隐藏URL的提取方法的流程图;
图3是根据本发明另一个具体实施例的网页中隐藏URL的提取方法的流程图;
图4是根据本发明一个实施例的网页中隐藏URL的提取装置的结构示意图;
图5是根据本发明一个具体实施例的网页中隐藏URL的提取装置的结构示意图;
图6是根据本发明另一个具体实施例的网页中隐藏URL的提取装置的结构示意图;以及
图7是根据本发明一个实施例的网页中隐藏URL的提取系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
下面参考附图描述根据本发明实施例的网页中隐藏URL的提取方法、装置和系统。
目前,网络爬虫无法获取页面加载过程中产生的URL、页面加载后被服务器重定向的URL和动态的网页中隐藏的URL等,例如,在使用JavaScript脚本编写的网页中,大量的URL隐藏在JavaScript代码中,由于只有在用户和网页交互时才能产生对应的URL信息,网络爬虫很难获取到这些动态网页中隐藏的URL,如果浏览器通过JavaScript引擎模拟用户和网页的交互事件,可以获取模拟交互事件过程中产生的隐藏在JavaScript代码中的URL。为此,本发明提出了一种网页中隐藏URL的提取方法,包括以下步骤:获取并加载网页;对网页进行分析以提取网页中的JavaScript脚本中的事件句柄代码;以及通过JavaScript引擎加载事件句柄代码,并根据加载结果获取网页中隐藏的URL。
图1是根据本发明一个实施例的网页中隐藏URL的提取方法的流程图。
如图1所示,网页中隐藏URL的提取方法包括:
S101,获取并加载网页。
在本发明的一个实施例中,下述的S101-S103由浏览器完成。
在本发明的一个实施例中,对浏览器的源码进行修改以获取浏览器加载网页过程中产生的URL。具体地,浏览器加载网页过程中,通过get函数或者post函数的向浏览器外部请求URL,其中通过post函数可以向浏览器外部请求URL同时还可以请求参数信息,例如,用户的ID等。通过对浏览器的源码进行修改,浏览器在加载网页过程中可以获取get函数和post函数向浏览器外部发出的请求,同时浏览器还可以获取post函数想浏览器外部请求的参数信息。更具体地,对于get函数来说,浏览器获取的参数信息会显示在URL之后,而对于post函数来说,浏览器获取的参数信息不会显示在URL之后,而是放置在http(Hypertexttransfer protocol,超文本传输协议)包的包体中,浏览器可以将参数信息拼接至获取的URL之后。
在本发明的一个实施例中,如果在浏览器请求URL完成后,服务器对请求的URL进行了重定向,则浏览器获取服务器返回的响应头信息,并根据响应头信息获取重定向的URL。
S102,对网页进行分析以提取网页中的JavaScript脚本中的事件句柄代码。
其中,事件句柄代码对应的事件句柄是JavaScript脚本中的事件发生时进行的操作,例如,用户按鼠标的按键可以发生点击(click)事件,或者用户使鼠标的指针在页面上移动时可以发生鼠标碰触(mouseover)事件等。具体地,JavaScript脚本可以包括点击事件、鼠标触碰事件、鼠标双击(doubleclick)事件、聚焦(focus)事件和失去焦点(blur)事件等。
S103,通过JavaScript引擎加载事件句柄代码,并根据加载结果获取网页中隐藏的URL。
具体地,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码,然后模拟用户的操作并收集加载结果,然后从加载结果中获取JavaScript脚本中需要用户和网页之间交互才会产生的动态的URL,即网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取方法,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄,并根据加载结果获取网页中隐藏的URL,一方面在对网站进行安全测试时可以覆盖更多的隐藏在网页中的URL,提高了安全测试的效率和覆盖率,另一方面可以将本发明的方法提供给网络爬虫,网络爬虫通过获取的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络爬虫的网络覆盖率。
在本发明的一个实施例中,保存获取的网页中隐藏的URL以供搜索引擎调取。具体地,浏览器将获取的URL保存到文档对象document中,当搜索引擎需要调取URL时,搜索引擎可以通过浏览器接口获取document对象,并解析document对象获取URL。
图2是根据本发明一个具体实施例的网页中隐藏URL的提取方法的流程图。
浏览器在通过JavaScript引擎加载事件句柄代码后,可以通过监控浏览器向外部请求的URL获取网页中隐藏的URL,更具体地如图2所示,在本发明的一个实施例中,网页中隐藏URL的提取方法包括:
S201,获取并加载网页。
在本发明的一个实施例中,下述的S101-S103由浏览器完成。
在本发明的一个实施例中,对浏览器的源码进行修改以获取浏览器加载网页过程中产生的URL。具体地,浏览器加载网页过程中,通过get函数或者post函数的向浏览器外部请求URL,其中通过post函数可以向浏览器外部请求URL同时还可以请求参数信息,例如,用户的ID等。通过对浏览器的源码进行修改,浏览器在加载网页过程中可以获取get函数和post函数向浏览器外部发出的请求,同时浏览器还可以获取post函数想浏览器外部请求的参数信息。更具体地,对于get函数来说,浏览器获取的参数信息会显示在URL之后,而对于post函数来说,浏览器获取的参数信息不会显示在URL之后,而是放置在http(Hypertexttransfer protocol,超文本传输协议)包的包体中,浏览器可以将参数信息拼接至获取的URL之后。
在本发明的一个实施例中,如果在浏览器请求URL完成后,服务器对请求的URL进行了重定向,则浏览器获取服务器返回的响应头信息,并根据响应头信息获取重定向的URL。
S202,对网页进行分析以提取网页中的JavaScript脚本中的事件句柄代码。
其中,事件句柄代码对应的事件句柄是JavaScript脚本中的事件发生时进行的操作,例如,用户按鼠标的按键可以发生点击(click)事件,或者用户使鼠标的指针在页面上移动时可以发生鼠标碰触(mouseover)事件等。具体地,JavaScript脚本可以包括点击事件、鼠标触碰事件、鼠标双击(doubleclick)事件、聚焦(focus)事件和失去焦点(blur)事件等。
S203,通过JavaScript引擎加载事件句柄代码。
具体地,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码来模拟用户和网页之间的交互式事件,更具体地,事件句柄需要表单数据的支持,在浏览器模拟交互式事件开始之前,首先需要填写表单。
S204,对浏览器产生的请求信息进行监控,以获取浏览器向外部请求的URL。
在本发明的一个实施例中,浏览器通过重写浏览器的一部分内置对象,对浏览器进行特别定制,保留浏览器的html解析功能和JavaScript引擎,对渲染引擎部分进行更改,通过改写网络模块的相关函数来获取模拟交互式事件过程中产生的请求信息。其中,包括对window.open()、window.navigate()、wwindow.location.replace()、window.location.assign()、window.prompt()、window.showModalDialog()、window.showModelessDialog()、window.confirm()、window.alert()等进行重写,以及对AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)中的open()、send()等函数进行重写。
例如,window.open()函数在浏览器中的本意是打开一个新窗口,该函数传递的参数中包含要请求的URL,对该函数进行重写,在该函数体内加入收集URL的函数,并利用JavaScript引擎执行该函数,这样浏览器在试图调用window.open()函数打开新窗口的时候,就会调用重写之后的window.open()函数,从而通过函数体内的URL收集函数将请求的URL记录下来,其中浏览器的html解析功能和JavaScript引擎保持不变。
具体地,浏览器通过重写浏览器的内置对象,可以在JavaScript引擎加载事件句柄代码来模拟交互式事件的过程中对浏览器产生的请求信息进行监控,并分析请求信息获取浏览器向外部请求的URL,例如,JavaScript引擎模拟输入型事件Onkeypress(键盘键被按下并松开),浏览器可以在键盘键被按下至键盘键被松开的这段过程中对浏览器产生的请求信息进行监控并收集产生的信息,然后浏览器从收集的信息中提取向外部请求的URL,或者将收集的信息返回给网络爬虫做静态页面分析以获取向外部请求的URL。
S205,将浏览器向外部请求的URL作为网页中隐藏的URL。
具体地,浏览器向外部请求的URL也就是JavaScript脚本中隐藏的需要用户和网页之间的交互才会产生的动态的URL,即网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取方法,浏览器在JavaScript引擎加载事件句柄代码时进行监控,可以获取浏览器向外部请求的网页中隐藏的URL。
在本发明的一个实施例中,保存获取的网页中隐藏的URL以供搜索引擎调取。具体地,浏览器将获取的URL保存到document对象中,当搜索引擎需要调取URL时,可以通过浏览器接口获取document对象,并解析document对象获取URL。
在本发明的一个实施例中,按照事件的类型确定模拟交互式事件的触发顺序。具体地,浏览器例如可以将JavaScript脚本中的事件按照事件类型进行分类,例如,JavaScript的事件类型可以包括按钮(Button)类、敲击区域(Hot Spot)类、下拉式菜单(Pull Down Menu)类、文本输入(Text Entry)类、时间限制(Time Limit)类等。如表1所示,浏览器首先可以通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码来模拟输入型的事件,输入型的事件一般来说不存在关联关系。然后浏览器再模拟其它类型的事件,其它类型的事件是一般来说是单元素触发并依赖于输入型的事件。由此可以克服例如网络爬虫不能识别事件触发的顺序,无法构造出完整的URL的问题。
表1
图3是根据本发明另一个具体实施例的网页中隐藏URL的提取方法的流程图。
浏览器可以根据网页的DOM树结构提取网页中的JavaScript脚本中的事件句柄代码,更具体地如图3所示,在本发明的一个实施例中,网页中隐藏URL的提取方法包括:
S301,获取并加载网页。
在本发明的一个实施例中,下述的S101-S103由浏览器完成。
在本发明的一个实施例中,对浏览器的源码进行修改以获取浏览器加载网页过程中产生的URL。具体地,浏览器加载网页过程中,通过get函数或者post函数的向浏览器外部请求URL,其中通过post函数可以向浏览器外部请求URL同时还可以请求参数信息,例如,用户的ID等。通过对浏览器的源码进行修改,浏览器在加载网页过程中可以获取get函数和post函数向浏览器外部发出的请求,同时浏览器还可以获取post函数想浏览器外部请求的参数信息。更具体地,对于get函数来说,浏览器获取的参数信息会显示在URL之后,而对于post函数来说,浏览器获取的参数信息不会显示在URL之后,而是放置在http(Hypertexttransfer protocol,超文本传输协议)包的包体中,浏览器可以将参数信息拼接至获取的URL之后。
在本发明的一个实施例中,如果在浏览器请求URL完成后,服务器对请求的URL进行了重定向,则浏览器获取服务器返回的响应头信息,并根据响应头信息获取重定向的URL。
S302,获取网页的文件对象模块DOM树结构。
其中,DOM(Document Object Model,文档对象模型)是让JavaScript与网页交互的一种方式,JavaScript通过DOM能够动态修改网页文档中的节点、元素和属性等。例如,JavaScript通过DOM可以动态地访问html(Hypertext Markup Language,超文本标记语言)文本文件,获取和更新html文本文件的内容和结构。
具体地,浏览器加载网页后,浏览器获取经过浏览器渲染后的网页,并获取经过浏览器渲染后的网页的html文本文件,然后根据html文本文件获取网页的文件对象模块DOM树结构。
S303,根据网页的DOM树结构提取网页中的JavaScript脚本中的事件句柄代码。
其中,事件句柄代码对应的事件句柄是JavaScript脚本中的事件发生时进行的操作,例如,用户按鼠标的按键可以发生点击(click)事件,或者用户使鼠标的指针在页面上移动时可以发生鼠标碰触(mouseover)事件等。具体地,JavaScript脚本可以包括点击事件、鼠标触碰事件、鼠标双击(doubleclick)事件、聚焦(focus)事件和失去焦点(blur)事件等。
S304,通过JavaScript引擎加载事件句柄代码。
具体地,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码,更具体地,事件句柄需要表单数据的支持,在模拟用户和网页的交互过程开始之前,浏览器首先需要填写表单。
S305,对浏览器产生的请求信息进行监控,以获取浏览器向外部请求的URL。
在本发明的一个实施例中,浏览器通过重写浏览器的一部分内置对象,对浏览器进行特别定制,保留浏览器的html解析功能和JavaScript引擎,对渲染引擎部分进行更改,通过改写网络模块的相关函数来获取模拟交互式事件过程中产生的请求信息。其中,包括对window.open()、window.navigate()、wwindow.location.replace()、window.location.assign()、window.prompt()、window.showModalDialog()、window.showModelessDialog()、window.confirm()、window.alert()等进行重写,以及对AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)中的open()、send()等函数进行重写。
例如,window.open()函数在浏览器中的本意是打开一个新窗口,该函数传递的参数中包含要请求的URL,对该函数进行重写,在该函数体内加入收集URL的函数,并利用JavaScript引擎执行该函数,这样浏览器在试图调用window.open()函数打开新窗口的时候,就会调用重写之后的window.open()函数,从而通过函数体内的URL收集函数将请求的URL记录下来,其中浏览器的html解析功能和JavaScript引擎保持不变。
具体地,浏览器通过重写浏览器的内置对象,可以在JavaScript引擎加载事件句柄代码来模拟交互式事件的过程中对浏览器产生的请求信息进行监控,并分析请求信息获取浏览器向外部请求的URL,例如,JavaScript引擎模拟输入型事件Onkeypress(键盘键被按下并松开),浏览器可以在键盘键被按下至键盘键被松开的这段过程中对浏览器产生的请求信息进行监控并收集产生的信息,然后浏览器从收集的信息中提取向外部请求的URL,或者将收集的信息返回给网络爬虫做静态页面分析以获取向外部请求的URL。
S306,将浏览器向外部请求的URL作为网页中隐藏的URL。
具体地,浏览器向外部请求的URL也就是JavaScript脚本中隐藏的需要用户和网页之间的交互才会产生的动态的URL,即网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取方法,浏览器通过获取网页的文件对象模块DOM树结构,可以从DOM树结构中提取到网页中的JavaScript脚本中的事件句柄代码。
在本发明的一个实施例中,保存获取的网页中隐藏的URL以供搜索引擎调取。具体地,浏览器将获取的URL保存到document对象中,当搜索引擎需要调取URL时,可以通过浏览器接口获取document对象,并解析document对象获取URL。
在本发明的一个实施例中,按照事件的类型确定模拟交互式事件的触发顺序。具体地,浏览器例如可以将JavaScript脚本中的事件按照事件类型进行分类,例如,JavaScript的事件类型可以包括按钮(Button)类、敲击区域(Hot Spot)类、下拉式菜单(Pull Down Menu)类、文本输入(Text Entry)类、时间限制(Time Limit)类等。如表1所示,浏览器首先可以通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码来模拟输入型的事件,输入型的事件一般来说不存在关联关系。然后浏览器再模拟其它类型的事件,其它类型的事件是一般来说是单元素触发并依赖于输入型的事件。由此可以克服例如网络爬虫不能识别事件触发的顺序,无法构造出完整的URL的问题。
表1
为了实现上述实施例,本发明还提出一种网页中隐藏URL的提取装置。
一种网页中隐藏URL的提取装置,包括:网页获取模块,用于获取并加载网页;分析提取模块,用于对网页进行分析以提取网页中的JavaScript脚本中的事件句柄代码;以及加载及URL获取模块,用于通过JavaScript引擎加载事件句柄代码,并根据加载结果获取网页中隐藏的URL。
图4是根据本发明一个实施例的网页中隐藏URL的提取装置的结构示意图。
如图4所示,网页中隐藏URL的提取装置包括:网页获取模块110、分析提取模块120和加载及URL获取模块130。
具体地,网页获取模块110用于获取并加载网页。
在本发明的一个实施例中,对浏览器的源码进行修改以获取浏览器加载网页过程中产生的URL。具体地,网页获取模块110加载网页过程中,通过get函数或者post函数的向浏览器外部请求URL,其中通过post函数可以向浏览器外部请求URL同时还可以请求参数信息,例如,用户的ID等。通过对浏览器的源码进行修改,浏览器在加载网页过程中可以获取get函数和post函数向浏览器外部发出的请求,同时浏览器还可以获取post函数想浏览器外部请求的参数信息。更具体地,对于get函数来说,浏览器获取的参数信息会显示在URL之后,而对于post函数来说,浏览器获取的参数信息不会显示在URL之后,而是放置在http(Hypertext transfer protocol,超文本传输协议)包的包体中,浏览器可以将参数信息拼接至获取的URL之后。
在本发明的一个实施例中,如果在网页获取模块110请求URL完成后,服务器对请求的URL进行了重定向,则浏览器获取服务器返回的响应头信息,并根据响应头信息获取重定向的URL。
分析提取模块120用于对网页获取模块110获取的网页进行分析以提取网页中的JavaScript脚本中的事件句柄代码。其中,事件句柄代码对应的事件句柄是JavaScript脚本中的事件发生时进行的操作,例如,用户按鼠标的按键可以发生点击(click)事件,或者用户使鼠标的指针在页面上移动时可以发生鼠标碰触(mouseover)事件等。具体地,JavaScript脚本可以包括点击事件、鼠标触碰事件、鼠标双击(doubleclick)事件、聚焦(focus)事件和失去焦点(blur)事件等。
加载及URL获取模块130用于通过JavaScript引擎加载分析提取模块120提取的事件句柄代码,并根据加载结果获取网页中隐藏的URL。具体地,加载及URL获取模块130通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码,然后模拟用户的操作并收集加载结果,然后从加载结果中获取JavaScript脚本中需要用户和网页之间交互才会产生的动态的URL,即网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取装置,浏览器通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄,并根据加载结果获取网页中隐藏的URL,一方面在对网站进行安全测试时可以覆盖更多的隐藏在网页中的URL,提高了安全测试的效率和覆盖率,另一方面可以将本发明的方法提供给网络爬虫,网络爬虫通过获取的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络爬虫的网络覆盖率。
在本发明的一个实施例中,按照事件的类型确定模拟交互式事件的触发顺序。具体地,浏览器例如可以将JavaScript脚本中的事件按照事件类型进行分类,例如,JavaScript的事件类型可以包括按钮(Button)类、敲击区域(Hot Spot)类、下拉式菜单(Pull Down Menu)类、文本输入(Text Entry)类、时间限制(Time Limit)类等。如表1所示,浏览器首先可以通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码来模拟输入型的事件,输入型的事件一般来说不存在关联关系。然后浏览器再模拟其它类型的事件,其它类型的事件是一般来说是单元素触发并依赖于输入型的事件。由此可以克服例如网络爬虫不能识别事件触发的顺序,无法构造出完整的URL的问题。
表1
图5是根据本发明一个具体实施例的网页中隐藏URL的提取装置的结构示意图。
如图5所示,网页中隐藏URL的提取装置包括:网页获取模块110、分析提取模块120和加载及URL获取模块130,其中,加载及URL获取模块130还包括:加载子模块131、监控子模块132和URL提取子模块133。
具体地,加载子模块131用于通过JavaScript引擎加载分析提取模块120提取的事件句柄代码。更具体地,加载子模块131通过JavaScript引擎加载从JavaScript脚本中提取的事件句柄代码来模拟用户和网页之间的交互式事件,其中,事件句柄需要表单数据的支持,在加载子模块131模拟交互式事件开始之前,首先需要填写表单。
监控子模块132用于对浏览器产生的请求信息进行监控,以获取浏览器向外部请求的URL。
在本发明的一个实施例中,浏览器通过重写浏览器的一部分内置对象,对浏览器进行特别定制,保留浏览器的html解析功能和JavaScript引擎,对渲染引擎部分进行更改,通过改写网络模块的相关函数来获取模拟交互式事件过程中产生的请求信息。其中,包括对window.open()、window.navigate()、wwindow.location.replace()、window.location.assign()、window.prompt()、window.showModalDialog()、window.showModelessDialog()、window.confirm()、window.alert()等进行重写,以及对AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)中的open()、send()等函数进行重写。
例如,window.open()函数在浏览器中的本意是打开一个新窗口,该函数传递的参数中包含要请求的URL,对该函数进行重写,在该函数体内加入收集URL的函数,并利用JavaScript引擎执行该函数,这样浏览器在试图调用window.open()函数打开新窗口的时候,就会调用重写之后的window.open()函数,从而通过函数体内的URL收集函数将请求的URL记录下来,其中浏览器的html解析功能和JavaScript引擎保持不变。
具体地,监控子模块132通过重写浏览器的内置对象,可以在JavaScript引擎加载事件句柄代码来模拟交互式事件的过程中对浏览器产生的请求信息进行监控,并分析请求信息获取浏览器向外部请求的URL,例如,JavaScript引擎模拟输入型事件Onkeypress(键盘键被按下并松开),监控子模块132可以在键盘键被按下至键盘键被松开的这段过程中对浏览器产生的请求信息进行监控并收集产生的信息,然后监控子模块132从收集的信息中提取向外部请求的URL,或者将收集的信息返回给网络爬虫做静态页面分析以获取向外部请求的URL。
URL提取子模块133用于将监控子模块132监控到的浏览器向外部请求的URL作为网页中隐藏的URL。更具体地,监控子模块132监控到的向外部请求的URL也就是JavaScript脚本中隐藏的需要用户和网页之间的交互才会产生的动态的URL,即网页中隐藏的URL。
根据本发明实施例的网页中隐藏URL的提取装置,浏览器在JavaScript引擎加载事件句柄代码时进行监控,可以获取浏览器向外部请求的网页中隐藏的URL。
图6是根据本发明另一个具体实施例的网页中隐藏URL的提取装置的结构示意图。
如图6所示,网页中隐藏URL的提取装置包括:网页获取模块110、分析提取模块120、加载及URL获取模块130和回调模块140,其中,加载及URL获取模块130还包括:加载子模块131、监控子模块132和URL提取子模块133,分析提取模块120还包括:DOM树获取子模块121和提取子模块122。
具体地,DOM树获取子模块121用于获取网页获取模块110获取的网页的文件对象模块DOM树结构。其中,DOM(Document Object Model,文档对象模型)是让JavaScript与网页交互的一种方式,JavaScript通过DOM能够动态修改网页文档中的节点、元素和属性等。例如,JavaScript通过DOM可以动态地访问html(Hypertext Markup Language,超文本标记语言)文本文件,获取和更新html文本文件的内容和结构。更具体地,浏览器加载网页后,DOM树获取子模块121获取经过浏览器渲染后的网页,并获取经过浏览器渲染后的网页的html文本文件,然后根据html文本文件获取网页的文件对象模块DOM树结构。
提取子模块122用于根据网页的DOM树结构提取网页中的JavaScript脚本中的事件句柄代码。
根据本发明实施例的网页中隐藏URL的提取装置,浏览器通过获取网页的文件对象模块DOM树结构,可以从DOM树结构中提取到网页中的JavaScript脚本中的事件句柄代码。
在本发明的一个实施例中,网页中隐藏URL的提取装置还包括回调模块140,用于将URL提取子模块133获取的网页中隐藏的URL保存至预设的文件中以供搜索引擎调取。具体地,浏览器将URL提取子模块133获取的URL保存到document对象中,当搜索引擎需要调取URL时,回调模块140可以通过浏览器接口获取document对象,并解析document对象获取URL。
为了实现上述实施例,本发明还提出一种网页中隐藏URL的提取系统。
一种网页中隐藏URL的提取系统,包括:搜索引擎;以及如权利要求6-9任一项的网页中隐藏URL的提取装置,提取装置将网页中隐藏的URL提供至搜索引擎。
图7是根据本发明一个实施例的网页中隐藏URL的提取系统的结构示意图。如图7所示,网页中隐藏URL的提取系统包括:网页中隐藏URL的提取装置10和搜索引擎20。
在本发明的一个实施例中,网页中隐藏URL的提取装置还包括回调模块140,用于将URL提取子模块133获取的网页中隐藏的URL保存至预设的文件中以供搜索引擎调取。具体地,浏览器将URL提取子模块133获取的URL保存到document对象中,当搜索引擎需要调取URL时,回调模块140可以通过浏览器接口获取document对象,并解析document对象获取URL。
根据本发明实施例的网页中隐藏URL的提取系统,搜索引擎通过回调模块140回调的页面中隐藏的URL可以更深层次的挖掘网络中的信息,提升了网络覆盖率。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (9)

1.一种网页中隐藏动态统一资源定位符URL的提取方法,其特征在于,包括以下步骤:
S1:获取并加载网页;
S2:对所述网页进行分析以提取所述网页中的JavaScript脚本中的事件句柄代码;
S31:通过JavaScript引擎加载所述事件句柄代码,以模拟用户和网页之间的交互式事件,其中按照事件的类型确定模拟所述交互式事件的触发顺序;
S32:对模拟所述交互式事件过程中产生的请求信息进行监控,并分析所述请求信息以获取浏览器向外部请求的URL;
S33:将所述浏览器向外部请求的URL作为所述网页中隐藏的URL。
2.如权利要求1所述的方法,其特征在于,所述步骤S1-S33由浏览器完成。
3.如权利要求1-2任一项所述的方法,其特征在于,所述步骤S2进一步包括:
S21:获取所述网页的文件对象模块DOM树结构;以及
S22:根据所述网页的DOM树结构提取所述网页中的JavaScript脚本中的事件句柄代码。
4.如权利要求1-2任一项所述的方法,其特征在于,还包括:
保存获取的所述网页中隐藏的URL以供搜索引擎调取。
5.一种网页中隐藏URL的提取装置,其特征在于,包括:
网页获取模块,用于获取并加载网页;
分析提取模块,用于对所述网页进行分析以提取所述网页中的JavaScript脚本中的事件句柄代码;以及
加载及URL获取模块,所述加载及URL获取模块包括加载子模块、监控子模块和URL提取子模块,
所述加载子模块,用于通过JavaScript引擎加载所述事件句柄代码,以模拟用户和网页之间的交互式事件,其中按照事件的类型确定模拟所述交互式事件的触发顺序;
所述监控子模块,用于对模拟所述交互式事件过程中产生的请求信息进行监控,并分析所述请求信息以获取浏览器向外部请求的URL;以及
URL提取子模块,用于将所述浏览器向外部请求的URL作为所述网页中隐藏的URL。
6.如权利要求5所述的装置,其特征在于,所述网页中隐藏URL的提取装置为浏览器。
7.如权利要求5-6任一项所述的装置,其特征在于,所述分析提取模块进一步包括:
DOM树获取子模块,用于获取所述网页的文件对象模块DOM树结构;以及
提取子模块,用于根据所述网页的DOM树结构提取所述网页中的JavaScript脚本中的事件句柄代码。
8.一种搜索系统,其特征在于,包括:
搜索引擎;以及
如权利要求5-7任一项所述的网页中隐藏URL的提取装置,所述提取装置将所述网页中隐藏的URL提供至所述搜索引擎。
9.如权利要求8所述的搜索系统,其特征在于,所述提取装置还包括:
回调模块,用于将获取的所述网页中隐藏的URL保存至预设的文件中以供搜索引擎调取。
CN201310226579.9A 2013-06-07 2013-06-07 网页中隐藏url的提取方法、装置和系统 Active CN103268361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310226579.9A CN103268361B (zh) 2013-06-07 2013-06-07 网页中隐藏url的提取方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310226579.9A CN103268361B (zh) 2013-06-07 2013-06-07 网页中隐藏url的提取方法、装置和系统

Publications (2)

Publication Number Publication Date
CN103268361A CN103268361A (zh) 2013-08-28
CN103268361B true CN103268361B (zh) 2019-05-31

Family

ID=49011990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310226579.9A Active CN103268361B (zh) 2013-06-07 2013-06-07 网页中隐藏url的提取方法、装置和系统

Country Status (1)

Country Link
CN (1) CN103268361B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593396A (zh) * 2013-10-08 2014-02-19 北京奇虎科技有限公司 基于浏览器的网络资源的提取方法及装置
CN104778070B (zh) * 2014-01-15 2018-07-06 富士通株式会社 隐藏变量抽取方法和设备以及信息提取方法和设备
CN104156458B (zh) * 2014-08-20 2017-09-22 北京小度互娱科技有限公司 一种信息的提取方法及装置
CN105871845A (zh) * 2016-03-31 2016-08-17 深圳市深信服电子科技有限公司 Web漏洞扫描行为的检测方法及装置
CN105824965A (zh) * 2016-04-01 2016-08-03 无锡中科富农物联科技有限公司 基于动态爬虫技术的数据源发现方法
CN107844484B (zh) * 2016-09-18 2021-07-16 北京国双科技有限公司 一种识别曝光代码的方法和装置
CN106528779A (zh) * 2016-11-03 2017-03-22 北京知道未来信息技术有限公司 一种基于可变url的爬虫识别方法
CN106649567A (zh) * 2016-11-15 2017-05-10 杭州安恒信息技术有限公司 一种基于浏览器内核的网络爬虫系统
CN106844475A (zh) * 2016-12-23 2017-06-13 北京奇虎科技有限公司 确定隐藏的url的方法及装置
CN108632219B (zh) * 2017-03-21 2021-04-27 腾讯科技(深圳)有限公司 一种网站漏洞检测方法、检测服务器、系统及存储介质
CN108667770B (zh) * 2017-03-29 2020-12-18 腾讯科技(深圳)有限公司 一种网站的漏洞测试方法、服务器及系统
CN107147645B (zh) * 2017-05-11 2020-05-05 北京安赛创想科技有限公司 网络安全数据的获取方法及装置
CN109948025B (zh) * 2019-03-20 2023-10-20 上海古鳌电子科技股份有限公司 一种数据引用记录方法
CN110083755A (zh) * 2019-04-29 2019-08-02 北京脉冲星科技有限公司 一种高仿真解析网页方法、装置和电子设备
CN111177636B (zh) * 2020-01-07 2023-11-03 北京同有飞骥科技股份有限公司 网页请求的递归调度方法及系统
CN113609411A (zh) * 2021-06-25 2021-11-05 北京华云安信息技术有限公司 通过网络爬虫爬取页面信息的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101515300A (zh) * 2009-04-02 2009-08-26 阿里巴巴集团控股有限公司 一种Ajax网页内容的抓取方法及系统
CN101520796A (zh) * 2009-02-16 2009-09-02 深圳市腾讯计算机系统有限公司 从网页内容中提取统一资源定位符的方法及系统
CN101587488A (zh) * 2009-05-25 2009-11-25 深圳市腾讯计算机系统有限公司 一种搜索引擎中页面重定向的检测方法及装置
CN101984429A (zh) * 2010-11-04 2011-03-09 百度在线网络技术(北京)有限公司 获取目标页面的方法、装置、搜索引擎和浏览器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190561A1 (en) * 2002-06-19 2006-08-24 Watchfire Corporation Method and system for obtaining script related information for website crawling
US7496636B2 (en) * 2002-06-19 2009-02-24 International Business Machines Corporation Method and system for resolving Universal Resource Locators (URLs) from script code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520796A (zh) * 2009-02-16 2009-09-02 深圳市腾讯计算机系统有限公司 从网页内容中提取统一资源定位符的方法及系统
CN101515300A (zh) * 2009-04-02 2009-08-26 阿里巴巴集团控股有限公司 一种Ajax网页内容的抓取方法及系统
CN101587488A (zh) * 2009-05-25 2009-11-25 深圳市腾讯计算机系统有限公司 一种搜索引擎中页面重定向的检测方法及装置
CN101984429A (zh) * 2010-11-04 2011-03-09 百度在线网络技术(北京)有限公司 获取目标页面的方法、装置、搜索引擎和浏览器

Also Published As

Publication number Publication date
CN103268361A (zh) 2013-08-28

Similar Documents

Publication Publication Date Title
CN103268361B (zh) 网页中隐藏url的提取方法、装置和系统
US8413044B2 (en) Method and system of retrieving Ajax web page content
CN102272757B (zh) 用于执行客户端浏览器状态的服务器端记录的方法和系统
US9195572B2 (en) Systems and methods for identifying user interface (UI) elements
CN103984686B (zh) 页面切换方法及装置
US8612420B2 (en) Configuring web crawler to extract web page information
CN101697156B (zh) 一种构造链式网页的方法及系统
US20190042397A1 (en) Accessibility testing software automation tool
US20080235671A1 (en) Injecting content into third party documents for document processing
CN109144567B (zh) 跨平台的网页渲染方法、装置、服务器及存储介质
CN106598991A (zh) 一种使用会话方式实现与网站交互表单自动提取的网络爬虫系统
CN109684571A (zh) 一种数据采集方法及装置、存储介质
Hallé et al. Testing web applications through layout constraints
CN113190512A (zh) 一种基于埋点技术的电力客户行为数据分析方法
CN110083755A (zh) 一种高仿真解析网页方法、装置和电子设备
CN103458065A (zh) 一种HTML5标准下基于Webkit内核的视频地址提取方法
CN105373533B (zh) 一种页面链接地址的检测方法、客户端及装置
CN102043786A (zh) 配置快速键予页面转换元素的浏览系统及其方法
CN109240700B (zh) 关键代码定位方法与系统
CN109240664A (zh) 一种采集用户行为信息的方法及终端
CN103970773B (zh) 一种网页的页面更新方法及装置
CN109062784B (zh) 接口参数约束代码入口定位方法与系统
CN104951536B (zh) 搜索方法及装置
CN104050165A (zh) 一种基于iptv的网页初始焦点选定方法和装置
CN109062785B (zh) 接口参数约束代码定位方法与系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: NANKAI UNIVERSITY

Effective date: 20140106

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Zhou Zhengji

Inventor after: Li Minglei

Inventor after: Zhang Biao

Inventor after: Wang Dan

Inventor after: Lian Kunmei

Inventor after: Liu Lei

Inventor after: Xu Jing

Inventor before: Zhou Zhengji

Inventor before: Li Minglei

Inventor before: Zhang Biao

Inventor before: Wang Dan

Inventor before: Lian Kunmei

Inventor before: Liu Lei

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: ZHOU ZHENGJI LI MINGLEI ZHANG BIAO WANG DAN LIAN KUNMEI LIU LEI TO: ZHOU ZHENGJI LI MINGLEI ZHANG BIAO WANG DAN LIAN KUNMEI LIU LEI XU JING

TA01 Transfer of patent application right

Effective date of registration: 20140106

Address after: 100085 Beijing, Haidian District, No. ten on the ground floor, No. 10 Baidu building, layer three

Applicant after: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

Applicant after: Nankai University

Address before: 100085 Beijing, Haidian District, No. ten on the ground floor, No. 10 Baidu building, layer three

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant