论文阅读《智能动态爬虫在Web数据挖掘中的设计与应用》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lianggyu/article/details/100152099

论文《Design and application of intelligent dynamic crawler for web data mining》

Published in: 2017 32nd Youth Academic Annual Conference of Chinese Association of Automation (YAC)

                                                                   智能动态爬虫在Web数据挖掘中的设计与应用

                                                                                                    摘要

Web数据采集是Web数据挖掘的基础。 Web爬虫是Web数据采集的重要工具,但Web数据结构、数据源和信道分配的频繁更新导致了爬虫程序开发和维护的高成本。为了解决这个问题,本文设计并实现了一个智能动态爬虫,它将XPath的数据提取规则存储在数据库中,根据目标动态加载规则,并使用TF-IDF方法计算相关性,可以自动获取Web抓取规则,使爬网工具智能化,动态化,提高了复杂网络环境下爬虫工具的适应性,降低了维护和更新成本。最后,利用智能动态爬虫对公共漏洞的威胁认知,提出了对漏洞社区和网络节点搜索引擎进行数据采集和分析的方法。实验使用三个漏洞社区的原型系统来收集和分析数据。 结果表明,智能动态爬行工具可以实现高效灵活的数据采集功能,为Web数据挖掘奠定了基础。

关键词:Web数据采集;数据提取规则;Xpath;TF-ID;威胁认知

Web应用程序作为当前网络使用最广泛的信息传播,交互式和通讯控制平台,成为网络数据最重要的来源。为了发现Web数据中的公开和隐藏信息,Web数据挖掘涉及文本分析,社会舆论分析,推荐系统,网络安全等方面的重要研究。

本文分析了传统网络爬虫在当前Web应用开发趋势中面临的挑战,提出了一种针对Web爬虫数据提取规则,Web威胁感知和现场应用的动态和智能解决方案,提高了爬虫的开发和维护效率。

1 研究现状

在许多以前的研究中,爬虫主要用于搜索引擎,为舆情监控提供数据,并提供测试Web安全性的URL等。爬虫可以分为两类:一种是针对特定的专用网络爬虫各种商业网站进行编写; 二是一般类别爬虫,主要功能是收集广泛的数据或URL。在这两种爬虫的设计和实现中,通常对目标进行全面分析,以代码形式写入爬虫的规则。爬虫传统的通用结构如图1所示。

近年来,由于Web数据规模和新技术出现,爬虫研究主要围绕以下方向发展:

(1)专注的爬虫或主题爬虫。通过网页分析,这种爬虫是用用户定义的主题页进行选择性提取。研究的重点是网页和主题相关性判断,Web分析算法和访问URL协调的排序算法等。为了适应复杂的Web环境,本体和语义匹配算法被用于爬虫框架,例如提高爬虫自动对焦的能力。

(2)Deep Web爬虫。许多有价值的信息是“隐藏”在数据库查询或Java脚本中动态生成的网页,这个类别页面通常被称为Deep Web。Deep Web爬虫的主要问题是表单分析,自动填写表单,发现隐藏页面和大量Deep Web数据采集等。

(3)分布式爬虫。分布式爬虫的主要研究内容是调度策略,负载平衡和错误恢复机制,实现爬虫的聚类操作,提高爬虫网节点的可扩展性和容错能力。

(4)事件驱动的爬虫。Ajax技术的广泛使用使得爬虫很难获得Web数据的异步加载。事件驱动的爬网程序通过爬虫程序代码嵌入浏览器来触发事件并监视页面的更改,获取数据内容的异步传输。

数据资源越来越丰富,交互式Web应用程序越来越多。 新的Web开发工具,框架和标准出现,信息传播渠道的多样性使得传统的爬虫面临巨大的挑战。同时利用TF-IDF模型对具有高相关度的Web数据进行相关计算,数据提取规则自动获取智能爬虫,提高Web变换数据的爬虫自适应能力,降低维护成本和更新频率。

2 基于XPath数据提取的动态加载规则

