3.3.2 基于自然人网络浏览行为模拟的网络发布信息的获取方法
先前介绍的网络媒体信息获取方法的技术实质,可以统一归属于采用网络交互重构机制实现网络媒体信息的获取。
一方面,在面向需要身份认证的静态网页实现发布信息获取过程中,网络媒体信息获取环节通过网络交互重构完整实现了身份认证过程与信息请求/响应过程;另一方面,为了实现动态网页发布信息获取,在通过网络交互重构取得动态网页发布内容后,首先需要基于独立解释引擎实现动态脚本片段解析,获得动态网页所对应的静态网页形态,进而继续采用网络交互重构机制实现静态网页主体内容与内嵌URL发布信息的获取。
应当说,网络交互重构机制是网络媒体信息获取的一般性方法,理论上,只要掌握网络通信协议的信息交互过程,就可以通过网络交互重构来实现对应协议发布信息的获取。不过,随着网络应用的逐步深入,网络媒体发布形态不断推陈出新,不同网络媒体信息交互过程存在极大区别。同时,新型网络通信协议正在不断得到应用,部分网络通信协议,尤其是音/视频信息的网络交互过程并未对外公开发布。因此,在通过网络交互重构实现网络媒体信息获取的过程中,需要对于不同网络媒体逐一进行网络信息交互重构,信息获取技术实现的工作量异常庞大。同时,对于网络交互过程尚出于保密阶段的部分网络通信协议而言,无法直接通过网络交互重构实现对应协议发布信息的获取。
正是由于通过网络交互重构机制实现媒体信息获取存在相当程度的技术局限性,在Web网站自动化功能/性能测试的启发下,自然人网络浏览行为模拟技术在网络媒体信息获取环节正在得到越来越广泛的应用。基于自然人网络浏览行为模拟实现网络媒体发布信息获取的技术实现过程是,利用典型的JSSh客户端向内嵌JSSh服务器的网络浏览器发送JavaScript指令,指示网络浏览器开展网页表单自动填写、网页按钮/链接点击、网络身份认证交互、网发布页信息浏览,以及音/视频信息点播等系列操作。
在此基础上,JSSh客户端进一步要求网络浏览器导出网页文本内容,存储网页图像信息,或在用于信息获取的计算机上对正在播放的音/视频信息进行屏幕录像,最终面向各种类型的网络内容、各种形态的网络媒体实现发布信息的获取,如图3-13所示。
图3-13 基于自然人网络浏览行为模拟实现网络媒体信息的获取
(1)内嵌JSSh服务器的FireFox浏览器
Mozilla FireFox属于典型的内嵌JSSh服务器的开源浏览器,它将JSSh服务器选作自身附加组件。外部应用程序——JSSh客户端,可与FireFox浏览器内嵌的JSSh服务器(默认侦听9997端口)建立通信连接,并向其发送JavaScript指令,指示FireFox操作当前浏览网页的文档对象,如图3-14所示。内嵌JSSh服务器的FireFox浏览器顺序执行来自JSSh客户端的JavaScript指令,整体过程与FireFox解析动态网页内的JavaScript脚本片段类似。
图3-14 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服务器的FireFox浏览器发送JavaScript指令,指示浏览器加载身份认证网站发布信息。浏览器自行完成用于发布信息请求的网络交互,并告知JSSh客户端网站发布页面加载完成。在此基础上,JSSh客户端指示浏览器导出当前加载网页的主体内容,并对网页内嵌URL逐一进行浏览与内容导出,最终完成对于身份认证网站发布信息的获取工作。
(1)身份认证表单的自动填写
在实现HTTP认证网页身份认证表单的自动填写前,首先需要识别身份认证表单元素,即身份认证表单所涉及的HTTP对象——用于用户名和密码信息输入的文本框对象类型与对象名称。在此基础上,可以使用已在目标媒体上申请得到的用户名和密码信息,根据脚本语言Ruby的语法格式,构建并向JSSh服务器发送用于身份认证表单自动填写的JavaScript指令,指示内嵌JSSh服务器的浏览器完成身份认证表单的自动填写。
在基于自然人网络浏览行为模拟,实现身份认证表单自动填写的实现过程中,只需根据不同网络媒体认证表单元素的区别,构建用于认证表单自动填写的JavaScript指令。在指示浏览器完成认证表单自动填写后,身份认证网络交互过程全部由浏览器自行完成。这与通过网络交互重构实现身份认证网站发布信息获取期间,需要针对不同网络媒体重构不同网络交互过程相比,功能实现的复杂度显著降低,技术方案的普适性明显提高。
身份认证表单自动填写登录代码段如下:
(2)身份认证协商与发布信息的获取
在JSSh客户端通过JavaScript指令,指示内嵌JSSh服务器的浏览器完成身份认证表单自动填写与提交后,浏览器转向与Web网站进行身份认证协商,这期间不再需要JSSh客户端继续参与。在浏览器成功完成网络身份认证后,JSSh客户端继续指示JSSh服务器加载身份认证网站发布信息,并进一步通过JavaScript指令操作所加载网页的文档对象,提取网页主体内容与网页内嵌URL信息。内嵌JSSh服务器的浏览器在JSSh客户端的指示下,逐一浏览并导出当前网页内嵌URL所对应的网页主体内容,最终完成身份认证网站发布信息的获取工作。整个流程如图3-15所示。
2.基于自然人网络浏览行为模拟实现动态网页信息获取
采用自然人网络浏览行为模拟技术进行动态网页发布信息获取,首先需要由JSSh客户端通过JavaScript指令,指示内嵌JSSh服务器的浏览器加载动态网页发布信息。在获得网络媒体关于动态网页的响应信息后,浏览器自动完成对动态网页内各类脚本片段的解析工作,获得动态网页所对应的静态网页形态。该阶段不再只是针对具体的脚本语言(如JavaScript)进行动态脚本片段解析,凡是能在通用浏览器中正常浏览的动态网页,其包含的任何脚本片段都可以基于自然人网络浏览行为模拟实现动态脚本解析。
图3-15 基于自然人网络浏览行为模拟实现身份认协商与发布信息获取流程
在此基础上,浏览器进一步通过自身包含的网页排版引擎Gecko,生成静态网页的HTML DOM树。JSSh客户端可以通过JavaScript指令操作静态网页HTML DOM树,逐一导出静态网页及其内嵌URL所对应的发布内容,最终完成动态网页发布信息的获取工作。整个流程如图3-16所示。
在基于自然人网络浏览行为模拟实现动态网页信息获取过程中,动态网页发布内容获取与动态网页脚本片段解析工作全部由浏览器自行完成。JSSh客户端只是通过JavaScript指令指示网络浏览器加载动态网页,并在JSSh服务器告知与所请求的动态网页对应的静态网页形态加载成功后,继续通过JavaScript指令操作当前网页HTML DOM树来获取动态网页发布信息,整体过程与JSSh客户端指示浏览器加载静态网页并无实质区别。
图3-16 基于自然人网络浏览行为模拟实现动态网页发布信息获取流程
代码段如下:
3.利用自然人网络浏览器行为模拟实现网络媒体信息获取的技术优势
与通过网络交互重构实现网络媒体信息获取不同,基于自然人网络浏览行为模拟进行网络媒体信息获取过程中,与身份认证、信息请求相关的网络交互过程,以及与脚本解析、HTML DOM树生成相关的网页处理过程,全都是在JSSh客户端的指示下,由内嵌JSSh服务器的浏览器自行完成。网络媒体信息获取环节不再需要针对不同网络媒体,重复实现网络交互重构机制,有效降低了网络媒体信息获取工作的复杂度,显著提高了网络媒体信息获取机制的普适性。
另一方面,在面对网络交互过程极为复杂,甚至网络交互方式并未对外公开的音/视频信息时,可以基于自然人网络浏览行为模拟实现音/视频内容的自动点播,并对正在播放的音/视频流进行屏幕录像,最终完成音/视频信息的统一获取。在这种情况下,所有能够通过网络浏览器得到的,各种形态、各个类型的互联网信息,都可以采用自然人网络浏览行为模拟技术实现网络媒体信息的获取,这也是本书将这类互联网公开传播信息统称为网络媒体信息的根本原因。