第2章 網(wǎng)絡(luò)信息內(nèi)容的獲取
在以萬維網(wǎng)(WWW)為主要承載平臺(tái)的國(guó)際互聯(lián)網(wǎng)成為與報(bào)紙傳媒、電臺(tái)廣播及電視媒體并重的第4大信息傳播媒體之前,歷史文稿、最新材料等向計(jì)算機(jī)的手動(dòng)錄入是信息分析系統(tǒng)最為主要的數(shù)據(jù)來源。在網(wǎng)絡(luò)媒體信息與網(wǎng)絡(luò)通信信息遍布世界各個(gè)角落的今天,面向海量互聯(lián)網(wǎng)信息實(shí)現(xiàn)全面或有針對(duì)性的內(nèi)容獲取,已經(jīng)成為一個(gè)嶄新的課題呈現(xiàn)在網(wǎng)絡(luò)內(nèi)容分析人員面前。
鑒于此,本章著重探討互聯(lián)網(wǎng)傳播信息的獲取問題。在把互聯(lián)網(wǎng)傳播信息劃分成網(wǎng)絡(luò)媒體信息與網(wǎng)絡(luò)通信信息的基礎(chǔ)上,本章重點(diǎn)介紹網(wǎng)絡(luò)媒體信息的獲取原理與獲取方法,同時(shí)簡(jiǎn)要講解網(wǎng)絡(luò)通信信息獲取方案。
2.1 互聯(lián)網(wǎng)信息類型
受益于國(guó)際互聯(lián)網(wǎng)基礎(chǔ)設(shè)施建設(shè)的長(zhǎng)足發(fā)展,當(dāng)前基于互聯(lián)網(wǎng)實(shí)現(xiàn)信息傳播這一網(wǎng)絡(luò)應(yīng)用已經(jīng)相當(dāng)普及。美國(guó)因特網(wǎng)監(jiān)測(cè)公司調(diào)查數(shù)據(jù)指出,截止到2009年3月世界范圍內(nèi)網(wǎng)站的總數(shù)是224749695個(gè)。2009年1月的《中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示,到2008年底域名注冊(cè)者在中國(guó)境內(nèi)注冊(cè)的網(wǎng)站數(shù)(包括在境內(nèi)接入和境外接入)達(dá)到287.8萬個(gè),網(wǎng)頁(yè)總數(shù)達(dá)到16086370233個(gè),平均每個(gè)網(wǎng)站的網(wǎng)頁(yè)數(shù)是5588個(gè),平均每個(gè)網(wǎng)頁(yè)的字節(jié)數(shù)是28.6KB。
容納著數(shù)以萬TB的信息總量,并且正處于內(nèi)容爆炸性增長(zhǎng)的國(guó)際互聯(lián)網(wǎng),包含了各式各樣、內(nèi)容迥異的信息,但從宏觀角度上來講,互聯(lián)網(wǎng)公開傳播信息可以分為網(wǎng)絡(luò)媒體信息與網(wǎng)絡(luò)通信信息兩大類型。
2.1.1 網(wǎng)絡(luò)媒體信息
網(wǎng)絡(luò)媒體信息是指?jìng)鹘y(tǒng)意義上的互聯(lián)網(wǎng)網(wǎng)站的公開發(fā)布信息,網(wǎng)絡(luò)用戶通?梢曰谕ㄓ镁W(wǎng)絡(luò)瀏覽器(例如,Microsoft公司的Internet Explorer,Netscape公司的Navigator,Mozilla公司的Mozilla Firefox)獲得互聯(lián)網(wǎng)公開發(fā)布的信息。由于本書針對(duì)這類信息擁有統(tǒng)一的信息獲取方法,因此將其統(tǒng)稱為網(wǎng)絡(luò)媒體信息。宏觀意義上的網(wǎng)絡(luò)媒體信息涉及面較廣,可以通過網(wǎng)絡(luò)媒體形態(tài)、發(fā)布信息類型、媒體發(fā)布方式、網(wǎng)頁(yè)具體形態(tài)與信息交互協(xié)議等多種劃分方法進(jìn)一步細(xì)分與區(qū)別網(wǎng)絡(luò)媒體信息的組成。
1.網(wǎng)絡(luò)媒體形態(tài)
根據(jù)網(wǎng)絡(luò)媒體具體形態(tài)的不同,網(wǎng)絡(luò)媒體可以分為廣播式媒體與交互式媒體兩類。其中,傳統(tǒng)的廣播式媒體主要包含新聞網(wǎng)站、論壇(BBS)、博客(Blog)等形態(tài);新興的交互式媒體涵蓋搜索引擎、多媒體(視/音頻)點(diǎn)播、網(wǎng)上交友、網(wǎng)上招聘與電子商務(wù)(網(wǎng)絡(luò)購(gòu)物)等形態(tài)。并且,每種形態(tài)的網(wǎng)絡(luò)媒體都以各自的方式向互聯(lián)網(wǎng)用戶推送其公開發(fā)布信息。
2.發(fā)布信息類型
從公開發(fā)布信息的具體類型上看,網(wǎng)絡(luò)媒體信息可以細(xì)分為文本信息、圖像信息、音頻信息與視頻信息4種類型,其中,網(wǎng)絡(luò)文本信息始終是網(wǎng)絡(luò)媒體信息中占比最大的信息類型。
3.媒體發(fā)布方式
按照網(wǎng)絡(luò)媒體所選擇信息發(fā)布方式的不同,網(wǎng)絡(luò)媒體信息還可以分成可直接匿名瀏覽的公開發(fā)布信息,以及需實(shí)現(xiàn)身份認(rèn)證才可進(jìn)一步點(diǎn)擊閱讀的網(wǎng)絡(luò)媒體發(fā)布信息。
4.網(wǎng)頁(yè)具體形態(tài)
《中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》根據(jù)超鏈接網(wǎng)絡(luò)地址(統(tǒng)一資源定位符,URL)的組成,將網(wǎng)頁(yè)分成URL中不含“?”或輸入?yún)?shù)的靜態(tài)網(wǎng)頁(yè),以及URL中含“?”或輸入?yún)?shù)的動(dòng)態(tài)網(wǎng)頁(yè)兩類。針對(duì)網(wǎng)頁(yè)內(nèi)容的具體構(gòu)成形態(tài),還可以對(duì)網(wǎng)絡(luò)媒體信息中的靜態(tài)網(wǎng)頁(yè)與動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行更加明確地區(qū)分。
網(wǎng)頁(yè)主體內(nèi)容以文本形式,而網(wǎng)頁(yè)內(nèi)嵌鏈接信息以超鏈接網(wǎng)絡(luò)地址格式存在于網(wǎng)頁(yè)源文件中的網(wǎng)頁(yè)屬于靜態(tài)網(wǎng)頁(yè),如圖2-1所示。網(wǎng)頁(yè)主體內(nèi)容或網(wǎng)頁(yè)內(nèi)嵌鏈接信息完全封裝于網(wǎng)頁(yè)源文件中的腳本語(yǔ)言片段內(nèi)的網(wǎng)頁(yè)屬于動(dòng)態(tài)網(wǎng)頁(yè),如圖2-2所示。
圖2-1 靜態(tài)網(wǎng)頁(yè)實(shí)例
圖2-2 動(dòng)態(tài)網(wǎng)頁(yè)實(shí)例
從網(wǎng)頁(yè)內(nèi)容的構(gòu)成形態(tài)不難發(fā)現(xiàn),動(dòng)態(tài)網(wǎng)頁(yè)與靜態(tài)網(wǎng)頁(yè)不同,它是使用傳統(tǒng)的基于HTML標(biāo)記匹配的網(wǎng)頁(yè)解析方法提取網(wǎng)頁(yè)主體內(nèi)容,以及網(wǎng)頁(yè)內(nèi)嵌鏈接所對(duì)應(yīng)的網(wǎng)絡(luò)超鏈接地址。
5.信息交互協(xié)議
按照所使用的信息交互協(xié)議的不同,網(wǎng)絡(luò)媒體信息可以分為HTTP(S)信息、FTP信息、MMS信息、RTSP信息與已經(jīng)不多見的Gopher信息等。其中,MMS信息與RTSP信息屬于視/音頻點(diǎn)播協(xié)議。當(dāng)互聯(lián)網(wǎng)用戶通過網(wǎng)絡(luò)瀏覽器點(diǎn)擊MMS或RTSP協(xié)議信息時(shí),瀏覽器會(huì)通過操作系統(tǒng)調(diào)用該協(xié)議解析所對(duì)應(yīng)的默認(rèn)應(yīng)用程序,實(shí)現(xiàn)互聯(lián)網(wǎng)用戶請(qǐng)求的視/音頻片段播放。
2.1.2 網(wǎng)絡(luò)通信信息
互聯(lián)網(wǎng)用戶使用除網(wǎng)絡(luò)瀏覽器以外的專用客戶端軟件,實(shí)現(xiàn)與特定點(diǎn)的通信或進(jìn)行點(diǎn)對(duì)點(diǎn)通信時(shí)所交互的信息屬于網(wǎng)絡(luò)通信信息。常見的網(wǎng)絡(luò)通信信息包括使用電子郵件客戶端收發(fā)信件時(shí)通過網(wǎng)絡(luò)傳輸?shù)男畔,以及使用即時(shí)聊天工具進(jìn)行點(diǎn)對(duì)點(diǎn)交流時(shí)所傳輸?shù)木W(wǎng)絡(luò)信息。鑒于網(wǎng)絡(luò)通信信息在一定程度上并不屬于網(wǎng)絡(luò)公開發(fā)布信息,本章將只對(duì)這類信息的獲取原理與獲取方法進(jìn)行簡(jiǎn)要探討。
2.2 網(wǎng)絡(luò)媒體信息獲取原理
與面向特定點(diǎn)的網(wǎng)絡(luò)通信信息的獲取范圍不同,網(wǎng)絡(luò)媒體信息的獲取范圍在理論上可以是整個(gè)國(guó)際互聯(lián)網(wǎng)。傳統(tǒng)的網(wǎng)絡(luò)媒體信息的獲取從預(yù)先設(shè)定的、包含一定數(shù)量URL的初始網(wǎng)絡(luò)地址集合出發(fā),獲取初始集合中每個(gè)網(wǎng)絡(luò)地址所對(duì)應(yīng)的發(fā)布內(nèi)容。而網(wǎng)絡(luò)媒體信息的獲取,一方面將初始網(wǎng)絡(luò)地址發(fā)布信息的主體內(nèi)容按照系列內(nèi)容判重機(jī)制,有選擇地存入互聯(lián)網(wǎng)信息庫(kù)。另一方面,進(jìn)一步提取已獲取信息內(nèi)嵌的超鏈接網(wǎng)絡(luò)地址,并將所有超鏈接網(wǎng)絡(luò)地址置入待獲取地址隊(duì)列,以“先入先出”方式逐一提取隊(duì)列中的每一個(gè)網(wǎng)絡(luò)地址發(fā)布的信息。網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)循環(huán)開展待獲取隊(duì)列中的網(wǎng)絡(luò)地址發(fā)布信息獲取、已獲取信息主體內(nèi)容提取、判重與信息存儲(chǔ),以及已獲取信息內(nèi)嵌網(wǎng)絡(luò)地址提取并存入待獲取地址隊(duì)列操作,直至遍布所需的互連網(wǎng)絡(luò)范圍。
2.2.1 網(wǎng)絡(luò)媒體信息獲取理想流程
理想的網(wǎng)絡(luò)媒體信息獲取流程主要由初始URL集合——信息“種子”集合、等待獲取的URL隊(duì)列、信息獲取模塊、信息解析模塊、信息判重模塊與互聯(lián)網(wǎng)信息庫(kù)共同組成,如圖2-3所示。
圖2-3 網(wǎng)絡(luò)媒體信息獲取理想流程
1.初始URL集合
初始URL集合概念最初由搜索引擎研究人員提出,商用搜索引擎為了使自身?yè)碛械男畔⒊浞指采w整個(gè)國(guó)際互聯(lián)網(wǎng),需要維護(hù)包含相當(dāng)數(shù)量網(wǎng)絡(luò)地址的初始URL集合。搜索引擎跟隨初始URL集合發(fā)布頁(yè)面上的網(wǎng)絡(luò)鏈接進(jìn)入第一級(jí)網(wǎng)頁(yè),并進(jìn)一步跟隨第一級(jí)網(wǎng)頁(yè)內(nèi)嵌鏈接進(jìn)入第二級(jí)網(wǎng)頁(yè),最終形成周而復(fù)始的跟隨網(wǎng)頁(yè)內(nèi)嵌地址的遞歸操作,從而完成所有網(wǎng)頁(yè)發(fā)布信息的獲取工作。因此,初始URL集合通常被形象地稱為信息“種子”集合,如圖2-4所示。
圖2-4 跟隨網(wǎng)頁(yè)內(nèi)嵌鏈接逐級(jí)遞歸遍歷互聯(lián)網(wǎng)絡(luò)
從理論上講,只要維護(hù)包含足夠數(shù)量網(wǎng)絡(luò)地址的初始URL集合,搜索引擎即可遍歷整個(gè)國(guó)際互聯(lián)網(wǎng)(通常還需要網(wǎng)站主動(dòng)向搜索引擎提供網(wǎng)站地圖Sitemap)。源于搜索引擎應(yīng)用研究的網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié),同樣需要根據(jù)后續(xù)網(wǎng)絡(luò)媒體信息分析環(huán)節(jié)所關(guān)注的互聯(lián)網(wǎng)絡(luò)范圍,事先維護(hù)包含一定數(shù)量網(wǎng)絡(luò)地址的初始URL集合,作為信息獲取操作的起點(diǎn)。
2.信息獲取
信息獲取模塊先根據(jù)來自初始網(wǎng)絡(luò)地址集合或URL隊(duì)列中的每條網(wǎng)絡(luò)地址信息,確定待獲取內(nèi)容所采用的信息發(fā)布協(xié)議。在完成待獲取內(nèi)容協(xié)議解析操作后,信息獲取模塊將基于特定通信協(xié)議所定義的網(wǎng)絡(luò)交互機(jī)制,向信息發(fā)布網(wǎng)站請(qǐng)求所需內(nèi)容,并接收來自網(wǎng)站的響應(yīng)信息,將它們傳遞給后續(xù)的信息解析模塊;贖TTP協(xié)議發(fā)布的文本信息獲取范例如圖2-5所示,對(duì)于HTTP信息網(wǎng)絡(luò)交互過程細(xì)節(jié)可查閱協(xié)議規(guī)范——Hypertext Transfer Protocol-HTTP/1.1,RFC 2616,June1999。
圖2-5 HTTP文本信息獲取范例
在理論原理層面上,立足于開放系統(tǒng)互連參考模型(OSI/RM)的傳輸層,可以通過重構(gòu)各類通信協(xié)議(例如HTTP和FTP等)所定義的網(wǎng)絡(luò)交互過程,實(shí)現(xiàn)基于不同通信協(xié)議的發(fā)布內(nèi)容獲取。隨著互聯(lián)網(wǎng)中文本、圖像信息發(fā)布形態(tài)的不斷推陳出新(人機(jī)交互式信息發(fā)布形態(tài)的出現(xiàn)直接導(dǎo)致文本、圖像信息請(qǐng)求網(wǎng)絡(luò)通信過程愈加復(fù)雜),視/音頻發(fā)布內(nèi)容的層出不窮(視/音頻信息網(wǎng)絡(luò)交互過程重構(gòu)困難,部分視/音頻網(wǎng)絡(luò)通信協(xié)議交互細(xì)節(jié)并未公開),純粹依賴于各類協(xié)議的網(wǎng)絡(luò)通信交互過程重構(gòu),實(shí)現(xiàn)信息內(nèi)容獲取的操作復(fù)雜度和網(wǎng)絡(luò)交互重構(gòu)難度呈指數(shù)級(jí)增長(zhǎng)。
因此,當(dāng)前關(guān)于信息獲取的研究正在逐步轉(zhuǎn)向在應(yīng)用層利用開源瀏覽器部分組件,甚至整個(gè)開源瀏覽器實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息內(nèi)容的主動(dòng)獲取,其相關(guān)內(nèi)容將在本章“網(wǎng)絡(luò)媒體信息獲取方法”一節(jié)中做進(jìn)一步講解。
3.信息解析
在信息獲取模塊獲得網(wǎng)絡(luò)媒體響應(yīng)信息后,信息解析模塊的核心工作是根據(jù)不同通信協(xié)議的具體定義,從網(wǎng)絡(luò)響應(yīng)信息相應(yīng)位置提取發(fā)布信息的主體內(nèi)容。為了便于開展信息采集與否判斷,信息解析模塊通常還將按照信息判重的要求,進(jìn)一步維護(hù)與網(wǎng)絡(luò)內(nèi)容發(fā)布緊密相關(guān)的關(guān)鍵信息字段,例如信息來源、信息標(biāo)題,以及在網(wǎng)絡(luò)響應(yīng)信息頭部可能存在的信息失效時(shí)間(Expires)或信息最近修改時(shí)間(Last-Modified)等。信息解析模塊會(huì)把提取到的內(nèi)容直接交給信息判重模塊,在通過必要的重復(fù)內(nèi)容檢查后,網(wǎng)絡(luò)媒體發(fā)布信息的主體內(nèi)容及其對(duì)應(yīng)的關(guān)鍵字段將被存入互聯(lián)網(wǎng)信息庫(kù)。
為了實(shí)現(xiàn)跟隨網(wǎng)頁(yè)內(nèi)嵌鏈接遞歸遍歷所關(guān)注的網(wǎng)絡(luò)范圍這一技術(shù)需求,對(duì)于響應(yīng)信息類型(Content-Type)是text/*的HTTP文本信息,信息解析模塊在完成響應(yīng)信息主體內(nèi)容及關(guān)鍵信息字段提取的同時(shí),還需要進(jìn)一步開展HTTP文本信息內(nèi)嵌URL的提取操作。信息解析模塊實(shí)現(xiàn)HTTP文本信息內(nèi)嵌URL提取的理論依據(jù),是HTML語(yǔ)言關(guān)于網(wǎng)絡(luò)超文本鏈接(Hyper Text Link)標(biāo)記的系列定義。信息解析模塊一般通過遍歷HTTP文本信息全文,查找網(wǎng)絡(luò)超文本鏈接標(biāo)記的方法,實(shí)現(xiàn)HTTP文本信息內(nèi)嵌URL的提取。當(dāng)前信息解析模塊還可以先面向HTTP文本信息構(gòu)建文檔對(duì)象模型(Document Object Module,DOM)樹,并從HTML DOM樹的相應(yīng)結(jié)點(diǎn)獲取HTTP文本內(nèi)嵌URL信息,本章隨后一節(jié)將進(jìn)行關(guān)于HTML DOM樹的詳細(xì)介紹。
4.信息判重
在網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié),信息判重模塊主要基于網(wǎng)絡(luò)媒體信息URL與內(nèi)容摘要兩大元素,實(shí)現(xiàn)信息采集/存儲(chǔ)的與否判斷。其中,URL判重通常是在信息采集操作啟動(dòng)前進(jìn)行,而內(nèi)容摘要判重則是在采集信息存儲(chǔ)時(shí)發(fā)揮作用。
來自HTTP文本信息的內(nèi)嵌URL信息,首先通過URL判重操作確定每個(gè)內(nèi)嵌URL是否已經(jīng)實(shí)現(xiàn)信息獲取。對(duì)于尚未實(shí)現(xiàn)發(fā)布內(nèi)容采集的全新URL,信息獲取模塊將會(huì)啟動(dòng)完整的信息采集流程。對(duì)于已經(jīng)實(shí)現(xiàn)內(nèi)容采集,同時(shí)注明信息失效時(shí)間及最近修改時(shí)間的URL(URL信息失效時(shí)間及最近修改時(shí)間已由信息解析模塊從網(wǎng)絡(luò)響應(yīng)信息中提取得到,并存于互聯(lián)網(wǎng)信息庫(kù)中),信息采集模塊將會(huì)向?qū)?yīng)的網(wǎng)絡(luò)內(nèi)容發(fā)布媒體發(fā)起信息查新獲取操作。此時(shí),信息采集模塊只會(huì)對(duì)于已經(jīng)失效或者已被重新修改的網(wǎng)絡(luò)內(nèi)容重新啟動(dòng)完整的信息采集操作。信息采集模塊通常被要求重新采集已經(jīng)實(shí)現(xiàn)信息獲取,但未注明信息失效時(shí)間及最近修改時(shí)間的URL所對(duì)應(yīng)的發(fā)布內(nèi)容。
在面向沒有提供發(fā)布信息失效時(shí)間及最近修改時(shí)間的網(wǎng)絡(luò)媒體(網(wǎng)絡(luò)通信協(xié)議并未強(qiáng)制要求響應(yīng)信息必須提供信息失效時(shí)間及最近修改時(shí)間)時(shí),僅依靠URL判重機(jī)制,是無法避免同一內(nèi)容被重復(fù)獲取的。因此在獲取信息存儲(chǔ)前,需要進(jìn)一步引入內(nèi)容摘要判重機(jī)制。網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)可以基于MD5算法,逐一維護(hù)已采集信息的內(nèi)容摘要,杜絕相同內(nèi)容重復(fù)存儲(chǔ)的現(xiàn)象。
2.2.2 網(wǎng)絡(luò)媒體信息獲取的分類
按照信息獲取行為所涉及的網(wǎng)絡(luò)范圍劃分,網(wǎng)絡(luò)媒體信息獲取可以分為面向整個(gè)國(guó)際互聯(lián)網(wǎng)的全網(wǎng)信息獲取,以及針對(duì)某些具體網(wǎng)絡(luò)區(qū)域的定點(diǎn)信息獲取。按照信息獲取行為在工作范圍內(nèi)所關(guān)注的對(duì)象劃分,網(wǎng)絡(luò)媒體信息獲取還可以分為針對(duì)工作范圍內(nèi)所有發(fā)布信息的面向全部?jī)?nèi)容的信息獲取,以及僅關(guān)注工作網(wǎng)絡(luò)范圍內(nèi)某些熱門話題的基于具體主題的信息獲取。本節(jié)重點(diǎn)介紹全網(wǎng)信息獲取與定點(diǎn)信息獲取在技術(shù)要求與實(shí)現(xiàn)方法方面的區(qū)別,并進(jìn)一步講解基于主題的信息獲取方法,以及該領(lǐng)域代表性技術(shù)——元搜索。
1.全網(wǎng)信息獲取
全網(wǎng)信息獲取工作范圍涉及整個(gè)國(guó)際互聯(lián)網(wǎng)內(nèi)所有網(wǎng)絡(luò)媒體發(fā)布信息,主要應(yīng)用于搜索引擎(Search Engine),例如Google、Baidu或Yahoo等,和大型內(nèi)容服務(wù)提供商(Content Service Provider)的信息獲取。隨著網(wǎng)絡(luò)新型媒體的不斷出現(xiàn)、網(wǎng)絡(luò)信息發(fā)布形式的更新?lián)Q代,純粹通過跟隨網(wǎng)絡(luò)鏈接已經(jīng)很難達(dá)到遍歷整個(gè)互聯(lián)網(wǎng)的效果。因此,全網(wǎng)信息獲取發(fā)起方在不斷更新、擴(kuò)展用于信息獲取的初始URL集合的同時(shí),還建議新接入互聯(lián)網(wǎng)的網(wǎng)絡(luò)媒體主動(dòng)向信息獲取方提交自身網(wǎng)站地圖(SiteMap)。這有利于全網(wǎng)信息獲取機(jī)制面向新網(wǎng)絡(luò)媒體實(shí)現(xiàn)發(fā)布內(nèi)容采集,從而保證其盡可能全面地覆蓋整個(gè)國(guó)際互聯(lián)網(wǎng)。
正如前文所述,整個(gè)國(guó)際互聯(lián)網(wǎng)信息總量非常龐大,考慮到本地用于信息采集的存儲(chǔ)空間有限,全網(wǎng)信息獲取發(fā)起方實(shí)際上并沒有把所有網(wǎng)絡(luò)媒體信息都采集到本地。搜索引擎或大型內(nèi)容服務(wù)提供商在進(jìn)行全網(wǎng)信息獲取時(shí),通;谔囟ǖ挠(jì)算方法(例如Google的PageRank算法)對(duì)每條網(wǎng)絡(luò)信息進(jìn)行評(píng)判,只是獲取或長(zhǎng)時(shí)間保存在信息評(píng)判系統(tǒng)中排名靠前的網(wǎng)絡(luò)信息,例如鏈接引用率較高的網(wǎng)絡(luò)媒體發(fā)布內(nèi)容。另一方面,由于工作對(duì)象遍布整個(gè)國(guó)際互聯(lián)網(wǎng),單次全網(wǎng)信息獲取一般需要數(shù)周乃至數(shù)月的時(shí)間。因此在面對(duì)信息更新相對(duì)頻繁的網(wǎng)絡(luò)媒體(如論壇或博客)時(shí),全網(wǎng)信息獲取機(jī)制的內(nèi)容失效率相對(duì)較高,其對(duì)于每個(gè)網(wǎng)絡(luò)媒體發(fā)布內(nèi)容獲取的時(shí)效性無法實(shí)現(xiàn)統(tǒng)一保證。盡管如此,全網(wǎng)信息獲取作為搜索引擎與內(nèi)容服務(wù)提供商不可或缺的信息獲取機(jī)制,依然在網(wǎng)絡(luò)信息應(yīng)用中起到極為關(guān)鍵的作用。
2.定點(diǎn)信息獲取
由于全網(wǎng)信息獲取不僅對(duì)于內(nèi)容存儲(chǔ)空間要求過高,而且無法保證網(wǎng)絡(luò)媒體發(fā)布內(nèi)容獲取的時(shí)效性,因此在網(wǎng)絡(luò)媒體信息獲取只是重點(diǎn)關(guān)注某些特定的網(wǎng)絡(luò)區(qū)域,并且向信息獲取機(jī)制相對(duì)于媒體內(nèi)容發(fā)布的網(wǎng)絡(luò)時(shí)延提出較高要求時(shí),定點(diǎn)信息獲取的概念應(yīng)運(yùn)而生。
定點(diǎn)信息獲取的工作范圍限制在服務(wù)于信息獲取的初始URL集合中每個(gè)URL所屬的網(wǎng)絡(luò)目錄內(nèi),深入獲取每個(gè)初始URL所屬的網(wǎng)絡(luò)目錄及其下子目錄中包含的網(wǎng)絡(luò)發(fā)布內(nèi)容,不再向初始URL所屬網(wǎng)絡(luò)目錄的上級(jí)目錄,乃至整個(gè)互聯(lián)網(wǎng)擴(kuò)散信息獲取行為。如果說全網(wǎng)信息獲取關(guān)注的是信息獲取操作的全面性,即信息獲取在整個(gè)互聯(lián)網(wǎng)中的覆蓋情況,定點(diǎn)信息獲取機(jī)制則更加重視在限定的網(wǎng)域范圍內(nèi),進(jìn)行深入的網(wǎng)絡(luò)媒體發(fā)布內(nèi)容獲取,同時(shí)有效保證獲取信息的時(shí)效性。
定點(diǎn)信息獲取正是通過周期性地遍歷每個(gè)初始URL所屬的網(wǎng)絡(luò)目錄,達(dá)到在初始URL設(shè)定的網(wǎng)域范圍內(nèi)深入獲取網(wǎng)絡(luò)發(fā)布內(nèi)容的技術(shù)需求。與此同時(shí),周期性遍歷初始URL所屬網(wǎng)絡(luò)目錄的時(shí)間間隔,是定點(diǎn)信息獲取用于確保內(nèi)容采集時(shí)效性的關(guān)鍵參數(shù)。合理設(shè)定周期輪詢、查新獲取初始URL所屬網(wǎng)絡(luò)目錄的時(shí)間間隔,可以確保定點(diǎn)信息獲取機(jī)制不至于錯(cuò)失目標(biāo)網(wǎng)絡(luò)媒體不斷更新的發(fā)布內(nèi)容,并且防止信息獲取機(jī)制過分增加目標(biāo)媒體的工作負(fù)載。
3.基于主題的信息獲取與元搜索
由于在整個(gè)國(guó)際互聯(lián)網(wǎng)或限定的網(wǎng)域范圍內(nèi),全面獲取所有網(wǎng)絡(luò)媒體發(fā)布內(nèi)容可能造成本地存儲(chǔ)信息泛濫,因此在所關(guān)注的網(wǎng)絡(luò)范圍內(nèi)只面向某些特定話題進(jìn)行基于主題的信息獲取,是在面向全部?jī)?nèi)容的信息獲取以外另一個(gè)行之有效的信息獲取機(jī)制。顧名思義,基于主題的信息獲取只把與預(yù)設(shè)主題相符的內(nèi)容采集到本地,并在信息獲取過程中增加了內(nèi)容識(shí)別環(huán)節(jié),可以只是簡(jiǎn)單的主題詞匯匹配,也可以面向發(fā)布內(nèi)容進(jìn)行基于主題的模式識(shí)別,從而在關(guān)注的網(wǎng)絡(luò)范圍內(nèi)有選擇地獲取網(wǎng)絡(luò)媒體發(fā)布內(nèi)容。相對(duì)于面向全部?jī)?nèi)容的信息獲取,基于主題的信息獲取機(jī)制正是通過有效減少需要采集的內(nèi)容總量,進(jìn)一步降低已采集內(nèi)容的失效率,同時(shí)顯著減少服務(wù)于信息采集的內(nèi)容存儲(chǔ)空間。
伴隨搜索引擎應(yīng)用的不斷深入,在搜索引擎的協(xié)助下進(jìn)行基于主題的信息獲取技術(shù)——元搜索技術(shù),得到了越來越多的應(yīng)用。元搜索屬于特殊的基于主題的信息獲取,它將主題描述詞傳遞給搜索引擎進(jìn)行信息檢索,并把搜索引擎針對(duì)主題描述詞的信息檢索結(jié)果作為基于主題信息獲取的返回內(nèi)容。
元搜索技術(shù)得以實(shí)現(xiàn)的關(guān)鍵原因是,每個(gè)搜索引擎在為輸入詞目構(gòu)造信息檢索URL時(shí)是有規(guī)律可循的。以中/英文信息檢索詞目為例,常用搜索引擎是把英文詞目原本內(nèi)容,或中文詞目所對(duì)應(yīng)的漢字編碼作為信息檢索URL的參數(shù)輸入。例如,Baidu是選擇中文詞目的GB編碼作為信息檢索URL參數(shù)。除輸入?yún)?shù)不同以外,用于相同搜索引擎的信息檢索URL的其余部分完全相同,如圖2-6所示。
圖2-6 搜索引擎信息檢索URL構(gòu)造范例
元搜索技術(shù)正是通過在不同搜索引擎的網(wǎng)絡(luò)交互過程中,根據(jù)每個(gè)搜索引擎的具體要求構(gòu)造主題描述詞信息檢索URL,向搜索引擎發(fā)起信息檢索請(qǐng)求。元搜索技術(shù)利用搜索引擎進(jìn)行基于主題的信息獲取操作,它把搜索引擎關(guān)于主題描述詞的信息檢索結(jié)果作為信息獲取對(duì)象,從而實(shí)現(xiàn)面向特定主題的網(wǎng)絡(luò)發(fā)布內(nèi)容獲取。
2.2.3 網(wǎng)絡(luò)媒體信息獲取的技術(shù)難點(diǎn)
在網(wǎng)絡(luò)媒體信息獲取功能實(shí)現(xiàn)過程中,無論是全網(wǎng)信息獲取,還是定點(diǎn)信息獲取,都存在相當(dāng)程度的技術(shù)應(yīng)用實(shí)現(xiàn)難度。另外,元搜索作為特殊的基于主題的信息獲取,其在信息獲取結(jié)果排序方面仍然存在尚未完全解決的技術(shù)難點(diǎn)。
首先,網(wǎng)絡(luò)媒體信息獲取的工作對(duì)象是信息形態(tài)各異、信息類型多樣的互聯(lián)網(wǎng)媒體。在信息總量迅速膨脹的互聯(lián)網(wǎng)信息面前,網(wǎng)絡(luò)媒體信息獲取機(jī)制通常需要在獲取內(nèi)容的全面性和時(shí)效性之間做出取舍。與此同時(shí),在面對(duì)完全異構(gòu)的網(wǎng)絡(luò)媒體發(fā)布信息時(shí),信息獲取技術(shù)需要在各類不同的網(wǎng)絡(luò)媒體間普遍適用,這又為網(wǎng)絡(luò)媒體信息獲取功能提出了更高的技術(shù)要求。當(dāng)前網(wǎng)絡(luò)媒體信息獲取機(jī)制在保留傳統(tǒng)的基于網(wǎng)絡(luò)交互過程重構(gòu)機(jī)制實(shí)現(xiàn)信息獲取的基礎(chǔ)上,逐步轉(zhuǎn)向在信息獲取過程中集成開源瀏覽器部分組件甚至整體,用于提高技術(shù)功能能級(jí)、降低技術(shù)實(shí)現(xiàn)難度,至于相關(guān)內(nèi)容將在本章后續(xù)部分予以詳細(xì)介紹。
其次,由于部分網(wǎng)絡(luò)媒體選擇屏蔽過于頻繁的、來自相同客戶端的信息獲取操作,因此定點(diǎn)信息獲取技術(shù)實(shí)現(xiàn)的難點(diǎn)還包括在周期性地遍歷設(shè)定網(wǎng)域發(fā)布內(nèi)容,確保定點(diǎn)信息獲取的深入性與時(shí)效性的基礎(chǔ)上,有效回避目標(biāo)媒體對(duì)于所謂“惡意”信息獲取行為的封禁。要解決這一技術(shù)難點(diǎn),一方面可以通過適當(dāng)選擇周期遍歷時(shí)間間隔,防止信息獲取行為造成網(wǎng)絡(luò)媒體負(fù)載過重;另一方面則涉及定期修改用于內(nèi)容獲取的網(wǎng)絡(luò)客戶端信息請(qǐng)求內(nèi)容(內(nèi)容協(xié)商行為),以避免遭遇目標(biāo)網(wǎng)絡(luò)媒體的拒絕服務(wù)。
最后,元搜索在通過搜索引擎實(shí)現(xiàn)基于主題的信息獲取過程中,可以選擇向多個(gè)搜索引擎串/并行發(fā)送信息檢索請(qǐng)求,擴(kuò)大元搜索技術(shù)的網(wǎng)絡(luò)覆蓋面。正是由于這一應(yīng)用需求,對(duì)不同主題選擇恰當(dāng)?shù)乃阉饕,同時(shí)基于合適的主題相關(guān)度判斷法則,對(duì)來自不同搜索引擎的信息檢索結(jié)果實(shí)現(xiàn)基于主題的相關(guān)度排序,正是當(dāng)前元搜索技術(shù)研究的難點(diǎn)所在。
2.3 網(wǎng)絡(luò)媒體信息獲取方法
在完成關(guān)于網(wǎng)絡(luò)媒體信息獲取技術(shù)的一般性原理描述后,本節(jié)轉(zhuǎn)而介紹針對(duì)各類網(wǎng)絡(luò)媒體的發(fā)布信息獲取方法。按信息發(fā)布方式分類,網(wǎng)絡(luò)媒體信息可分成直接匿名瀏覽信息與需身份認(rèn)證網(wǎng)絡(luò)媒體發(fā)布信息兩類;按網(wǎng)頁(yè)具體形態(tài)分類,網(wǎng)絡(luò)媒體信息又可分成靜態(tài)網(wǎng)頁(yè)與動(dòng)態(tài)網(wǎng)頁(yè)兩類,本節(jié)首先介紹采用網(wǎng)絡(luò)交互過程重構(gòu)機(jī)制,實(shí)現(xiàn)需要身份認(rèn)證的靜態(tài)網(wǎng)頁(yè)發(fā)布信息獲取方法。
在此基礎(chǔ)上,本節(jié)進(jìn)一步介紹基于開源瀏覽器腳本解析組件,實(shí)現(xiàn)內(nèi)嵌腳本語(yǔ)言片段的動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息獲取方法。最后重點(diǎn)介紹基于瀏覽器模擬技術(shù),實(shí)現(xiàn)形態(tài)各異、類型各異的網(wǎng)絡(luò)媒體發(fā)布信息獲取。
2.3.1 需身份認(rèn)證靜態(tài)媒體發(fā)布信息獲取
隨著網(wǎng)絡(luò)社區(qū)概念及個(gè)性化信息概念的不斷普及,當(dāng)前多數(shù)網(wǎng)絡(luò)媒體首先需要身份認(rèn)證,才可進(jìn)行正常的內(nèi)容訪問。對(duì)于正在進(jìn)行網(wǎng)絡(luò)瀏覽的用戶而言,身份過程是相對(duì)簡(jiǎn)單的;ヂ(lián)網(wǎng)用戶只需要根據(jù)網(wǎng)絡(luò)內(nèi)容發(fā)布者的提示,在身份認(rèn)證網(wǎng)頁(yè)上填寫正確的用戶名、密碼信息,進(jìn)行必要的圖靈測(cè)試(正確輸入以圖像信息顯示的身份認(rèn)證驗(yàn)證碼內(nèi)容),并提交所有信息,就能成功完成身份認(rèn)證。盡管如此,對(duì)于通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)信息獲取的計(jì)算機(jī)而言,增加身份認(rèn)證過程將直接導(dǎo)致用于信息獲取的網(wǎng)絡(luò)通信過程模擬變得更加復(fù)雜。在此重點(diǎn)探討基于網(wǎng)絡(luò)交互重構(gòu)機(jī)制,面向需要身份認(rèn)證的對(duì)外發(fā)布的網(wǎng)頁(yè)形態(tài)(都屬于靜態(tài)網(wǎng)頁(yè)范疇的靜態(tài)網(wǎng)絡(luò)媒體),實(shí)現(xiàn)發(fā)布內(nèi)容提取的具體方法。
在基于網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)信息獲取的過程中,如果網(wǎng)絡(luò)媒體要求身份認(rèn)證,信息獲取環(huán)節(jié)就需要在原有的信息請(qǐng)求過程重構(gòu)前,首先模擬基于HTTP協(xié)議的網(wǎng)絡(luò)身份認(rèn)證過程,這是由于面向網(wǎng)絡(luò)媒體的身份認(rèn)證通;贖TTP協(xié)議;诰W(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)身份認(rèn)證信息獲取主要涉及用于表明身份認(rèn)證成功的Cookie信息獲得,以及攜帶相關(guān)Cookie信息進(jìn)一步向網(wǎng)絡(luò)媒體請(qǐng)求發(fā)布內(nèi)容兩個(gè)獨(dú)立環(huán)節(jié)。
(1)基于Cookie機(jī)制實(shí)現(xiàn)身份認(rèn)證
Cookie機(jī)制用于同一互聯(lián)網(wǎng)客戶端在不同時(shí)刻訪問相同網(wǎng)絡(luò)媒體時(shí),客戶端信息的恢復(fù)與繼承。HTTP/1.1針對(duì)Cookie機(jī)制定義了兩類報(bào)頭選項(xiàng)(Header Fields),分別是Set-Cookie選項(xiàng)和Cookie選項(xiàng)。其中,Cookie選項(xiàng)存在于互聯(lián)網(wǎng)客戶端發(fā)送的請(qǐng)求信息中,而Set-Cookie選項(xiàng)則出現(xiàn)在網(wǎng)絡(luò)媒體響應(yīng)信息的頭部。
在互聯(lián)網(wǎng)客戶端向網(wǎng)絡(luò)媒體發(fā)送信息請(qǐng)求,尤其是個(gè)性化(自定義)的信息請(qǐng)求時(shí),網(wǎng)絡(luò)媒體響應(yīng)信息頭部通常會(huì)包含Set-Cookie選項(xiàng),返回記錄在網(wǎng)絡(luò)媒體端的互聯(lián)網(wǎng)用戶身份信息。在獲得網(wǎng)絡(luò)媒體響應(yīng)信息后,互聯(lián)網(wǎng)客戶端在提取響應(yīng)信息主體內(nèi)容的同時(shí),還會(huì)將響應(yīng)信息中的Set-Cookie選項(xiàng)內(nèi)容存入本地Cookie信息記錄文件。當(dāng)互聯(lián)網(wǎng)客戶端再次向相同的網(wǎng)絡(luò)媒體發(fā)送信息請(qǐng)求時(shí),請(qǐng)求信息就會(huì)包含Cookie選項(xiàng),若Cookie選項(xiàng)內(nèi)容與先前的Set-Cookie選項(xiàng)內(nèi)容一致,則互聯(lián)網(wǎng)客戶端在網(wǎng)絡(luò)媒體端保留的身份信息就會(huì)得以繼承,網(wǎng)絡(luò)媒體會(huì)自動(dòng)根據(jù)先前的用戶自定義信息返回相應(yīng)的響應(yīng)內(nèi)容,如圖2-7所示。
圖2-7 基于Cookie機(jī)制的HTTP信息交互過程
利用Cookie機(jī)制實(shí)現(xiàn)身份認(rèn)證,就是在互聯(lián)網(wǎng)客戶端面向需身份認(rèn)證網(wǎng)絡(luò)媒體認(rèn)證成功后,網(wǎng)絡(luò)媒體向客戶端返回記錄在媒體端的用戶信息,即用于表明身份認(rèn)證成功的Cookie信息。只要客戶端在隨后的發(fā)布信息請(qǐng)求中攜帶表明認(rèn)證成功的Cookie信息,網(wǎng)絡(luò)媒體就會(huì)向客戶端返回需要身份認(rèn)證才可訪問的網(wǎng)絡(luò)發(fā)布內(nèi)容。對(duì)于沒有攜帶表明認(rèn)證成功Cookie的客戶端請(qǐng)求,網(wǎng)絡(luò)媒體則返回身份認(rèn)證失敗信息,并要求用戶進(jìn)行身份認(rèn)證,如圖2-8所示。
圖2-8 基于Cookie機(jī)制實(shí)現(xiàn)需身份認(rèn)證才可訪問信息請(qǐng)求
(2)基于網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)信息獲取
基于網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)媒體信息獲取是指立足于真實(shí)的網(wǎng)絡(luò)通信過程,通過網(wǎng)絡(luò)編程順序模擬網(wǎng)絡(luò)媒體信息請(qǐng)求過程的各個(gè)環(huán)節(jié),最終實(shí)現(xiàn)網(wǎng)絡(luò)媒體發(fā)布信息獲取。在面對(duì)需身份認(rèn)證才可瀏覽的靜態(tài)媒體進(jìn)行發(fā)布信息獲取時(shí),網(wǎng)絡(luò)身份認(rèn)證過程與靜態(tài)媒體所含網(wǎng)頁(yè)及其內(nèi)嵌URL發(fā)布信息請(qǐng)求過程,都需要進(jìn)行正確的網(wǎng)絡(luò)交互過程模擬,才能達(dá)到獲取靜態(tài)媒體發(fā)布信息的最終目標(biāo)。
在基于網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)媒體信息獲取過程中,媒體信息獲取環(huán)節(jié)是通過響應(yīng)信息返回碼判斷信息獲取請(qǐng)求是否成功的。一般而言,HTTP/1.X 20X(例如HTTP/1.1 200OK)標(biāo)志著信息請(qǐng)求成功,HTTP/1.X 40X標(biāo)志著信息請(qǐng)求失敗,而HTTP/1.X 401則標(biāo)志著在信息請(qǐng)求過程中身份認(rèn)證失敗,此時(shí)網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)需要智能地進(jìn)行身份認(rèn)證過程模擬,如圖2-9所示。
當(dāng)針對(duì)首次信息請(qǐng)求的響應(yīng)返回碼是401時(shí),媒體信息獲取環(huán)節(jié)首先判斷內(nèi)容發(fā)布媒體身份認(rèn)證過程是否需要圖靈檢測(cè)。所謂圖靈檢測(cè)是指目前在網(wǎng)絡(luò)媒體身份認(rèn)證過程中普遍使用的高噪聲數(shù)字/字母圖像,在互聯(lián)網(wǎng)客戶端填寫用戶名/密碼信息時(shí),必須同時(shí)辨識(shí)數(shù)字/字母信息,并與用戶名/密碼信息一同提交,才可以通過身份認(rèn)證。用于網(wǎng)絡(luò)媒體信息獲取的用戶名/密碼信息,可以事先在目標(biāo)媒體上手動(dòng)申請(qǐng)得到,并針對(duì)不同網(wǎng)絡(luò)媒體維護(hù)用戶名/密碼庫(kù)。關(guān)于圖靈檢測(cè),即用于身份認(rèn)證的驗(yàn)證碼機(jī)器識(shí)別相關(guān)內(nèi)容,讀者可以自行查閱本書關(guān)于圖像信息處理的相關(guān)章節(jié)。
需要特別說明的是,在基于網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)靜態(tài)媒體發(fā)布信息獲取過程中,網(wǎng)絡(luò)編程模擬信息請(qǐng)求過程,理論上可以通過充分了解相關(guān)通信協(xié)議的具體交互過程予以實(shí)現(xiàn)。但是考慮到每個(gè)網(wǎng)絡(luò)媒體身份認(rèn)證過程不盡相同,并且針對(duì)不同網(wǎng)絡(luò)媒體發(fā)布信息的請(qǐng)求數(shù)據(jù)包內(nèi)容組成各異,完全基于理論進(jìn)行通信協(xié)議數(shù)據(jù)交互過程模擬在網(wǎng)絡(luò)交互數(shù)據(jù)包重組與分析環(huán)節(jié)存在諸多難點(diǎn)。
圖2-9 網(wǎng)絡(luò)媒體信息獲取身份認(rèn)證模擬
這時(shí)可以在常見的局域網(wǎng)偵聽工具協(xié)助下,手動(dòng)完成身份認(rèn)證請(qǐng)求與靜態(tài)網(wǎng)頁(yè)信息瀏覽全過程,并從偵聽工具中獲得身份認(rèn)證請(qǐng)求數(shù)據(jù)包、網(wǎng)絡(luò)媒體響應(yīng)數(shù)據(jù)包,以及靜態(tài)網(wǎng)頁(yè)信息請(qǐng)求數(shù)據(jù)包的具體構(gòu)成,如圖2-10所示。
圖2-10 基于局域網(wǎng)偵聽工具了解網(wǎng)絡(luò)交互數(shù)據(jù)包組成
在此基礎(chǔ)上編程模擬網(wǎng)絡(luò)交互過程時(shí),可以直接按照信息請(qǐng)求數(shù)據(jù)包的實(shí)際組成,構(gòu)造身份認(rèn)證及網(wǎng)頁(yè)信息請(qǐng)求數(shù)據(jù)包(攜帶表明認(rèn)證成功的Cookie),并在面向身份認(rèn)證請(qǐng)求的響應(yīng)數(shù)據(jù)包相應(yīng)位置提取表明身份認(rèn)證成功的Cookie信息,例如Set-Cookie選項(xiàng)內(nèi)容。在完全掌握真實(shí)網(wǎng)絡(luò)通信過程的前提下進(jìn)行網(wǎng)絡(luò)交互重構(gòu),能夠有效降低網(wǎng)絡(luò)通信數(shù)據(jù)包的重組與分析,以及編程重構(gòu)網(wǎng)絡(luò)交互過程的工作復(fù)雜度。
通過網(wǎng)絡(luò)交互重構(gòu)獲取到靜態(tài)網(wǎng)絡(luò)媒體起始網(wǎng)頁(yè)發(fā)布信息后,可以采用傳統(tǒng)的基于HTML標(biāo)記匹配的網(wǎng)頁(yè)解析方法,提取網(wǎng)頁(yè)主體內(nèi)容及其內(nèi)嵌URL信息。例如,可以從“
與”標(biāo)記對(duì)中提取靜態(tài)網(wǎng)頁(yè)主體內(nèi)容,從“與”標(biāo)記對(duì)中提取網(wǎng)頁(yè)內(nèi)嵌URL信息。關(guān)于網(wǎng)頁(yè)解析方法可能涉及其他HTML標(biāo)記,讀者可以自行查閱文獻(xiàn)——HTML 4.01 Specification, W3C Recommendation, December 1999。之后,網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)將繼續(xù)為每個(gè)內(nèi)嵌URL構(gòu)建并發(fā)送信息請(qǐng)求包(內(nèi)含表明身份認(rèn)證成功的Cookie),以獲取其發(fā)布內(nèi)容,最終在所關(guān)注的互聯(lián)網(wǎng)范圍內(nèi),針對(duì)需要身份認(rèn)證的靜態(tài)網(wǎng)絡(luò)媒體事先發(fā)布信息提取工作。
2.3.2 內(nèi)嵌腳本語(yǔ)言片段的動(dòng)態(tài)網(wǎng)頁(yè)信息獲取
動(dòng)態(tài)網(wǎng)頁(yè)主體內(nèi)容及其內(nèi)嵌URL信息完全封裝于網(wǎng)頁(yè)源文件中的腳本語(yǔ)言片段內(nèi),如圖2-11所示。當(dāng)通過網(wǎng)絡(luò)交互重構(gòu)獲得動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息時(shí),無法直接使用基于HTML標(biāo)記匹配方法提取網(wǎng)頁(yè)主體內(nèi)容及其內(nèi)嵌URL信息。在這種情況下,可以先把動(dòng)態(tài)網(wǎng)頁(yè)中包含的所有腳本語(yǔ)言片段傳遞給Mozilla瀏覽器的腳本解釋組件——SpiderMonkey,或獨(dú)立腳本解釋引擎——Rhino,實(shí)現(xiàn)動(dòng)態(tài)腳本解析并獲得腳本片段所對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)內(nèi)容,進(jìn)而按照靜態(tài)網(wǎng)頁(yè)信息獲取方法完成動(dòng)態(tài)網(wǎng)頁(yè)及其內(nèi)嵌URL發(fā)布內(nèi)容的獲取工作。
圖2-11 動(dòng)態(tài)網(wǎng)頁(yè)主體內(nèi)容封裝于源文件腳本語(yǔ)言片段中
鑒于當(dāng)前JavaScript廣泛應(yīng)用于動(dòng)態(tài)網(wǎng)頁(yè)的編寫,本節(jié)主要講解如何基于腳本解釋引擎Rhino,面向包含JavaScript的動(dòng)態(tài)網(wǎng)頁(yè)實(shí)現(xiàn)發(fā)布信息獲取。不過在這以前,首先介紹利用文檔對(duì)象模型DOM樹,提取動(dòng)態(tài)網(wǎng)頁(yè)所含腳本語(yǔ)言片段的具體方法。該方法同樣適用于提取靜態(tài)網(wǎng)頁(yè)主體內(nèi)容,以及網(wǎng)頁(yè)內(nèi)嵌URL信息。
(1)利用HTML DOM樹提取動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)的腳本語(yǔ)言片段
文檔對(duì)象模型DOM是以層次結(jié)構(gòu)組織的結(jié)點(diǎn)或信息片段集合,它提供跨平臺(tái)并且可應(yīng)用于不同編程語(yǔ)言的標(biāo)準(zhǔn)程序接口。DOM把文檔轉(zhuǎn)換成樹形結(jié)構(gòu),使文檔中的每個(gè)部分都成為DOM樹的結(jié)點(diǎn)。HTML DOM是專門應(yīng)用于HTML/XHTML的文檔對(duì)象模型,主要包含Window、Document、Location、Screen、Navigator與History等HTML DOM對(duì)象。HTML網(wǎng)頁(yè)與HTML DOM樹間的對(duì)應(yīng)關(guān)系如圖2-12所示。
圖2-12 HTML網(wǎng)頁(yè)對(duì)應(yīng)的HTML DOM樹
HTML網(wǎng)頁(yè)對(duì)應(yīng)的HTML DOM樹存儲(chǔ)于瀏覽器內(nèi)存對(duì)象中,該對(duì)象實(shí)現(xiàn)了包含若干方法的標(biāo)準(zhǔn)程序接口。網(wǎng)頁(yè)開發(fā)人員可以通過相應(yīng)接口,對(duì)HTML DOM樹上的每個(gè)結(jié)點(diǎn)進(jìn)行遍歷、查詢、修改或刪除等操作,從而動(dòng)態(tài)訪問和實(shí)時(shí)更新HTML網(wǎng)頁(yè)的內(nèi)容、結(jié)構(gòu)與樣式。
動(dòng)態(tài)HTML網(wǎng)頁(yè)的腳本語(yǔ)言片段通常書寫于 “ < Script > 與 < / Script > ” 標(biāo)記對(duì)中,而特定的JavaScript腳本語(yǔ)言片段可以使用 “ JavaScript : ” 在片段開始處進(jìn)行標(biāo)記。因此可以在HTML DOM樹中,通過遍歷標(biāo)記腳本片段的 “ Script ” 結(jié)點(diǎn)或 “ JavaScript :”結(jié)點(diǎn),獲得動(dòng)態(tài)HTML網(wǎng)頁(yè)內(nèi)包含的所有腳本語(yǔ)言片段。同理,可以通過查詢“Body”結(jié)點(diǎn),獲得靜態(tài)網(wǎng)頁(yè)主體內(nèi)容。另外,由于靜態(tài)網(wǎng)頁(yè)內(nèi)嵌網(wǎng)絡(luò)超鏈接地址通常位于 “ < a href > 和 < / a > ” 標(biāo)記對(duì)中,可以通過遍歷“A”結(jié)點(diǎn),獲得靜態(tài)網(wǎng)頁(yè)內(nèi)嵌URL信息。
(2)基于Rhino實(shí)現(xiàn)JavaScript動(dòng)態(tài)網(wǎng)頁(yè)信息獲取
正如上節(jié)所述,遍歷HTML DOM樹可以得到JavaScript動(dòng)態(tài)網(wǎng)頁(yè)所包含的腳本片段。為了實(shí)現(xiàn)JavaScript網(wǎng)頁(yè)發(fā)布信息的獲取,需要把提取到的JavaScript片段輸入獨(dú)立解釋引擎Rhino實(shí)現(xiàn)動(dòng)態(tài)腳本解析,獲得腳本片段所對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)形式,并最終完成JavaScript動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息獲取工作,如圖2-13所示。
圖2-13 基于Rhino實(shí)現(xiàn)JavaScript動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息獲取
在Rhino進(jìn)行JavaScript網(wǎng)頁(yè)動(dòng)態(tài)腳本解析過程中,需要首先完成腳本片段包含的所有對(duì)象初始化操作,然后按照動(dòng)態(tài)網(wǎng)頁(yè)加載過程順序執(zhí)行JavaScript腳本片段。
1.對(duì)象初始化
作為腳本解釋引擎,Rhino雖然可以直接識(shí)別JavaScript語(yǔ)言內(nèi)置對(duì)象與動(dòng)態(tài)網(wǎng)頁(yè)腳本片段自定義對(duì)象,并自動(dòng)調(diào)用可識(shí)別對(duì)象定義的方法,但是它無法識(shí)別與調(diào)用某些特殊對(duì)象定義的方法。在腳本解釋引擎對(duì)象初始化階段,Rhino無法識(shí)別的特殊對(duì)象主要是指上文提到的Window、Document、Location、Screen、Navigator與History等HTML DOM對(duì)象。
因此,在啟動(dòng)Rhino順序執(zhí)行JavaScript片段前,首先需要自定義腳本片段所含HTML DOM對(duì)象方法的具體功能,完成HTML DOM對(duì)象的本地創(chuàng)建工作,如圖2-14所示。隨著Ajax機(jī)制在Web 2.0應(yīng)用中的不斷普及,多數(shù)動(dòng)態(tài)網(wǎng)頁(yè)還選擇Ajax技術(shù)調(diào)用靜態(tài)文本信息。對(duì)于包含Ajax機(jī)制的動(dòng)態(tài)網(wǎng)頁(yè),在對(duì)象初始化階段,還需要附加對(duì)Ajax機(jī)制中XmlHttpRequest對(duì)象方法的自定義。
圖2-14 腳本解釋引擎Rhino對(duì)象初始化
在對(duì)象初始化階段進(jìn)行Rhino無法識(shí)別的特殊對(duì)象本地創(chuàng)建,就是在Rhino運(yùn)行環(huán)境中定義特殊對(duì)象方法函數(shù)的具體功能。例如,HTML DOM對(duì)象Window方法函數(shù)Open的參數(shù)是動(dòng)態(tài)頁(yè)面內(nèi)嵌URL信息,默認(rèn)功能是新建瀏覽器窗口顯示該URL發(fā)布內(nèi)容。在Window對(duì)象Open方法的本地創(chuàng)建過程中,可在Rhino運(yùn)行環(huán)境中自定義該方法的功能,把對(duì)應(yīng)URL信息置入信息獲取環(huán)節(jié)的URL隊(duì)列,等待進(jìn)行信息獲取操作。相應(yīng)地,HTML DOM對(duì)象Document方法函數(shù)Write的參數(shù)是靜態(tài)網(wǎng)頁(yè)信息,默認(rèn)功能是在當(dāng)前瀏覽器窗口中顯示靜態(tài)網(wǎng)頁(yè)發(fā)布內(nèi)容。可在Document對(duì)象Write方法功能自定義時(shí)說明該方法,用于把靜態(tài)網(wǎng)頁(yè)信息寫入位于信息采集端的特定文件中。
在Rhino進(jìn)行JavaScript片段解析過程中,如果遇到無法直接識(shí)別的特殊對(duì)象,它會(huì)在運(yùn)行環(huán)境中尋找該對(duì)象方法函數(shù)的具體定義,即調(diào)用特殊對(duì)象在本地創(chuàng)建時(shí)聲明的方法功能。
2.Rhino執(zhí)行JavaScript腳本片段
在按照動(dòng)態(tài)網(wǎng)頁(yè)加載過程順序執(zhí)行JavaScript腳本片段過程中,腳本解釋引擎Rhino邏輯上可以分為前端環(huán)節(jié)和后端環(huán)節(jié)兩部分。前端環(huán)節(jié)順序進(jìn)行詞法及語(yǔ)法分析,其中語(yǔ)法分析產(chǎn)生語(yǔ)法樹,前端環(huán)節(jié)正是基于語(yǔ)法樹生成中間代碼。前端環(huán)節(jié)產(chǎn)生的中間代碼就是后端環(huán)節(jié)需要解釋執(zhí)行的目標(biāo)代碼,后端環(huán)節(jié)對(duì)于中間代碼解釋執(zhí)行的最終輸出是JavaScript腳本片段對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)信息。腳本片段變量信息統(tǒng)一存儲(chǔ)于記錄表模塊的符號(hào)表中,常量信息及對(duì)象屬性名信息存儲(chǔ)于記錄表模塊的常量表中,記錄表模塊貫穿腳本片段解釋全過程,如圖2-15所示。
圖2-15 JavaScript腳本片段在Rhino中的執(zhí)行過程
Rhino按照加載過程順序執(zhí)行JavaScript動(dòng)態(tài)網(wǎng)頁(yè)腳本片段后的輸出,是腳本片段所對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)形式。在此基礎(chǔ)上,可以利用傳統(tǒng)的HTML標(biāo)記匹配方法,也可以通過遍歷靜態(tài)網(wǎng)頁(yè)的HTML DOM樹,獲得靜態(tài)網(wǎng)頁(yè)主體內(nèi)容,提取網(wǎng)頁(yè)內(nèi)嵌URL信息并置入待獲取URL隊(duì)列,從而最終完成JavaScript動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息的獲取工作。
2.3.3 基于瀏覽器模擬實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息獲取
之前介紹的網(wǎng)絡(luò)媒體信息獲取方法的技術(shù)實(shí)質(zhì),可以統(tǒng)一歸屬于采用網(wǎng)絡(luò)交互重構(gòu)機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息獲取。一方面,在面向需要身份認(rèn)證的靜態(tài)網(wǎng)頁(yè)實(shí)現(xiàn)發(fā)布信息獲取過程中,網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)通過網(wǎng)絡(luò)交互重構(gòu)完整實(shí)現(xiàn)身份認(rèn)證過程與信息請(qǐng)求/響應(yīng)過程;另一方面,為了實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息的獲取,在通過網(wǎng)絡(luò)交互重構(gòu)取得動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布內(nèi)容后,首先需要基于獨(dú)立解釋引擎實(shí)現(xiàn)動(dòng)態(tài)腳本片段解析,獲得動(dòng)態(tài)網(wǎng)頁(yè)所對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)形態(tài),進(jìn)而繼續(xù)采用網(wǎng)絡(luò)交互重構(gòu)機(jī)制實(shí)現(xiàn)靜態(tài)網(wǎng)頁(yè)主體內(nèi)容與內(nèi)嵌URL發(fā)布信息的獲取。
網(wǎng)絡(luò)交互重構(gòu)機(jī)制是網(wǎng)絡(luò)媒體信息獲取的一般性方法,從理論上講,只要掌握網(wǎng)絡(luò)通信協(xié)議的信息交互過程,就可以通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)對(duì)應(yīng)協(xié)議發(fā)布信息獲取。但是,隨著網(wǎng)絡(luò)應(yīng)用的逐步深入、網(wǎng)絡(luò)媒體發(fā)布形態(tài)的不斷推陳出新,不同網(wǎng)絡(luò)媒體信息交互過程存在著極大差別。同時(shí),新型網(wǎng)絡(luò)通信協(xié)議正在不斷得到應(yīng)用,而部分網(wǎng)絡(luò)通信協(xié)議,尤其是視/音頻信息的網(wǎng)絡(luò)交互過程并未對(duì)外公開發(fā)布。
因此,在通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息獲取過程中,需要對(duì)不同網(wǎng)絡(luò)媒體逐一進(jìn)行網(wǎng)絡(luò)信息交互重構(gòu),其信息獲取技術(shù)實(shí)現(xiàn)的工作量異常龐大。與此同時(shí),對(duì)于網(wǎng)絡(luò)交互過程尚處于保密階段的部分網(wǎng)絡(luò)通信協(xié)議而言,無法直接通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)對(duì)應(yīng)協(xié)議發(fā)布信息獲取。
正是由于通過網(wǎng)絡(luò)交互重構(gòu)機(jī)制實(shí)現(xiàn)媒體信息獲取存在相當(dāng)程度的技術(shù)局限性,在Web網(wǎng)站自動(dòng)化功能/性能測(cè)試的啟發(fā)下,瀏覽器模擬技術(shù)在網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)正得到越來越廣泛的應(yīng)用;跒g覽器模擬實(shí)現(xiàn)網(wǎng)絡(luò)媒體發(fā)布信息獲取的技術(shù),實(shí)現(xiàn)過程是利用典型的JSSh客戶端向內(nèi)嵌JSSh服務(wù)器的網(wǎng)絡(luò)瀏覽器發(fā)送JavaScript指令,指示網(wǎng)絡(luò)瀏覽器開展網(wǎng)頁(yè)表單自動(dòng)填寫、網(wǎng)頁(yè)按鈕/鏈接被點(diǎn)擊、網(wǎng)絡(luò)身份認(rèn)證交互、網(wǎng)發(fā)布頁(yè)信息瀏覽,以及視/音頻信息點(diǎn)播等系列操作。
在此基礎(chǔ)上,JSSh客戶端進(jìn)一步要求網(wǎng)絡(luò)瀏覽器導(dǎo)出網(wǎng)頁(yè)文本內(nèi)容、存儲(chǔ)網(wǎng)頁(yè)圖像信息,或在用于信息獲取的計(jì)算機(jī)上對(duì)正在播放的視/音頻信息進(jìn)行屏幕錄像,最終面向各種類型的網(wǎng)絡(luò)內(nèi)容、各種形態(tài)的網(wǎng)絡(luò)媒體實(shí)現(xiàn)發(fā)布信息獲取,如圖2-16所示。
圖2-16 基于瀏覽器模擬實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息獲取
1.內(nèi)嵌JSSh服務(wù)器的Firefox瀏覽器
Mozilla Firefox屬于典型的內(nèi)嵌JSSh服務(wù)器的開源瀏覽器,它將JSSh服務(wù)器作為自身的附加組件。外部應(yīng)用程序——JSSh客戶端可與Firefox瀏覽器內(nèi)嵌的JSSh服務(wù)器(默認(rèn)偵聽9997端口)建立通信連接,并向其發(fā)送JavaScript指令,指示Firefox操作當(dāng)前網(wǎng)頁(yè)的文檔對(duì)象,如圖2-17所示。內(nèi)嵌JSSh服務(wù)器的Firefox順序執(zhí)行來自JSSh客戶端的JavaScript指令,其整體過程與Firefox解析動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)的JavaScript腳本片段類似。
圖2-17 JSSh服務(wù)器與客戶端間的JavaScript指令交互
2.典型JSSh客戶端——FireWatir
作為典型的JSSh客戶端,F(xiàn)ireWatir廣泛應(yīng)用于Web網(wǎng)站功能和性能自動(dòng)化測(cè)試。FireWatir是基于腳本語(yǔ)言Ruby編寫的,可通過發(fā)送JavaScript指令,指示內(nèi)嵌JSSh 服務(wù)器的網(wǎng)絡(luò)瀏覽器(例如Mozilla Firefox)進(jìn)行網(wǎng)頁(yè)表單填寫、按鈕/鏈接點(diǎn)擊,以及網(wǎng)頁(yè)內(nèi)容瀏覽等系列操作。另外,F(xiàn)ireWatir通過JavaScript指令還可以方便地操縱瀏覽器加載網(wǎng)頁(yè)的DOM對(duì)象,從而導(dǎo)出網(wǎng)頁(yè)主體內(nèi)容,實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息的獲取。
(1)基于瀏覽器模擬實(shí)現(xiàn)身份認(rèn)證與網(wǎng)站信息采集
當(dāng)前Web網(wǎng)站主要通過填寫并提交HTTP網(wǎng)頁(yè)上的認(rèn)證表單,實(shí)現(xiàn)網(wǎng)絡(luò)客戶端身份認(rèn)證。因此,網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)可以通過JSSh客戶端向內(nèi)嵌JSSh服務(wù)器的Firefox瀏覽器發(fā)送JavaScript指令,指示瀏覽器自動(dòng)填寫網(wǎng)頁(yè)上的身份認(rèn)證表單,并點(diǎn)擊相應(yīng)按鈕提交身份認(rèn)證請(qǐng)求。身份認(rèn)證協(xié)商過程即身份認(rèn)證網(wǎng)絡(luò)交互過程,是由瀏覽器自行處理的,整個(gè)過程如同正在瀏覽網(wǎng)絡(luò)的用戶與Web網(wǎng)站進(jìn)行身份認(rèn)證網(wǎng)絡(luò)交互。
在身份認(rèn)證成功后,JSSh客戶端繼續(xù)向內(nèi)嵌JSSh服務(wù)器發(fā)送JavaScript指令,指示瀏覽器加載身份認(rèn)證網(wǎng)站發(fā)布信息。瀏覽器自行完成用于發(fā)布信息請(qǐng)求的網(wǎng)絡(luò)交互,并告知JSSh客戶端網(wǎng)站發(fā)布頁(yè)面加載完成。在此基礎(chǔ)上,JSSh客戶端指示瀏覽器導(dǎo)出當(dāng)前加載網(wǎng)頁(yè)主體內(nèi)容,并對(duì)網(wǎng)頁(yè)內(nèi)嵌URL逐一進(jìn)行點(diǎn)擊瀏覽與內(nèi)容導(dǎo)出,最終完成對(duì)于身份認(rèn)證網(wǎng)站發(fā)布信息的獲取工作。
1)身份認(rèn)證表單自動(dòng)填寫。在實(shí)現(xiàn)HTTP認(rèn)證網(wǎng)頁(yè)身份認(rèn)證表單的自動(dòng)填寫前,首先需要識(shí)別身份認(rèn)證表單元素,即身份認(rèn)證表單所涉及的HTTP對(duì)象——用于用戶名、密碼信息輸入的文本框?qū)ο箢愋团c對(duì)象名稱。在此基礎(chǔ)上,可以使用已在目標(biāo)媒體上申請(qǐng)得到的用戶名、密碼信息,根據(jù)腳本語(yǔ)言Ruby的語(yǔ)法格式,構(gòu)建并向JSSh服務(wù)器發(fā)送用于身份認(rèn)證表單自動(dòng)填寫的JavaScript指令,指示內(nèi)嵌JSSh服務(wù)器的網(wǎng)絡(luò)瀏覽器,從而完成身份認(rèn)證表單的自動(dòng)填寫。
在基于瀏覽器模擬實(shí)現(xiàn)身份認(rèn)證表單自動(dòng)填寫的技術(shù)實(shí)現(xiàn)過程中,只需根據(jù)不同網(wǎng)絡(luò)媒體認(rèn)證表單元素的區(qū)別,構(gòu)建用于認(rèn)證表單自動(dòng)填寫的JavaScript指令即可。在指示網(wǎng)絡(luò)瀏覽器完成認(rèn)證表單自動(dòng)填寫后,身份認(rèn)證網(wǎng)絡(luò)交互過程全部由瀏覽器自行完成。這與通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)身份認(rèn)證與網(wǎng)站發(fā)布信息獲取期間,需要針對(duì)不同網(wǎng)絡(luò)媒體重構(gòu)及不同網(wǎng)絡(luò)交互過程相比,功能實(shí)現(xiàn)的復(fù)雜度顯著降低,技術(shù)方案的普適性明顯提高。
2)身份認(rèn)證協(xié)商與發(fā)布信息獲取。在JSSh客戶端完成身份認(rèn)證表單自動(dòng)填寫與提交后,網(wǎng)絡(luò)瀏覽器轉(zhuǎn)向與Web網(wǎng)站進(jìn)行身份認(rèn)證協(xié)商,這期間不再需要JSSh客戶端繼續(xù)參與。在瀏覽器成功完成網(wǎng)絡(luò)身份認(rèn)證后,JSSh客戶端繼續(xù)指示JSSh服務(wù)器加載身份認(rèn)證與網(wǎng)站發(fā)布信息,并進(jìn)一步通過JavaScript指令操作所加載網(wǎng)頁(yè)的文檔對(duì)象,提取網(wǎng)頁(yè)主體內(nèi)容與網(wǎng)頁(yè)內(nèi)嵌URL信息。內(nèi)嵌JSSh服務(wù)器的瀏覽器在JSSh客戶端的指示下,逐一瀏覽并導(dǎo)出當(dāng)前網(wǎng)頁(yè)內(nèi)嵌URL所對(duì)應(yīng)的網(wǎng)頁(yè)主體內(nèi)容,最終完成身份認(rèn)證網(wǎng)站發(fā)布信息獲取工作,如圖2-18所示。
(2)基于瀏覽器模擬實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)信息獲取
采用瀏覽器模擬技術(shù)進(jìn)行動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息獲取,首先需要由JSSh客戶端通過JavaScript指令,指示內(nèi)嵌JSSh服務(wù)器的網(wǎng)絡(luò)瀏覽器加載動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息。在獲得網(wǎng)絡(luò)媒體關(guān)于動(dòng)態(tài)網(wǎng)頁(yè)的響應(yīng)信息后,瀏覽器自動(dòng)完成對(duì)于動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)各類腳本片段的解析工作,從而獲得動(dòng)態(tài)網(wǎng)頁(yè)所對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)形態(tài)。該階段不再只是針對(duì)具體的腳本語(yǔ)言(例如JavaScript)進(jìn)行動(dòng)態(tài)腳本片段解析。凡是能在通用瀏覽器中正常瀏覽的動(dòng)態(tài)網(wǎng)頁(yè),其包含的任何腳本片段都可以基于瀏覽器模擬技術(shù)實(shí)現(xiàn)動(dòng)態(tài)腳本解析。
圖2-18 基于瀏覽器模擬實(shí)現(xiàn)身份認(rèn)證協(xié)商與發(fā)布信息獲取
在此基礎(chǔ)上,瀏覽器進(jìn)一步通過自身包含的網(wǎng)頁(yè)排版引擎Gecko,生成靜態(tài)網(wǎng)頁(yè)的HTML DOM樹。然后JSSh客戶端可以通過JavaScript指令操作靜態(tài)網(wǎng)頁(yè)的HTML DOM樹,逐一導(dǎo)出靜態(tài)網(wǎng)頁(yè)及其內(nèi)嵌URL所對(duì)應(yīng)的發(fā)布內(nèi)容,最終完成動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息的獲取工作,如圖2-19所示。
圖2-19 基于瀏覽器模擬實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息的獲取
在通過Rhino實(shí)現(xiàn)JavaScript動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息的獲取時(shí),首先需要基于網(wǎng)絡(luò)交互重構(gòu)獲取動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布內(nèi)容,并進(jìn)一步遍歷動(dòng)態(tài)網(wǎng)頁(yè)HTML DOM樹,提取網(wǎng)頁(yè)所含JavaScript腳本片段。在對(duì)JavaScript腳本片段中的HTML DOM對(duì)象實(shí)現(xiàn)本地創(chuàng)建后, Rhino按照動(dòng)態(tài)網(wǎng)頁(yè)加載過程順序執(zhí)行JavaScript腳本片段,然后輸出動(dòng)態(tài)網(wǎng)頁(yè)所對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)形態(tài),最終實(shí)現(xiàn)動(dòng)態(tài)腳本解析。
與其對(duì)應(yīng),在基于瀏覽器模擬實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)信息獲取過程中,動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布內(nèi)容獲取與動(dòng)態(tài)網(wǎng)頁(yè)腳本片段解析工作全由瀏覽器自行完成。JSSh客戶端只是通過JavaScript指令指示網(wǎng)絡(luò)瀏覽器加載動(dòng)態(tài)網(wǎng)頁(yè),并在JSSh服務(wù)器告知與所請(qǐng)求的動(dòng)態(tài)網(wǎng)頁(yè)對(duì)應(yīng)的靜態(tài)網(wǎng)頁(yè)形態(tài)加載成功后,繼續(xù)通過JavaScript指令操作當(dāng)前網(wǎng)頁(yè)HTML DOM樹獲取動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息。整體過程與JSSh客戶端指示瀏覽器加載靜態(tài)網(wǎng)頁(yè),并無實(shí)質(zhì)區(qū)別。
(3)利用瀏覽器模擬進(jìn)行網(wǎng)絡(luò)媒體信息獲取的技術(shù)優(yōu)勢(shì)
一方面,與通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)網(wǎng)絡(luò)媒體信息獲取不同,在基于瀏覽器模擬進(jìn)行網(wǎng)絡(luò)媒體信息獲取過程中,與身份認(rèn)證、信息請(qǐng)求相關(guān)的網(wǎng)絡(luò)交互過程,與腳本解析、HTML DOM樹生成相關(guān)的網(wǎng)頁(yè)處理過程,全都是在JSSh客戶端的指示下,由內(nèi)嵌JSSh服務(wù)器的網(wǎng)絡(luò)瀏覽器自行完成。網(wǎng)絡(luò)媒體信息獲取環(huán)節(jié)不再需要針對(duì)不同網(wǎng)絡(luò)媒體,重復(fù)實(shí)現(xiàn)網(wǎng)絡(luò)交互重構(gòu)機(jī)制,從而有效降低了網(wǎng)絡(luò)媒體信息獲取工作的復(fù)雜度,顯著提高了網(wǎng)絡(luò)媒體信息獲取機(jī)制的普適性。
另一方面,在面對(duì)網(wǎng)絡(luò)交互過程極為復(fù)雜,甚至網(wǎng)絡(luò)交互方式并未對(duì)外公開的視/音頻信息時(shí),可以基于瀏覽器模擬機(jī)制實(shí)現(xiàn)視/音頻內(nèi)容自動(dòng)點(diǎn)播,并對(duì)正在播放的視/音頻流進(jìn)行屏幕錄像,最終完成視/音頻信息的統(tǒng)一獲取。在這種情況下,所有能夠通過網(wǎng)絡(luò)瀏覽器得到的,各種形態(tài)、各個(gè)類型的互聯(lián)網(wǎng)信息,都可以采用瀏覽器模擬技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)媒體發(fā)布信息的獲取,這也是本書將這類互聯(lián)網(wǎng)公開傳播信息統(tǒng)稱為網(wǎng)絡(luò)媒體信息的根本原因。
2.4 網(wǎng)絡(luò)通信信息獲取方案
使用特定客戶端進(jìn)行網(wǎng)絡(luò)通信時(shí)所傳輸?shù)幕ヂ?lián)網(wǎng)信息屬于網(wǎng)絡(luò)通信信息,這類信息包含使用客戶端軟件(例如,Microsoft Outlook、FoxMail等)收發(fā)電子郵件,基于即時(shí)通信軟件進(jìn)行網(wǎng)上聊天,采用金融機(jī)構(gòu)發(fā)布的客戶端進(jìn)行網(wǎng)上財(cái)經(jīng)交易等。與網(wǎng)絡(luò)媒體以廣播方式向互聯(lián)網(wǎng)客戶端傳播信息不同,多數(shù)網(wǎng)絡(luò)通信客戶端以對(duì)等的、點(diǎn)對(duì)點(diǎn)的方式進(jìn)行互聯(lián)網(wǎng)通信交互。因此在面向網(wǎng)絡(luò)通信信息進(jìn)行互聯(lián)網(wǎng)交互內(nèi)容獲取時(shí),無法直接借鑒之前提到的網(wǎng)絡(luò)媒體信息獲取方法,進(jìn)行網(wǎng)絡(luò)通信信息獲取。
當(dāng)前網(wǎng)絡(luò)通信信息獲取過程主要涉及網(wǎng)絡(luò)通信信息鏡像、網(wǎng)絡(luò)交互數(shù)據(jù)重組、通信協(xié)議數(shù)據(jù)恢復(fù)、網(wǎng)絡(luò)通信信息存儲(chǔ)等技術(shù)環(huán)節(jié)。網(wǎng)絡(luò)通信信息獲取主要通過局域網(wǎng)總線數(shù)據(jù)偵聽,城域網(wǎng)(例如數(shù)字社區(qū),擁有互聯(lián)網(wǎng)接入的公寓區(qū)等)三層交換機(jī)通信端口數(shù)據(jù)導(dǎo)出的方式,實(shí)現(xiàn)包含網(wǎng)絡(luò)通信信息在內(nèi)的互聯(lián)網(wǎng)交互數(shù)據(jù)鏡像。
在此基礎(chǔ)上,網(wǎng)絡(luò)通信信息獲取機(jī)制選擇在OSI/RM網(wǎng)絡(luò)層針對(duì)具體的互聯(lián)網(wǎng)客戶端,實(shí)現(xiàn)特定協(xié)議的網(wǎng)絡(luò)通信數(shù)據(jù)包重組。對(duì)于明文傳輸且公開發(fā)布協(xié)議交互過程的網(wǎng)絡(luò)通信協(xié)議,信息獲取機(jī)制通過協(xié)議數(shù)據(jù)恢復(fù)獲得通信交互內(nèi)容,并將其存入網(wǎng)絡(luò)通信信息庫(kù),實(shí)現(xiàn)網(wǎng)絡(luò)通信信息獲取,如圖2-20所示。不過,在網(wǎng)絡(luò)通信信息通過密文傳輸?shù)那闆r下,或者部分網(wǎng)絡(luò)通信協(xié)議尚未公開協(xié)議交互過程時(shí),網(wǎng)絡(luò)信息獲取環(huán)節(jié)無法通過協(xié)議數(shù)據(jù)恢復(fù)獲得網(wǎng)絡(luò)通信信息。
需要特別說明的是,在使用特定客戶端進(jìn)行網(wǎng)絡(luò)通信交互時(shí),所傳輸?shù)木W(wǎng)絡(luò)信息并不算是互聯(lián)網(wǎng)公開傳播信息。因此在沒有得到網(wǎng)絡(luò)通信當(dāng)事人或網(wǎng)絡(luò)監(jiān)管部門授權(quán)的情況下,本書并不建議面向?qū)儆趥(gè)人隱私范疇的網(wǎng)絡(luò)通信信息進(jìn)行內(nèi)容鏡像與信息獲取嘗試。
圖2-20 網(wǎng)絡(luò)通信信息獲取流程
2.5 本章小結(jié)
隨著網(wǎng)絡(luò)基礎(chǔ)建設(shè)不斷深入、網(wǎng)絡(luò)通信應(yīng)用不斷普及,互聯(lián)網(wǎng)已經(jīng)成為繼報(bào)紙、廣播與電視媒體以后的第4大信息發(fā)布平臺(tái)。正是由于這一原因,本節(jié)在講解信息內(nèi)容的獲取時(shí),選擇以互聯(lián)網(wǎng)傳播信息作為內(nèi)容獲取的工作對(duì)象。根據(jù)互聯(lián)網(wǎng)傳播信息是否可以使用通用網(wǎng)絡(luò)瀏覽器直接獲得,本章將互聯(lián)網(wǎng)信息分成網(wǎng)絡(luò)媒體信息與網(wǎng)絡(luò)通信信息兩大類型。
在此基礎(chǔ)上,本節(jié)主要針對(duì)網(wǎng)絡(luò)媒體信息進(jìn)行內(nèi)容獲取的一般性原理介紹,并講解通過網(wǎng)絡(luò)交互重構(gòu)實(shí)現(xiàn)需要身份認(rèn)證的靜態(tài)網(wǎng)絡(luò)媒體信息獲取的方法;基于腳本解釋引擎實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)發(fā)布信息獲取的方法,以及利用瀏覽器模擬技術(shù)對(duì)各類網(wǎng)絡(luò)媒體信息統(tǒng)一,實(shí)現(xiàn)信息獲取的具體辦法。出于章節(jié)敘述內(nèi)容的全面性考慮,本章最后還對(duì)于并不屬于公開傳播范疇的網(wǎng)絡(luò)通信信息進(jìn)行了簡(jiǎn)要內(nèi)容獲取方案介紹。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:信息內(nèi)容安全管理及應(yīng)用(二)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112155106.html