根据传统的爬虫通用架构分析,爬虫需要指定起始URL、域名、爬行深度、爬行模式、获取文件类型和数据匹配规则,这些规则通常通过用户界面或配置文件进行设置。但是,大多数爬虫程序将数据提取规则写入程序,导致在站点结构更改或数据源更改时需要修改代码。为了避免同样的情况实现开发人员和用户不需要修改程序的目标。称为爬虫框架动态加载正则表达式的数据提取规则需要被表征为独立于程序的正则表达式。与复杂的正则表达式相比,本文选择XPath作为描述语言,易于使用并学习实现爬虫的动态提取规则。

在XPath的XML文档中选择节点或节点集的路径表达式比正则表达式更可读,从而更容易以常规方式提取结构化数据。例如,要提取的html结构是: <div class = "stime"> (2016/12/31) </ div>其路径表达式可以写成:// div[@ class = "stime"]

基于XPath的动态爬虫运行过程如图2所示。

在本文中,我们使用mysql数据库来存储爬虫和ORM技术所需的动态数据提取规则,将关系数据库的结构映射到对象,然后将参数直接传递给爬虫,实现动态加载。

通过本部分的分析,我们已经成功地实现了动态数据提取规则,使我们能够快速修改数据库来增加,更改,删除数据提取规则,简化爬虫维护操作。但数据提取规则仍然需要手动提取,如何进一步提取数据提取规则,以简化对进一步研究重点的需求。

3 数据提取规则的半自动访问技术

数据提取规则的定义是爬虫中更复杂的部分,对于具有严格结构的存储Web数据,只有开发者知道需要退出的字段和存储表的结构。为了保证数据的准确性,用户需要提供辅助决策,访问目标Web应用程序,并将提取字段的示例到智能动态爬虫。例如,根据用户的要求,用户提交了一些具有标题,内容,时间等多个字段的代表性文本,然后根据提交的文本自动从相应内容中取出XPath,写入数据库,然后执行动态加载。

XPath退出的核心代码:

req = urllib2.Request(target_url)
req.add_header(
     'User-Agent', "Mozilla/5.0 (compatible; MSIE 6.0;
Windows NT 8.1; SV1; .NET CLR 2.0.50727)")
response = urllib2.urlopen(req, timeout=10)
shtml = response.read()
response.close()
hpage = HTML.fromstring(shtml)
htree = etree.ElementTree(hpage)
for t in hpage.iter():
    if "match words" in t.text_content():
    if max_length<len(htree.getpath(t)):
    max_length = len(htree.getpath(t))
    max_XPath = htree.getpath(t)
return max_Xpath

       DOM节点是嵌套的,所以XPath退出一个文档可能会返回多个结果,用于保存在网络最内层的网络数据通常需要撤回。因此,本文保存了最长的XPath作为数据撤销规则。

4 基于TF-IDF方法的数据提取规则的自动采集

本文通过基本的TF-IDF模型说明了自动数据采集的方法。

为了保证搜索引擎利用爬虫算法收集到的数据与感兴趣的主题有关,本文首先定义了一个主题关键字字典,同时用n个加权词表示Web文档,然后使用TF-IDF方法计算关键字(关键词W)和Web文档(网页P)

(1)术语频率(术语频率,TF)。一个Web文档中的归一化表示数目中的关键词数是词频率,用于表示主题关键字与文档的相关性。

fre(p,w)表示Web文档p中关键字w的出现次数。

(2)逆文档频率。反文档频率反映了关键字的稀缺程度及其与文档的相关性。

       dfre(p,w)表示关键字w出现的Web文档p的数量,| P|表示文档的总数。 文件总数除以文件数量的变化次数。

定义1个关键字和Web文档之间的相关系数。对于Web文档的关键字w,其相关系数计算如下:

                 R( p,w) = TF( p,w)× IDF( p,w)

相关系数反映了两者之间的密切关系,值越高,受试者的相似度越高。

基于数据提取规则的TF-IDF方法自动访问技术无法实现严格的字段要求Web数据结构化存储,该方法计算Web文档和兴趣关键字之间的相关系数,然后直接从结果完成提取和存储步骤,您可以实现自动存储。

5 动态爬虫的智能应用

