3.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选项内容一致。这时,互联网客户端在网络媒体端保留的身份信息就会得以继承,网络媒体自动根据先前的用户自定义信息返回相应版本的响应内容,如图3-8所示。
图3-8 基于Cookie机制的HTTP信息交互过程
利用Cookie机制实现身份认证,就是在互联网客户端面向需身份认证的网络媒体认证成功后,网络媒体向客户端返回记录在媒体端的用户信息,即用于表征身份认证成功的Cookie信息。只要客户端在随后的发布信息请求中携带表征认证成功的Cookie信息,网络媒体就会向客户端返回需要身份认证才可访问的网络发布内容。对于没有携带表征认证成功的Cookie信息的客户端请求,网络媒体返回身份认证失败信息,并要求用户进行认证身份。
2.面向需身份认证的静态媒体实现信息请求网络交互重构
基于网络交互重构实现媒体信息获取是指立足于真实的网络通信过程,通过网络编程顺序模拟网络媒体信息请求过程的各个环节,最终实现网络媒体发布信息的获取。在面对需身份认证才可浏览的静态媒体进行发布信息获取时,网络身份认证过程与静态媒体所含网页及其内嵌URL发布信息请求过程,都需要进行正确的网络交互过程模拟,才能达到获取静态媒体发布信息的最终目标。
在基于网络交互重构实现媒体信息获取过程中,媒体信息获取环节是通过响应信息返回码来判断信息获取请求是否成功。一般而言,HTTP/1.X 20X(如HTTP/1.1200OK)标志着信息请求成功,而HTTP/1.X 40X意味着信息请求失败。需特别说明的是,HTTP/1.X 401标志着在信息请求过程中身份认证失败,这时网络媒体信息获取环节需要智能地进行身份认证过程模拟,如图3-9所示。
图3-9 基于Cookie机制实现需身份认证才可访问信息请求的过程
在针对首次信息请求的响应返回码是401时,媒体信息获取环节首先判断内容发布媒体身份认证过程中是否需要图灵检测。所谓图灵检测,是指目前在网络媒体身份认证过程中普遍使用的高噪声数字/字母图像。互联网客户端在填写用户名和密码信息的同时,必须同时辨识数字/字母信息,并与用户名和密码信息一同提交,才可以通过身份认证。用于网络媒体信息获取的用户名和密码信息,可以事先在目标媒体上手动申请得到,并针对不同网络媒体维护用户名/密码库,如图3-10所示。关于图灵检测,读者可以自行查阅本书图像信息处理的相关章节。
需要特别说明的是,在基于网络交互重构实现静态媒体发布信息获取的过程中,网络编程模拟信息请求过程,理论上可以通过充分了解相关通信协议的具体交互过程予以实现。不过考虑到每个网络媒体的身份认证过程不尽相同,同时针对不同网络媒体发布信息的请求数据包内容组成各异,完全基于理论进行通信协议数据交互过程模拟,在网络交互数据包重组与分析环节存在诸多难点。
图3-10 网络媒体信息获取身份认证模拟
这时,可以在常见的局域网侦听工具的协助下,首先手动完成身份认证请求与静态网页信息浏览全过程,并从侦听工具中获得身份认证请求数据包、网络媒体响应数据包,以及静态网页信息请求数据包的具体构成。具体如图3-11所示。
在此基础上,编程模拟网络交互过程时直接按照信息请求数据包的实际组成,构造身份认证及网页信息请求数据包(携带表征认证成功的Cookie),并在面向身份认证请求的响应数据包相应位置提取表征身份认证成功的Cookie信息,如Set-Cookie选项内容。在完全掌握真实网络通信过程的前提下进行网络交互重构,能够有效降低网络通信数据包重组与分析,以及编程重构网络交互过程的工作复杂度。
3.静态网络媒体发布信息的解析
通过网络交互重构获取到静态网络媒体起始网页发布信息后,可以采用传统的基于HTML标记匹配的网页解析方法,提取网页主体内容及其内嵌的URL信息。例如,可以从“<body>与</body>”标记对中提取静态网页主体内容,从“<a href=…>与</a>”标记对中提取网页内嵌URL信息。关于网页解析方法可能涉及的其他HTML标记,读者可以自行查阅相关文献。网络媒体信息获取环节继续为每个内嵌URL构建并且发送信息请求包(内含表征身份认证成功的Cookie),并获取其发布内容。最终在所关注的互联网范围内,针对静态网络媒体实现发布信息的主动获取工作。
图3-11 基于局域网侦听工具获得网络交互数据包的组成
当前,还可利用文档对象模型(Document Object Module,DOM)树,智能定位、主动提取静态网页主体内容及其内嵌URL信息。DOM树是以层次结构组织的节点或信息片断集合,提供跨平台并且可应用于不同编程语言的标准程序接口。DOM树把文档对象转换成树形结构,文档中的每个部分都是DOM树的节点。HTML DOM是专门应用于HTML/XHTML的文档对象模型,主要包含Window、Document、Location、Screen、Navigator与History等HTML DOM对象。HTML网页与HTML DOM树间的对应关系如图3-12所示。
图3-12 HTML网页对应的HTML DOM树
HTML网页对应的HTML DOM树存储于浏览器内存对象中,该对象实现了包含若干方法的标准程序接口。网页开发人员可以通过相应接口,对于HTML DOM树上的每个节点进行遍历、查询、修改或删除等操作,从而动态访问和实时更新HTML网页的内容、结构与样式。例如,可以通过查询“Body”节点,获得静态网页主体内容;通过遍历“A”节点,获得静态网页内嵌URL信息。