第2章 网络信息内容的获取
在以万维网(WWW)为主要承载平台的国际互联网成为与报纸传媒、电台广播及电视媒体并重的第4大信息传播媒体之前,历史文稿、最新材料等向计算机的手动录入是信息分析系统最为主要的数据来源。在网络媒体信息与网络通信信息遍布世界各个角落的今天,面向海量互联网信息实现全面或有针对性的内容获取,已经成为一个崭新的课题呈现在网络内容分析人员面前。
鉴于此,本章着重探讨互联网传播信息的获取问题。在把互联网传播信息划分成网络媒体信息与网络通信信息的基础上,本章重点介绍网络媒体信息的获取原理与获取方法,同时简要讲解网络通信信息获取方案。
2.1 互联网信息类型
受益于国际互联网基础设施建设的长足发展,当前基于互联网实现信息传播这一网络应用已经相当普及。美国因特网监测公司调查数据指出,截止到2009年3月世界范围内网站的总数是224749695个。2009年1月的《中国互联网网络发展状况统计报告》显示,到2008年底域名注册者在中国境内注册的网站数(包括在境内接入和境外接入)达到287.8万个,网页总数达到16086370233个,平均每个网站的网页数是5588个,平均每个网页的字节数是28.6KB。
容纳着数以万TB的信息总量,并且正处于内容爆炸性增长的国际互联网,包含了各式各样、内容迥异的信息,但从宏观角度上来讲,互联网公开传播信息可以分为网络媒体信息与网络通信信息两大类型。
2.1.1 网络媒体信息
网络媒体信息是指传统意义上的互联网网站的公开发布信息,网络用户通常可以基于通用网络浏览器(例如,Microsoft公司的Internet Explorer,Netscape公司的Navigator,Mozilla公司的Mozilla Firefox)获得互联网公开发布的信息。由于本书针对这类信息拥有统一的信息获取方法,因此将其统称为网络媒体信息。宏观意义上的网络媒体信息涉及面较广,可以通过网络媒体形态、发布信息类型、媒体发布方式、网页具体形态与信息交互协议等多种划分方法进一步细分与区别网络媒体信息的组成。
1.网络媒体形态
根据网络媒体具体形态的不同,网络媒体可以分为广播式媒体与交互式媒体两类。其中,传统的广播式媒体主要包含新闻网站、论坛(BBS)、博客(Blog)等形态;新兴的交互式媒体涵盖搜索引擎、多媒体(视/音频)点播、网上交友、网上招聘与电子商务(网络购物)等形态。并且,每种形态的网络媒体都以各自的方式向互联网用户推送其公开发布信息。
2.发布信息类型
从公开发布信息的具体类型上看,网络媒体信息可以细分为文本信息、图像信息、音频信息与视频信息4种类型,其中,网络文本信息始终是网络媒体信息中占比最大的信息类型。
3.媒体发布方式
按照网络媒体所选择信息发布方式的不同,网络媒体信息还可以分成可直接匿名浏览的公开发布信息,以及需实现身份认证才可进一步点击阅读的网络媒体发布信息。
4.网页具体形态
《中国互联网网络发展状况统计报告》根据超链接网络地址(统一资源定位符,URL)的组成,将网页分成URL中不含“?”或输入参数的静态网页,以及URL中含“?”或输入参数的动态网页两类。针对网页内容的具体构成形态,还可以对网络媒体信息中的静态网页与动态网页进行更加明确地区分。
网页主体内容以文本形式,而网页内嵌链接信息以超链接网络地址格式存在于网页源文件中的网页属于静态网页,如图2-1所示。网页主体内容或网页内嵌链接信息完全封装于网页源文件中的脚本语言片段内的网页属于动态网页,如图2-2所示。
图2-1 静态网页实例
图2-2 动态网页实例
从网页内容的构成形态不难发现,动态网页与静态网页不同,它是使用传统的基于HTML标记匹配的网页解析方法提取网页主体内容,以及网页内嵌链接所对应的网络超链接地址。
5.信息交互协议
按照所使用的信息交互协议的不同,网络媒体信息可以分为HTTP(S)信息、FTP信息、MMS信息、RTSP信息与已经不多见的Gopher信息等。其中,MMS信息与RTSP信息属于视/音频点播协议。当互联网用户通过网络浏览器点击MMS或RTSP协议信息时,浏览器会通过操作系统调用该协议解析所对应的默认应用程序,实现互联网用户请求的视/音频片段播放。
2.1.2 网络通信信息
互联网用户使用除网络浏览器以外的专用客户端软件,实现与特定点的通信或进行点对点通信时所交互的信息属于网络通信信息。常见的网络通信信息包括使用电子邮件客户端收发信件时通过网络传输的信息,以及使用即时聊天工具进行点对点交流时所传输的网络信息。鉴于网络通信信息在一定程度上并不属于网络公开发布信息,本章将只对这类信息的获取原理与获取方法进行简要探讨。
2.2 网络媒体信息获取原理
与面向特定点的网络通信信息的获取范围不同,网络媒体信息的获取范围在理论上可以是整个国际互联网。传统的网络媒体信息的获取从预先设定的、包含一定数量URL的初始网络地址集合出发,获取初始集合中每个网络地址所对应的发布内容。而网络媒体信息的获取,一方面将初始网络地址发布信息的主体内容按照系列内容判重机制,有选择地存入互联网信息库。另一方面,进一步提取已获取信息内嵌的超链接网络地址,并将所有超链接网络地址置入待获取地址队列,以“先入先出”方式逐一提取队列中的每一个网络地址发布的信息。网络媒体信息获取环节循环开展待获取队列中的网络地址发布信息获取、已获取信息主体内容提取、判重与信息存储,以及已获取信息内嵌网络地址提取并存入待获取地址队列操作,直至遍布所需的互连网络范围。
2.2.1 网络媒体信息获取理想流程
理想的网络媒体信息获取流程主要由初始URL集合——信息“种子”集合、等待获取的URL队列、信息获取模块、信息解析模块、信息判重模块与互联网信息库共同组成,如图2-3所示。
图2-3 网络媒体信息获取理想流程
1.初始URL集合
初始URL集合概念最初由搜索引擎研究人员提出,商用搜索引擎为了使自身拥有的信息充分覆盖整个国际互联网,需要维护包含相当数量网络地址的初始URL集合。搜索引擎跟随初始URL集合发布页面上的网络链接进入第一级网页,并进一步跟随第一级网页内嵌链接进入第二级网页,最终形成周而复始的跟随网页内嵌地址的递归操作,从而完成所有网页发布信息的获取工作。因此,初始URL集合通常被形象地称为信息“种子”集合,如图2-4所示。
图2-4 跟随网页内嵌链接逐级递归遍历互联网络
从理论上讲,只要维护包含足够数量网络地址的初始URL集合,搜索引擎即可遍历整个国际互联网(通常还需要网站主动向搜索引擎提供网站地图Sitemap)。源于搜索引擎应用研究的网络媒体信息获取环节,同样需要根据后续网络媒体信息分析环节所关注的互联网络范围,事先维护包含一定数量网络地址的初始URL集合,作为信息获取操作的起点。
2.信息获取
信息获取模块先根据来自初始网络地址集合或URL队列中的每条网络地址信息,确定待获取内容所采用的信息发布协议。在完成待获取内容协议解析操作后,信息获取模块将基于特定通信协议所定义的网络交互机制,向信息发布网站请求所需内容,并接收来自网站的响应信息,将它们传递给后续的信息解析模块。基于HTTP协议发布的文本信息获取范例如图2-5所示,对于HTTP信息网络交互过程细节可查阅协议规范——Hypertext Transfer Protocol-HTTP/1.1,RFC 2616,June1999。
图2-5 HTTP文本信息获取范例
在理论原理层面上,立足于开放系统互连参考模型(OSI/RM)的传输层,可以通过重构各类通信协议(例如HTTP和FTP等)所定义的网络交互过程,实现基于不同通信协议的发布内容获取。随着互联网中文本、图像信息发布形态的不断推陈出新(人机交互式信息发布形态的出现直接导致文本、图像信息请求网络通信过程愈加复杂),视/音频发布内容的层出不穷(视/音频信息网络交互过程重构困难,部分视/音频网络通信协议交互细节并未公开),纯粹依赖于各类协议的网络通信交互过程重构,实现信息内容获取的操作复杂度和网络交互重构难度呈指数级增长。
因此,当前关于信息获取的研究正在逐步转向在应用层利用开源浏览器部分组件,甚至整个开源浏览器实现网络媒体信息内容的主动获取,其相关内容将在本章“网络媒体信息获取方法”一节中做进一步讲解。
3.信息解析
在信息获取模块获得网络媒体响应信息后,信息解析模块的核心工作是根据不同通信协议的具体定义,从网络响应信息相应位置提取发布信息的主体内容。为了便于开展信息采集与否判断,信息解析模块通常还将按照信息判重的要求,进一步维护与网络内容发布紧密相关的关键信息字段,例如信息来源、信息标题,以及在网络响应信息头部可能存在的信息失效时间(Expires)或信息最近修改时间(Last-Modified)等。信息解析模块会把提取到的内容直接交给信息判重模块,在通过必要的重复内容检查后,网络媒体发布信息的主体内容及其对应的关键字段将被存入互联网信息库。
为了实现跟随网页内嵌链接递归遍历所关注的网络范围这一技术需求,对于响应信息类型(Content-Type)是text/*的HTTP文本信息,信息解析模块在完成响应信息主体内容及关键信息字段提取的同时,还需要进一步开展HTTP文本信息内嵌URL的提取操作。信息解析模块实现HTTP文本信息内嵌URL提取的理论依据,是HTML语言关于网络超文本链接(Hyper Text Link)标记的系列定义。信息解析模块一般通过遍历HTTP文本信息全文,查找网络超文本链接标记的方法,实现HTTP文本信息内嵌URL的提取。当前信息解析模块还可以先面向HTTP文本信息构建文档对象模型(Document Object Module,DOM)树,并从HTML DOM树的相应结点获取HTTP文本内嵌URL信息,本章随后一节将进行关于HTML DOM树的详细介绍。
4.信息判重
在网络媒体信息获取环节,信息判重模块主要基于网络媒体信息URL与内容摘要两大元素,实现信息采集/存储的与否判断。其中,URL判重通常是在信息采集操作启动前进行,而内容摘要判重则是在采集信息存储时发挥作用。
来自HTTP文本信息的内嵌URL信息,首先通过URL判重操作确定每个内嵌URL是否已经实现信息获取。对于尚未实现发布内容采集的全新URL,信息获取模块将会启动完整的信息采集流程。对于已经实现内容采集,同时注明信息失效时间及最近修改时间的URL(URL信息失效时间及最近修改时间已由信息解析模块从网络响应信息中提取得到,并存于互联网信息库中),信息采集模块将会向对应的网络内容发布媒体发起信息查新获取操作。此时,信息采集模块只会对于已经失效或者已被重新修改的网络内容重新启动完整的信息采集操作。信息采集模块通常被要求重新采集已经实现信息获取,但未注明信息失效时间及最近修改时间的URL所对应的发布内容。
在面向没有提供发布信息失效时间及最近修改时间的网络媒体(网络通信协议并未强制要求响应信息必须提供信息失效时间及最近修改时间)时,仅依靠URL判重机制,是无法避免同一内容被重复获取的。因此在获取信息存储前,需要进一步引入内容摘要判重机制。网络媒体信息获取环节可以基于MD5算法,逐一维护已采集信息的内容摘要,杜绝相同内容重复存储的现象。
2.2.2 网络媒体信息获取的分类
按照信息获取行为所涉及的网络范围划分,网络媒体信息获取可以分为面向整个国际互联网的全网信息获取,以及针对某些具体网络区域的定点信息获取。按照信息获取行为在工作范围内所关注的对象划分,网络媒体信息获取还可以分为针对工作范围内所有发布信息的面向全部内容的信息获取,以及仅关注工作网络范围内某些热门话题的基于具体主题的信息获取。本节重点介绍全网信息获取与定点信息获取在技术要求与实现方法方面的区别,并进一步讲解基于主题的信息获取方法,以及该领域代表性技术——元搜索。
1.全网信息获取
全网信息获取工作范围涉及整个国际互联网内所有网络媒体发布信息,主要应用于搜索引擎(Search Engine),例如Google、Baidu或Yahoo等,和大型内容服务提供商(Content Service Provider)的信息获取。随着网络新型媒体的不断出现、网络信息发布形式的更新换代,纯粹通过跟随网络链接已经很难达到遍历整个互联网的效果。因此,全网信息获取发起方在不断更新、扩展用于信息获取的初始URL集合的同时,还建议新接入互联网的网络媒体主动向信息获取方提交自身网站地图(SiteMap)。这有利于全网信息获取机制面向新网络媒体实现发布内容采集,从而保证其尽可能全面地覆盖整个国际互联网。
正如前文所述,整个国际互联网信息总量非常庞大,考虑到本地用于信息采集的存储空间有限,全网信息获取发起方实际上并没有把所有网络媒体信息都采集到本地。搜索引擎或大型内容服务提供商在进行全网信息获取时,通常基于特定的计算方法(例如Google的PageRank算法)对每条网络信息进行评判,只是获取或长时间保存在信息评判系统中排名靠前的网络信息,例如链接引用率较高的网络媒体发布内容。另一方面,由于工作对象遍布整个国际互联网,单次全网信息获取一般需要数周乃至数月的时间。因此在面对信息更新相对频繁的网络媒体(如论坛或博客)时,全网信息获取机制的内容失效率相对较高,其对于每个网络媒体发布内容获取的时效性无法实现统一保证。尽管如此,全网信息获取作为搜索引擎与内容服务提供商不可或缺的信息获取机制,依然在网络信息应用中起到极为关键的作用。
2.定点信息获取
由于全网信息获取不仅对于内容存储空间要求过高,而且无法保证网络媒体发布内容获取的时效性,因此在网络媒体信息获取只是重点关注某些特定的网络区域,并且向信息获取机制相对于媒体内容发布的网络时延提出较高要求时,定点信息获取的概念应运而生。
定点信息获取的工作范围限制在服务于信息获取的初始URL集合中每个URL所属的网络目录内,深入获取每个初始URL所属的网络目录及其下子目录中包含的网络发布内容,不再向初始URL所属网络目录的上级目录,乃至整个互联网扩散信息获取行为。如果说全网信息获取关注的是信息获取操作的全面性,即信息获取在整个互联网中的覆盖情况,定点信息获取机制则更加重视在限定的网域范围内,进行深入的网络媒体发布内容获取,同时有效保证获取信息的时效性。
定点信息获取正是通过周期性地遍历每个初始URL所属的网络目录,达到在初始URL设定的网域范围内深入获取网络发布内容的技术需求。与此同时,周期性遍历初始URL所属网络目录的时间间隔,是定点信息获取用于确保内容采集时效性的关键参数。合理设定周期轮询、查新获取初始URL所属网络目录的时间间隔,可以确保定点信息获取机制不至于错失目标网络媒体不断更新的发布内容,并且防止信息获取机制过分增加目标媒体的工作负载。
3.基于主题的信息获取与元搜索
由于在整个国际互联网或限定的网域范围内,全面获取所有网络媒体发布内容可能造成本地存储信息泛滥,因此在所关注的网络范围内只面向某些特定话题进行基于主题的信息获取,是在面向全部内容的信息获取以外另一个行之有效的信息获取机制。顾名思义,基于主题的信息获取只把与预设主题相符的内容采集到本地,并在信息获取过程中增加了内容识别环节,可以只是简单的主题词汇匹配,也可以面向发布内容进行基于主题的模式识别,从而在关注的网络范围内有选择地获取网络媒体发布内容。相对于面向全部内容的信息获取,基于主题的信息获取机制正是通过有效减少需要采集的内容总量,进一步降低已采集内容的失效率,同时显著减少服务于信息采集的内容存储空间。
伴随搜索引擎应用的不断深入,在搜索引擎的协助下进行基于主题的信息获取技术——元搜索技术,得到了越来越多的应用。元搜索属于特殊的基于主题的信息获取,它将主题描述词传递给搜索引擎进行信息检索,并把搜索引擎针对主题描述词的信息检索结果作为基于主题信息获取的返回内容。
元搜索技术得以实现的关键原因是,每个搜索引擎在为输入词目构造信息检索URL时是有规律可循的。以中/英文信息检索词目为例,常用搜索引擎是把英文词目原本内容,或中文词目所对应的汉字编码作为信息检索URL的参数输入。例如,Baidu是选择中文词目的GB编码作为信息检索URL参数。除输入参数不同以外,用于相同搜索引擎的信息检索URL的其余部分完全相同,如图2-6所示。
图2-6 搜索引擎信息检索URL构造范例
元搜索技术正是通过在不同搜索引擎的网络交互过程中,根据每个搜索引擎的具体要求构造主题描述词信息检索URL,向搜索引擎发起信息检索请求。元搜索技术利用搜索引擎进行基于主题的信息获取操作,它把搜索引擎关于主题描述词的信息检索结果作为信息获取对象,从而实现面向特定主题的网络发布内容获取。
2.2.3 网络媒体信息获取的技术难点
在网络媒体信息获取功能实现过程中,无论是全网信息获取,还是定点信息获取,都存在相当程度的技术应用实现难度。另外,元搜索作为特殊的基于主题的信息获取,其在信息获取结果排序方面仍然存在尚未完全解决的技术难点。
首先,网络媒体信息获取的工作对象是信息形态各异、信息类型多样的互联网媒体。在信息总量迅速膨胀的互联网信息面前,网络媒体信息获取机制通常需要在获取内容的全面性和时效性之间做出取舍。与此同时,在面对完全异构的网络媒体发布信息时,信息获取技术需要在各类不同的网络媒体间普遍适用,这又为网络媒体信息获取功能提出了更高的技术要求。当前网络媒体信息获取机制在保留传统的基于网络交互过程重构机制实现信息获取的基础上,逐步转向在信息获取过程中集成开源浏览器部分组件甚至整体,用于提高技术功能能级、降低技术实现难度,至于相关内容将在本章后续部分予以详细介绍。
其次,由于部分网络媒体选择屏蔽过于频繁的、来自相同客户端的信息获取操作,因此定点信息获取技术实现的难点还包括在周期性地遍历设定网域发布内容,确保定点信息获取的深入性与时效性的基础上,有效回避目标媒体对于所谓“恶意”信息获取行为的封禁。要解决这一技术难点,一方面可以通过适当选择周期遍历时间间隔,防止信息获取行为造成网络媒体负载过重;另一方面则涉及定期修改用于内容获取的网络客户端信息请求内容(内容协商行为),以避免遭遇目标网络媒体的拒绝服务。
最后,元搜索在通过搜索引擎实现基于主题的信息获取过程中,可以选择向多个搜索引擎串/并行发送信息检索请求,扩大元搜索技术的网络覆盖面。正是由于这一应用需求,对不同主题选择恰当的搜索引擎,同时基于合适的主题相关度判断法则,对来自不同搜索引擎的信息检索结果实现基于主题的相关度排序,正是当前元搜索技术研究的难点所在。
2.3 网络媒体信息获取方法
在完成关于网络媒体信息获取技术的一般性原理描述后,本节转而介绍针对各类网络媒体的发布信息获取方法。按信息发布方式分类,网络媒体信息可分成直接匿名浏览信息与需身份认证网络媒体发布信息两类;按网页具体形态分类,网络媒体信息又可分成静态网页与动态网页两类,本节首先介绍采用网络交互过程重构机制,实现需要身份认证的静态网页发布信息获取方法。
在此基础上,本节进一步介绍基于开源浏览器脚本解析组件,实现内嵌脚本语言片段的动态网页发布信息获取方法。最后重点介绍基于浏览器模拟技术,实现形态各异、类型各异的网络媒体发布信息获取。
2.3.1 需身份认证静态媒体发布信息获取
随着网络社区概念及个性化信息概念的不断普及,当前多数网络媒体首先需要身份认证,才可进行正常的内容访问。对于正在进行网络浏览的用户而言,身份过程是相对简单的。互联网用户只需要根据网络内容发布者的提示,在身份认证网页上填写正确的用户名、密码信息,进行必要的图灵测试(正确输入以图像信息显示的身份认证验证码内容),并提交所有信息,就能成功完成身份认证。尽管如此,对于通过网络交互重构实现信息获取的计算机而言,增加身份认证过程将直接导致用于信息获取的网络通信过程模拟变得更加复杂。在此重点探讨基于网络交互重构机制,面向需要身份认证的对外发布的网页形态(都属于静态网页范畴的静态网络媒体),实现发布内容提取的具体方法。
在基于网络交互重构实现信息获取的过程中,如果网络媒体要求身份认证,信息获取环节就需要在原有的信息请求过程重构前,首先模拟基于HTTP协议的网络身份认证过程,这是由于面向网络媒体的身份认证通常基于HTTP协议。基于网络交互重构实现身份认证信息获取主要涉及用于表明身份认证成功的Cookie信息获得,以及携带相关Cookie信息进一步向网络媒体请求发布内容两个独立环节。
(1)基于Cookie机制实现身份认证
Cookie机制用于同一互联网客户端在不同时刻访问相同网络媒体时,客户端信息的恢复与继承。HTTP/1.1针对Cookie机制定义了两类报头选项(Header Fields),分别是Set-Cookie选项和Cookie选项。其中,Cookie选项存在于互联网客户端发送的请求信息中,而Set-Cookie选项则出现在网络媒体响应信息的头部。
在互联网客户端向网络媒体发送信息请求,尤其是个性化(自定义)的信息请求时,网络媒体响应信息头部通常会包含Set-Cookie选项,返回记录在网络媒体端的互联网用户身份信息。在获得网络媒体响应信息后,互联网客户端在提取响应信息主体内容的同时,还会将响应信息中的Set-Cookie选项内容存入本地Cookie信息记录文件。当互联网客户端再次向相同的网络媒体发送信息请求时,请求信息就会包含Cookie选项,若Cookie选项内容与先前的Set-Cookie选项内容一致,则互联网客户端在网络媒体端保留的身份信息就会得以继承,网络媒体会自动根据先前的用户自定义信息返回相应的响应内容,如图2-7所示。
图2-7 基于Cookie机制的HTTP信息交互过程
利用Cookie机制实现身份认证,就是在互联网客户端面向需身份认证网络媒体认证成功后,网络媒体向客户端返回记录在媒体端的用户信息,即用于表明身份认证成功的Cookie信息。只要客户端在随后的发布信息请求中携带表明认证成功的Cookie信息,网络媒体就会向客户端返回需要身份认证才可访问的网络发布内容。对于没有携带表明认证成功Cookie的客户端请求,网络媒体则返回身份认证失败信息,并要求用户进行身份认证,如图2-8所示。
图2-8 基于Cookie机制实现需身份认证才可访问信息请求
(2)基于网络交互重构实现信息获取
基于网络交互重构实现媒体信息获取是指立足于真实的网络通信过程,通过网络编程顺序模拟网络媒体信息请求过程的各个环节,最终实现网络媒体发布信息获取。在面对需身份认证才可浏览的静态媒体进行发布信息获取时,网络身份认证过程与静态媒体所含网页及其内嵌URL发布信息请求过程,都需要进行正确的网络交互过程模拟,才能达到获取静态媒体发布信息的最终目标。
在基于网络交互重构实现媒体信息获取过程中,媒体信息获取环节是通过响应信息返回码判断信息获取请求是否成功的。一般而言,HTTP/1.X 20X(例如HTTP/1.1 200OK)标志着信息请求成功,HTTP/1.X 40X标志着信息请求失败,而HTTP/1.X 401则标志着在信息请求过程中身份认证失败,此时网络媒体信息获取环节需要智能地进行身份认证过程模拟,如图2-9所示。
当针对首次信息请求的响应返回码是401时,媒体信息获取环节首先判断内容发布媒体身份认证过程是否需要图灵检测。所谓图灵检测是指目前在网络媒体身份认证过程中普遍使用的高噪声数字/字母图像,在互联网客户端填写用户名/密码信息时,必须同时辨识数字/字母信息,并与用户名/密码信息一同提交,才可以通过身份认证。用于网络媒体信息获取的用户名/密码信息,可以事先在目标媒体上手动申请得到,并针对不同网络媒体维护用户名/密码库。关于图灵检测,即用于身份认证的验证码机器识别相关内容,读者可以自行查阅本书关于图像信息处理的相关章节。
需要特别说明的是,在基于网络交互重构实现静态媒体发布信息获取过程中,网络编程模拟信息请求过程,理论上可以通过充分了解相关通信协议的具体交互过程予以实现。但是考虑到每个网络媒体身份认证过程不尽相同,并且针对不同网络媒体发布信息的请求数据包内容组成各异,完全基于理论进行通信协议数据交互过程模拟在网络交互数据包重组与分析环节存在诸多难点。
图2-9 网络媒体信息获取身份认证模拟
这时可以在常见的局域网侦听工具协助下,手动完成身份认证请求与静态网页信息浏览全过程,并从侦听工具中获得身份认证请求数据包、网络媒体响应数据包,以及静态网页信息请求数据包的具体构成,如图2-10所示。
图2-10 基于局域网侦听工具了解网络交互数据包组成
在此基础上编程模拟网络交互过程时,可以直接按照信息请求数据包的实际组成,构造身份认证及网页信息请求数据包(携带表明认证成功的Cookie),并在面向身份认证请求的响应数据包相应位置提取表明身份认证成功的Cookie信息,例如Set-Cookie选项内容。在完全掌握真实网络通信过程的前提下进行网络交互重构,能够有效降低网络通信数据包的重组与分析,以及编程重构网络交互过程的工作复杂度。
通过网络交互重构获取到静态网络媒体起始网页发布信息后,可以采用传统的基于HTML标记匹配的网页解析方法,提取网页主体内容及其内嵌URL信息。例如,可以从“
与”标记对中提取静态网页主体内容,从“与”标记对中提取网页内嵌URL信息。关于网页解析方法可能涉及其他HTML标记,读者可以自行查阅文献——HTML 4.01 Specification, W3C Recommendation, December 1999。之后,网络媒体信息获取环节将继续为每个内嵌URL构建并发送信息请求包(内含表明身份认证成功的Cookie),以获取其发布内容,最终在所关注的互联网范围内,针对需要身份认证的静态网络媒体事先发布信息提取工作。
2.3.2 内嵌脚本语言片段的动态网页信息获取
动态网页主体内容及其内嵌URL信息完全封装于网页源文件中的脚本语言片段内,如图2-11所示。当通过网络交互重构获得动态网页发布信息时,无法直接使用基于HTML标记匹配方法提取网页主体内容及其内嵌URL信息。在这种情况下,可以先把动态网页中包含的所有脚本语言片段传递给Mozilla浏览器的脚本解释组件——SpiderMonkey,或独立脚本解释引擎——Rhino,实现动态脚本解析并获得脚本片段所对应的静态网页内容,进而按照静态网页信息获取方法完成动态网页及其内嵌URL发布内容的获取工作。
图2-11 动态网页主体内容封装于源文件脚本语言片段中
鉴于当前JavaScript广泛应用于动态网页的编写,本节主要讲解如何基于脚本解释引擎Rhino,面向包含JavaScript的动态网页实现发布信息获取。不过在这以前,首先介绍利用文档对象模型DOM树,提取动态网页所含脚本语言片段的具体方法。该方法同样适用于提取静态网页主体内容,以及网页内嵌URL信息。
(1)利用HTML DOM树提取动态网页内的脚本语言片段
文档对象模型DOM是以层次结构组织的结点或信息片段集合,它提供跨平台并且可应用于不同编程语言的标准程序接口。DOM把文档转换成树形结构,使文档中的每个部分都成为DOM树的结点。HTML DOM是专门应用于HTML/XHTML的文档对象模型,主要包含Window、Document、Location、Screen、Navigator与History等HTML DOM对象。HTML网页与HTML DOM树间的对应关系如图2-12所示。
图2-12 HTML网页对应的HTML DOM树
HTML网页对应的HTML DOM树存储于浏览器内存对象中,该对象实现了包含若干方法的标准程序接口。网页开发人员可以通过相应接口,对HTML DOM树上的每个结点进行遍历、查询、修改或删除等操作,从而动态访问和实时更新HTML网页的内容、结构与样式。
动态HTML网页的脚本语言片段通常书写于 “ < Script > 与 < / Script > ” 标记对中,而特定的JavaScript脚本语言片段可以使用 “ JavaScript : ” 在片段开始处进行标记。因此可以在HTML DOM树中,通过遍历标记脚本片段的 “ Script ” 结点或 “ JavaScript :”结点,获得动态HTML网页内包含的所有脚本语言片段。同理,可以通过查询“Body”结点,获得静态网页主体内容。另外,由于静态网页内嵌网络超链接地址通常位于 “ < a href > 和 < / a > ” 标记对中,可以通过遍历“A”结点,获得静态网页内嵌URL信息。
(2)基于Rhino实现JavaScript动态网页信息获取
正如上节所述,遍历HTML DOM树可以得到JavaScript动态网页所包含的脚本片段。为了实现JavaScript网页发布信息的获取,需要把提取到的JavaScript片段输入独立解释引擎Rhino实现动态脚本解析,获得脚本片段所对应的静态网页形式,并最终完成JavaScript动态网页发布信息获取工作,如图2-13所示。
图2-13 基于Rhino实现JavaScript动态网页发布信息获取
在Rhino进行JavaScript网页动态脚本解析过程中,需要首先完成脚本片段包含的所有对象初始化操作,然后按照动态网页加载过程顺序执行JavaScript脚本片段。
1.对象初始化
作为脚本解释引擎,Rhino虽然可以直接识别JavaScript语言内置对象与动态网页脚本片段自定义对象,并自动调用可识别对象定义的方法,但是它无法识别与调用某些特殊对象定义的方法。在脚本解释引擎对象初始化阶段,Rhino无法识别的特殊对象主要是指上文提到的Window、Document、Location、Screen、Navigator与History等HTML DOM对象。
因此,在启动Rhino顺序执行JavaScript片段前,首先需要自定义脚本片段所含HTML DOM对象方法的具体功能,完成HTML DOM对象的本地创建工作,如图2-14所示。随着Ajax机制在Web 2.0应用中的不断普及,多数动态网页还选择Ajax技术调用静态文本信息。对于包含Ajax机制的动态网页,在对象初始化阶段,还需要附加对Ajax机制中XmlHttpRequest对象方法的自定义。
图2-14 脚本解释引擎Rhino对象初始化
在对象初始化阶段进行Rhino无法识别的特殊对象本地创建,就是在Rhino运行环境中定义特殊对象方法函数的具体功能。例如,HTML DOM对象Window方法函数Open的参数是动态页面内嵌URL信息,默认功能是新建浏览器窗口显示该URL发布内容。在Window对象Open方法的本地创建过程中,可在Rhino运行环境中自定义该方法的功能,把对应URL信息置入信息获取环节的URL队列,等待进行信息获取操作。相应地,HTML DOM对象Document方法函数Write的参数是静态网页信息,默认功能是在当前浏览器窗口中显示静态网页发布内容。可在Document对象Write方法功能自定义时说明该方法,用于把静态网页信息写入位于信息采集端的特定文件中。
在Rhino进行JavaScript片段解析过程中,如果遇到无法直接识别的特殊对象,它会在运行环境中寻找该对象方法函数的具体定义,即调用特殊对象在本地创建时声明的方法功能。
2.Rhino执行JavaScript脚本片段
在按照动态网页加载过程顺序执行JavaScript脚本片段过程中,脚本解释引擎Rhino逻辑上可以分为前端环节和后端环节两部分。前端环节顺序进行词法及语法分析,其中语法分析产生语法树,前端环节正是基于语法树生成中间代码。前端环节产生的中间代码就是后端环节需要解释执行的目标代码,后端环节对于中间代码解释执行的最终输出是JavaScript脚本片段对应的静态网页信息。脚本片段变量信息统一存储于记录表模块的符号表中,常量信息及对象属性名信息存储于记录表模块的常量表中,记录表模块贯穿脚本片段解释全过程,如图2-15所示。
图2-15 JavaScript脚本片段在Rhino中的执行过程
Rhino按照加载过程顺序执行JavaScript动态网页脚本片段后的输出,是脚本片段所对应的静态网页形式。在此基础上,可以利用传统的HTML标记匹配方法,也可以通过遍历静态网页的HTML DOM树,获得静态网页主体内容,提取网页内嵌URL信息并置入待获取URL队列,从而最终完成JavaScript动态网页发布信息的获取工作。
2.3.3 基于浏览器模拟实现网络媒体信息获取
之前介绍的网络媒体信息获取方法的技术实质,可以统一归属于采用网络交互重构机制实现网络媒体信息获取。一方面,在面向需要身份认证的静态网页实现发布信息获取过程中,网络媒体信息获取环节通过网络交互重构完整实现身份认证过程与信息请求/响应过程;另一方面,为了实现动态网页发布信息的获取,在通过网络交互重构取得动态网页发布内容后,首先需要基于独立解释引擎实现动态脚本片段解析,获得动态网页所对应的静态网页形态,进而继续采用网络交互重构机制实现静态网页主体内容与内嵌URL发布信息的获取。
网络交互重构机制是网络媒体信息获取的一般性方法,从理论上讲,只要掌握网络通信协议的信息交互过程,就可以通过网络交互重构实现对应协议发布信息获取。但是,随着网络应用的逐步深入、网络媒体发布形态的不断推陈出新,不同网络媒体信息交互过程存在着极大差别。同时,新型网络通信协议正在不断得到应用,而部分网络通信协议,尤其是视/音频信息的网络交互过程并未对外公开发布。
因此,在通过网络交互重构实现网络媒体信息获取过程中,需要对不同网络媒体逐一进行网络信息交互重构,其信息获取技术实现的工作量异常庞大。与此同时,对于网络交互过程尚处于保密阶段的部分网络通信协议而言,无法直接通过网络交互重构实现对应协议发布信息获取。
正是由于通过网络交互重构机制实现媒体信息获取存在相当程度的技术局限性,在Web网站自动化功能/性能测试的启发下,浏览器模拟技术在网络媒体信息获取环节正得到越来越广泛的应用。基于浏览器模拟实现网络媒体发布信息获取的技术,实现过程是利用典型的JSSh客户端向内嵌JSSh服务器的网络浏览器发送JavaScript指令,指示网络浏览器开展网页表单自动填写、网页按钮/链接被点击、网络身份认证交互、网发布页信息浏览,以及视/音频信息点播等系列操作。
在此基础上,JSSh客户端进一步要求网络浏览器导出网页文本内容、存储网页图像信息,或在用于信息获取的计算机上对正在播放的视/音频信息进行屏幕录像,最终面向各种类型的网络内容、各种形态的网络媒体实现发布信息获取,如图2-16所示。
图2-16 基于浏览器模拟实现网络媒体信息获取
1.内嵌JSSh服务器的Firefox浏览器
Mozilla Firefox属于典型的内嵌JSSh服务器的开源浏览器,它将JSSh服务器作为自身的附加组件。外部应用程序——JSSh客户端可与Firefox浏览器内嵌的JSSh服务器(默认侦听9997端口)建立通信连接,并向其发送JavaScript指令,指示Firefox操作当前网页的文档对象,如图2-17所示。内嵌JSSh服务器的Firefox顺序执行来自JSSh客户端的JavaScript指令,其整体过程与Firefox解析动态网页内的JavaScript脚本片段类似。
图2-17 JSSh服务器与客户端间的JavaScript指令交互
2.典型JSSh客户端——FireWatir
作为典型的JSSh客户端,FireWatir广泛应用于Web网站功能和性能自动化测试。FireWatir是基于脚本语言Ruby编写的,可通过发送JavaScript指令,指示内嵌JSSh 服务器的网络浏览器(例如Mozilla Firefox)进行网页表单填写、按钮/链接点击,以及网页内容浏览等系列操作。另外,FireWatir通过JavaScript指令还可以方便地操纵浏览器加载网页的DOM对象,从而导出网页主体内容,实现网络媒体信息的获取。
(1)基于浏览器模拟实现身份认证与网站信息采集
当前Web网站主要通过填写并提交HTTP网页上的认证表单,实现网络客户端身份认证。因此,网络媒体信息获取环节可以通过JSSh客户端向内嵌JSSh服务器的Firefox浏览器发送JavaScript指令,指示浏览器自动填写网页上的身份认证表单,并点击相应按钮提交身份认证请求。身份认证协商过程即身份认证网络交互过程,是由浏览器自行处理的,整个过程如同正在浏览网络的用户与Web网站进行身份认证网络交互。
在身份认证成功后,JSSh客户端继续向内嵌JSSh服务器发送JavaScript指令,指示浏览器加载身份认证网站发布信息。浏览器自行完成用于发布信息请求的网络交互,并告知JSSh客户端网站发布页面加载完成。在此基础上,JSSh客户端指示浏览器导出当前加载网页主体内容,并对网页内嵌URL逐一进行点击浏览与内容导出,最终完成对于身份认证网站发布信息的获取工作。
1)身份认证表单自动填写。在实现HTTP认证网页身份认证表单的自动填写前,首先需要识别身份认证表单元素,即身份认证表单所涉及的HTTP对象——用于用户名、密码信息输入的文本框对象类型与对象名称。在此基础上,可以使用已在目标媒体上申请得到的用户名、密码信息,根据脚本语言Ruby的语法格式,构建并向JSSh服务器发送用于身份认证表单自动填写的JavaScript指令,指示内嵌JSSh服务器的网络浏览器,从而完成身份认证表单的自动填写。
在基于浏览器模拟实现身份认证表单自动填写的技术实现过程中,只需根据不同网络媒体认证表单元素的区别,构建用于认证表单自动填写的JavaScript指令即可。在指示网络浏览器完成认证表单自动填写后,身份认证网络交互过程全部由浏览器自行完成。这与通过网络交互重构实现身份认证与网站发布信息获取期间,需要针对不同网络媒体重构及不同网络交互过程相比,功能实现的复杂度显著降低,技术方案的普适性明显提高。
2)身份认证协商与发布信息获取。在JSSh客户端完成身份认证表单自动填写与提交后,网络浏览器转向与Web网站进行身份认证协商,这期间不再需要JSSh客户端继续参与。在浏览器成功完成网络身份认证后,JSSh客户端继续指示JSSh服务器加载身份认证与网站发布信息,并进一步通过JavaScript指令操作所加载网页的文档对象,提取网页主体内容与网页内嵌URL信息。内嵌JSSh服务器的浏览器在JSSh客户端的指示下,逐一浏览并导出当前网页内嵌URL所对应的网页主体内容,最终完成身份认证网站发布信息获取工作,如图2-18所示。
(2)基于浏览器模拟实现动态网页信息获取
采用浏览器模拟技术进行动态网页发布信息获取,首先需要由JSSh客户端通过JavaScript指令,指示内嵌JSSh服务器的网络浏览器加载动态网页发布信息。在获得网络媒体关于动态网页的响应信息后,浏览器自动完成对于动态网页内各类脚本片段的解析工作,从而获得动态网页所对应的静态网页形态。该阶段不再只是针对具体的脚本语言(例如JavaScript)进行动态脚本片段解析。凡是能在通用浏览器中正常浏览的动态网页,其包含的任何脚本片段都可以基于浏览器模拟技术实现动态脚本解析。
图2-18 基于浏览器模拟实现身份认证协商与发布信息获取
在此基础上,浏览器进一步通过自身包含的网页排版引擎Gecko,生成静态网页的HTML DOM树。然后JSSh客户端可以通过JavaScript指令操作静态网页的HTML DOM树,逐一导出静态网页及其内嵌URL所对应的发布内容,最终完成动态网页发布信息的获取工作,如图2-19所示。
图2-19 基于浏览器模拟实现动态网页发布信息的获取
在通过Rhino实现JavaScript动态网页发布信息的获取时,首先需要基于网络交互重构获取动态网页发布内容,并进一步遍历动态网页HTML DOM树,提取网页所含JavaScript脚本片段。在对JavaScript脚本片段中的HTML DOM对象实现本地创建后, Rhino按照动态网页加载过程顺序执行JavaScript脚本片段,然后输出动态网页所对应的静态网页形态,最终实现动态脚本解析。
与其对应,在基于浏览器模拟实现动态网页信息获取过程中,动态网页发布内容获取与动态网页脚本片段解析工作全由浏览器自行完成。JSSh客户端只是通过JavaScript指令指示网络浏览器加载动态网页,并在JSSh服务器告知与所请求的动态网页对应的静态网页形态加载成功后,继续通过JavaScript指令操作当前网页HTML DOM树获取动态网页发布信息。整体过程与JSSh客户端指示浏览器加载静态网页,并无实质区别。
(3)利用浏览器模拟进行网络媒体信息获取的技术优势
一方面,与通过网络交互重构实现网络媒体信息获取不同,在基于浏览器模拟进行网络媒体信息获取过程中,与身份认证、信息请求相关的网络交互过程,与脚本解析、HTML DOM树生成相关的网页处理过程,全都是在JSSh客户端的指示下,由内嵌JSSh服务器的网络浏览器自行完成。网络媒体信息获取环节不再需要针对不同网络媒体,重复实现网络交互重构机制,从而有效降低了网络媒体信息获取工作的复杂度,显著提高了网络媒体信息获取机制的普适性。
另一方面,在面对网络交互过程极为复杂,甚至网络交互方式并未对外公开的视/音频信息时,可以基于浏览器模拟机制实现视/音频内容自动点播,并对正在播放的视/音频流进行屏幕录像,最终完成视/音频信息的统一获取。在这种情况下,所有能够通过网络浏览器得到的,各种形态、各个类型的互联网信息,都可以采用浏览器模拟技术实现网络媒体发布信息的获取,这也是本书将这类互联网公开传播信息统称为网络媒体信息的根本原因。
2.4 网络通信信息获取方案
使用特定客户端进行网络通信时所传输的互联网信息属于网络通信信息,这类信息包含使用客户端软件(例如,Microsoft Outlook、FoxMail等)收发电子邮件,基于即时通信软件进行网上聊天,采用金融机构发布的客户端进行网上财经交易等。与网络媒体以广播方式向互联网客户端传播信息不同,多数网络通信客户端以对等的、点对点的方式进行互联网通信交互。因此在面向网络通信信息进行互联网交互内容获取时,无法直接借鉴之前提到的网络媒体信息获取方法,进行网络通信信息获取。
当前网络通信信息获取过程主要涉及网络通信信息镜像、网络交互数据重组、通信协议数据恢复、网络通信信息存储等技术环节。网络通信信息获取主要通过局域网总线数据侦听,城域网(例如数字社区,拥有互联网接入的公寓区等)三层交换机通信端口数据导出的方式,实现包含网络通信信息在内的互联网交互数据镜像。
在此基础上,网络通信信息获取机制选择在OSI/RM网络层针对具体的互联网客户端,实现特定协议的网络通信数据包重组。对于明文传输且公开发布协议交互过程的网络通信协议,信息获取机制通过协议数据恢复获得通信交互内容,并将其存入网络通信信息库,实现网络通信信息获取,如图2-20所示。不过,在网络通信信息通过密文传输的情况下,或者部分网络通信协议尚未公开协议交互过程时,网络信息获取环节无法通过协议数据恢复获得网络通信信息。
需要特别说明的是,在使用特定客户端进行网络通信交互时,所传输的网络信息并不算是互联网公开传播信息。因此在没有得到网络通信当事人或网络监管部门授权的情况下,本书并不建议面向属于个人隐私范畴的网络通信信息进行内容镜像与信息获取尝试。
图2-20 网络通信信息获取流程
2.5 本章小结
随着网络基础建设不断深入、网络通信应用不断普及,互联网已经成为继报纸、广播与电视媒体以后的第4大信息发布平台。正是由于这一原因,本节在讲解信息内容的获取时,选择以互联网传播信息作为内容获取的工作对象。根据互联网传播信息是否可以使用通用网络浏览器直接获得,本章将互联网信息分成网络媒体信息与网络通信信息两大类型。
在此基础上,本节主要针对网络媒体信息进行内容获取的一般性原理介绍,并讲解通过网络交互重构实现需要身份认证的静态网络媒体信息获取的方法;基于脚本解释引擎实现动态网页发布信息获取的方法,以及利用浏览器模拟技术对各类网络媒体信息统一,实现信息获取的具体办法。出于章节叙述内容的全面性考虑,本章最后还对于并不属于公开传播范畴的网络通信信息进行了简要内容获取方案介绍。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:信息内容安全管理及应用(二)