近年来,网络安全事件受到越来越多的关注,各种系统上的每应用者都陷入了漏洞的漏洞,特别是对于0天的漏洞,也感到很难发现它。但实际情况并非如此,超过90%的安全事件是由已知漏洞引起的。确定攻击者是否可以利用已知漏洞有两点:漏洞公开时间t1和漏洞修复时间t2.只要t1和t2之间的攻击漏洞时间将成功,所以可以说时间段是“已知的漏洞攻击时间窗口”(如图3所示)。 因此,对于防卫来说,减少t1和t2之间的时差对于防范已知的漏洞至关重要。

基于上述分析,本文基于漏洞群和网络节点搜索引擎提供的Web数据,将智能动态爬虫应用于已知的漏洞威胁。用于发现社区漏洞信息,同时结合自己的资源,提出漏洞威胁警告,威胁风险评估,将被动威胁转化为主动以感知到威胁,尽快修复漏洞或暂时停止服务,缩短已知的漏洞攻击时间窗口,可以大大降低攻击系统的风险

5.1基于漏洞社区获取已知漏洞的数据

漏洞社区网站是公共漏洞数据的重要来源,包括大量非结构化数据的结构化处理需求,易于处理后分析和使用,爬虫是收集和处理非结构化Web数据的重要工具。因此,在本节中,智能动态爬虫用于收集漏洞社区的实时数据,动态加载数据提取规则。

漏洞社区由商业公司或其他组织维护,大多数安全研究人员和漏洞制造商声称,漏洞研究和知识学习开放共享平台以改善互联网基础设施和服务安全。漏洞社区信息根据时间从近到远发布,信息包括制造商发布的名称,编号,概述,影响系统,概念证明和补丁。根据上述资料,保护人员可以确定受到漏洞影响的资源的维护,威胁程度,应急计划的制定和实施情况。

在本文中,社区主要关注的问题包括CNNVD,CVE,exploit-db,see bug,wooyun,bugs can等等,漏洞更新速度,完善的审计机制。此外,总是有新的漏洞社区为安全人员提供漏洞报告服务,防范漏洞很重要。

Bugs can和bug see的设计者介绍了基于漏洞社区的安全相关产品的设计思想和体系结构,对这一方向的研究具有重要意义。基于以前的工作,本文的主要目的是通过动态爬虫研究公共漏洞威胁感知系统的构建。

Web容器,程序的框架,第三方应用漏洞通常发布在的漏洞研究社区网站平台上,漏洞社区由不同的组织维护,导致社区需要大量的Web数据爬虫,监控,分析。在爬虫中构建搜索引擎并检测Web漏洞的过程中,最重要的是链接到网页提取,确保数据收集的完整性和检测的高覆盖率,这意味着传统的爬虫提取规则链接减少和合并的方式。使用传统的爬虫在社区的数据结构,我们需要自定义不同社区的规则,调试爬虫程序,然后提取。当网站的结构变化或新社区加入时,需要调整代码的结构和规则,维护复杂。为了降低爬虫开发和维护的成本,将爬虫提取规则纳入到动态规则中,可以随时添加,删除和修改,以满足大量网页数据采集的需求。爬虫设计改进了动态规则的方法,使用固定的爬虫框架和存储在数据库中的规则,使爬虫灵活地更新社区数量和结构,收集社区发布的已知漏洞信息的实时数据,提供及时发现已知漏洞的先决条件。 表1显示了从发布的公共漏洞通过智能动态爬虫获取的XPath。

使用异步传输访问漏洞数据的社区可以通过嵌入浏览器程序获取目标页面,然后从加载的DOM元素中提取相关的漏洞信息以公布漏洞详细信息,此方法也适用于传输加密数据页。

5.2 基于网络节点找到的搜索引擎关键字

第5.1节介绍了易受攻击社区漏洞的实时采集方法。然而,无需关注安全人员的所有漏洞,只需要关心有责任服务器是否受到最新漏洞的威胁。当服务器仅负责少量服务时,安全人员可以在服务器,数据库,服务类型和版本的布局上掌控应用程序; 当服务器群集大小变化较大且不断变化时,上述信息变得难以获得,网络节点搜索引擎进行数据采集。网络节点搜索引擎是一个大型网络节点信息收集,包括IP,Web应用,数据库,Web容器,程序插件,并提供检测结果查询。

由于网络节点检测的重要性,许多商业公司和组织已经进行了深入的研究,并在这一领域积累了大量的数据。更成熟的网络节点搜索引擎包括Shodanhq,zoomeye,Fofa.so。Shodanhq是来自美国DHS的SHINE(SHINE项目:Shodan Intelligence Extraction)计划,目的是检测当地关键基础设施网络组件的安全状态并进行安全感知。 约翰·马瑟利花了六年时间开发并在2009年投入使用,主要收集网络设备信息。Zoomeye被安全公司认定为创造了创意,主要功能是检测网络节点信息,偏向主机运行应用程序和服务采集,还要对设备进行检测,同时提供一些设备和漏洞相关的统计数据。Fofa.so由白帽社区开发,也可以在设备,应用,服务上发现,并发布一些信息收集规则。网络节点搜索引擎还包括Censys,IVRE,PunkSPIDER等,这里就不重复了。

网络节点搜索引擎的使用可以快速找到硬件和软件的服务器配置,轻松计算服务器集群分布的新漏洞,快速估计漏洞的有害性,制定应急措施。因此,本文通过网络节点搜索引擎提取保护对象的关键字,这些关键字主要包括漏洞威胁的基本组件。例如,我们可以向网络节点搜索引擎提交IP地址或域名,然后从返回信息抽象地获取Web应用程序的以下程序依赖关系,如图4所示。如果发现随后检测新的程序类型,相应的节点被添加并且边缘权重被初始化。如果节点已经存在,则根据依赖和依赖程序修改边缘的权重。这些框架或Web容器信息作为资源关键字为智能动态爬虫建立提供关键信息支持。

对于本文,您应该提交首要检测的资源目标(IP地址或域名),使用Web容器类型,框架程序,第三方应用程序通过网络空间搜索引擎来查找目标,以证实其名称,版本的情况,然后对漏洞社区发布漏洞的关键字进行实时搜索,发现后快速修复漏洞,无法修复应停止服务或更换,确保系统安全。

5.3 实验和结果分析

本文设计了一种智能动态爬虫原型系统,用于验证已知漏洞威胁感知应用场景中收集的数据的功能和准确性。

智能动态爬行器原型系统是基于Python2.7版本的Scrapy框架开发的。数据库是MySQL,开发环境如表2所示。

如图5所示的原型系统设计框架,在发现了与易受攻击区域的资源配置相关的漏洞之后,它提供了威胁警报,并提高了漏洞修复效率。通用爬虫框架通常不包括作为爬虫的功能模块的数据库,但是由于原型系统中的爬虫数据提取规则存储在数据库中,属于核心组件模块,因此本文将其作为爬虫框架的一部分。

为了验证原型系统的功能和数据采集结果的可用性,分别选择三个漏洞社区200个数据,然后将结果进行人工验证,测试结果如表3所示。

实验结果表明,数据采集结果的准确性较高,符合威胁分析要求。存在假正类的原因主要是使用TD-IDF方法进行相关分析比较简单,当涉及到硬件和软件的漏洞相对较少或Web文档以映射的形式显示漏洞时,将会有更多的假正性。CVE虚假率较高,因为与社区其他漏洞相比,不同DOM节点的CVE页面中相同的数据出现多次,导致数据提取规则提取可能出错。

6 结论

对于大规模结构的Web数据收集问题,本文提出了一种智能动态爬虫,改变了传统的爬虫将数据提取规则在固化程序中的缺点,使规则设置动态化,同时,TF-IDF 方法用于计算Web文档相关性,实现数据提取规则的自动采集,降低了开发成本和维护成本,提高了爬虫的开发效率。但是这篇文章要求的大多基于静态页面,因此它是为了协议驱动而去实现动态化和智能化,因为事件驱动的爬虫没有深入研究,这是一个重要的研究方向。

猜你喜欢

转载自blog.csdn.net/lianggyu/article/details/100152099
今日推荐