游 彬 劉曉然 李 寧 嚴(yán)岳松
(海軍指揮學(xué)院信息系 南京 211800)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,時(shí)至今日,網(wǎng)頁(yè)內(nèi)容存在多樣性和動(dòng)態(tài)性等特點(diǎn)[1],為了有針對(duì)性的抓取互聯(lián)網(wǎng)信息資源,目前學(xué)者對(duì)網(wǎng)頁(yè)和網(wǎng)絡(luò)的分類如表1所示。
表1 網(wǎng)頁(yè)和網(wǎng)絡(luò)的分類
隱藏在互聯(lián)網(wǎng)數(shù)據(jù)庫(kù)中的動(dòng)態(tài)網(wǎng)頁(yè),沒有超鏈接的互相關(guān)聯(lián),其信息量卻占據(jù)整個(gè)互聯(lián)網(wǎng)的絕大部分。這部分網(wǎng)頁(yè)有的只能通過網(wǎng)站的查詢接口提交來(lái)動(dòng)態(tài)生成,有的需要注冊(cè)和登錄之后才能查看,因此傳統(tǒng)的Web處理相關(guān)技術(shù)研究和應(yīng)用無(wú)法獲取這些信息,學(xué)者開始研究針對(duì)動(dòng)態(tài)網(wǎng)頁(yè)的信息采集技術(shù)。
目前,隨著信息化技術(shù)的發(fā)展,信息系統(tǒng)已經(jīng)成為不可或缺的基礎(chǔ)設(shè)施,并廣泛應(yīng)用于社會(huì)生活中[2]。對(duì)于社交網(wǎng)站推特(Twitter)等深層網(wǎng)絡(luò),其信息內(nèi)容一般較短,但時(shí)效性很強(qiáng),觀點(diǎn)突出,因此推特的140字推文(tweets)限制看似缺陷,實(shí)則為極大的優(yōu)勢(shì):全球移動(dòng)通信網(wǎng)絡(luò)的擴(kuò)張使得這種極度適合手機(jī)閱讀的傳播方式繼續(xù)爆發(fā),對(duì)于各種突發(fā)新聞,推特比CNN等傳媒巨頭更有優(yōu)勢(shì),推特上的推文信息完全可以作為商業(yè)競(jìng)爭(zhēng)或軍事情報(bào)的素材。
2011年利比亞戰(zhàn)爭(zhēng)初期,北約發(fā)言人、英國(guó)皇家空軍中校麥克·布蘭肯首次確認(rèn)了推特(twitter,國(guó)外著名的社交網(wǎng)站)作為情報(bào)工具的事實(shí):他們從推特上獲得了很多關(guān)于卡扎菲武裝在受困城市班加西和的黎波里的動(dòng)向的消息[3~5]。推特在情報(bào)獲取或輿情分析等應(yīng)用領(lǐng)域具有廣泛的前景。
本文研究了Twitter等社交網(wǎng)站所遵循的協(xié)議,并在Java環(huán)境下實(shí)現(xiàn)了這類網(wǎng)站的信息抽取的關(guān)鍵代碼,以期待為網(wǎng)絡(luò)輿情等信息抽取應(yīng)用領(lǐng)域提供新的動(dòng)態(tài)網(wǎng)絡(luò)的信息來(lái)源。
OAuth(開放式驗(yàn)證協(xié)議)是一種開放的協(xié)議,由IETF(Internet Engineering Task Force,Internet工程任務(wù)組)起草,目前最新版本為OAuth2.0第21版[6],支持用戶在不同的Web站點(diǎn)共享其私有數(shù)據(jù)和憑證,但僅在擁有數(shù)據(jù)的原始Web站點(diǎn)公開數(shù)據(jù)。
2011年互聯(lián)網(wǎng)廠商如騰訊、新浪微博、人人網(wǎng)等都推出了各自的開放平臺(tái),第三方開發(fā)者可以基于開放平臺(tái)的開放API開發(fā)各種各樣的應(yīng)用[7],大多數(shù)開放平臺(tái)采用了較新的 OAuth2.0版本[8],也有部分廠家采用了OAuth1.0a版本,或者兩種版本共用,如表2所示。
表2 各類開放平臺(tái)的OAuth版本
OAuth協(xié)議支持用戶將存儲(chǔ)在一個(gè)Web站點(diǎn)的私有資源數(shù)據(jù)(如私人照片)與其他站點(diǎn)共享,而不會(huì)將用戶的憑證(如用戶名和密碼)泄漏給除擁有用戶數(shù)據(jù)的Web站點(diǎn)之外的其他站點(diǎn)。采用OAuth作為其中一種身份驗(yàn)證協(xié)議的Web站點(diǎn)將增強(qiáng)用戶的隱私保護(hù)和安全性。
在OAuth中有三個(gè)主要角色:用戶、使用者和服務(wù)提供商。如表3所示。
表3 OAuth協(xié)議中的主要角色
為了抓取twitter網(wǎng)上所關(guān)注對(duì)象的推文內(nèi)容,首先需要注冊(cè)twitter帳戶。用戶、使用者和服務(wù)提供商twitter之間的OAuth交互如所示。OAuth協(xié)議認(rèn)證雖然有用戶登錄的過程[9],但是,其登錄始終是在服務(wù)提供商的頁(yè)面登錄,而并非在第三方資源數(shù)據(jù)使用者(如桌面應(yīng)用程序或Web程序)的頁(yè)面,從而保證了用戶的登錄名和密碼不泄露給第三方。
圖1 用戶、應(yīng)用程序和twitter之間的OAuth交互
工作流程描述如下:
1)擁有Twitter帳戶的用戶通過第三方應(yīng)用程序要求查看推文內(nèi)容;
2)應(yīng)用程序向Twitter網(wǎng)請(qǐng)求Request_Token,Twitter返回臨時(shí)未授權(quán)Request_Token;
3)應(yīng)用程序引導(dǎo)用戶至Twitter登錄授權(quán),授權(quán)后Twitter引導(dǎo)用戶回到應(yīng)用程序;
4)應(yīng)用程序向Twitter請(qǐng)求Access_Token;
5)應(yīng)用程序用返回的Access_Token訪問用戶的推文;
6)應(yīng)用程序?qū)⑼莆姆答伈⒄故窘o用戶。
從上述分析可知,整個(gè)過程是安全可信的,除非第三方Consumer是不可信的應(yīng)用程序,在引導(dǎo)用戶至Twitter登錄界面時(shí)使用釣魚網(wǎng)站,獲取用戶的帳號(hào)名和密碼。
推特API與twitter4j目前Twitter僅支持HTTP Basic Authentication驗(yàn)證機(jī)制,通過API的方式開放一些應(yīng)用接口,除了部分API(如公共時(shí)間線public timeline)外,所有的API方法都必須要求用戶認(rèn)證,所有的返回都與認(rèn)證用戶相關(guān)[12]。例如,嘗試獲取一個(gè)設(shè)置為私密的且不是您的好友的用戶信息時(shí),將會(huì)返回失敗狀態(tài)。根據(jù)用戶特定的請(qǐng)求返回對(duì)應(yīng)特定格式的數(shù)據(jù),Twitter目前支持以下的四種數(shù)據(jù)返回格式:XML、JSON、RSS、Atom。與獲取推文有關(guān)的部分接口方法如表4所示。
表4 部分API接口方法
Twitter4J是一個(gè)非官方的封裝了Twitter API的Java客戶端開發(fā)包,使用Twitter4j可以在應(yīng)用程序中集成Twitter的服務(wù),提供的功能包括:獲取朋友,特殊用戶的時(shí)間線(Timeline),收發(fā)私信(Direct Messages),搜索推文等,其主要特點(diǎn)是:不依賴第三方開發(fā)包,支持OAuth協(xié)議。
圖2 第三方Consumer程序的流程圖
文獻(xiàn)[1]針對(duì) Twitter、Facebook和人人網(wǎng)等深層網(wǎng)絡(luò)(Deep Web,主要指動(dòng)態(tài)網(wǎng)絡(luò)資源),使用Twitter API調(diào)用設(shè)計(jì)了增量式爬蟲,能較好地抓取關(guān)注對(duì)象的Twitter信息。為了使抽取的推文信息更具針對(duì)性,論文將根據(jù)用戶設(shè)定的關(guān)鍵詞,調(diào)用基于OAuth協(xié)議的twitter4j的編程接口,在Java環(huán)境下實(shí)現(xiàn)Twitter的關(guān)鍵詞推文抽取,第三方Consumer程序的流程圖如圖2所示。
程序關(guān)鍵代碼及其說(shuō)明如下:
在上述代碼的驗(yàn)證身份信息和訪問權(quán)限部分,consumerKey和consumerSecret和accessTokenSecret是兩對(duì)密鑰,需到 Twitter網(wǎng)(https://dev.twitter.com/apps/new)使用已注冊(cè)的帳戶名和密碼申請(qǐng),兩對(duì)密鑰背后的安全機(jī)制為OAuth協(xié)議。密鑰的功能說(shuō)明如下:
consumerKey和consumerSecret,代表客戶端應(yīng)用程序,搜索應(yīng)用程序?qū)⒂眠@對(duì)密鑰來(lái)訪問您所創(chuàng)建帳戶的Twitter Web服務(wù)。
AccessToken和AccessTokenSecret,結(jié)合使用來(lái)簽署搜索應(yīng)用程序發(fā)送到Twitter Web服務(wù)的請(qǐng)求。
在關(guān)鍵詞查詢部分,用戶可設(shè)定searchKeyword,如在實(shí)驗(yàn)中設(shè)定為“Obama”,最后將推文(tweets)存入列表,調(diào)用getFromUser()和getText()函數(shù)在控制臺(tái)打印。
因其快捷的信息傳播方式,Twitter在時(shí)效性上已超越了廣大媒體,Twitter已不再局限于個(gè)人的推文收發(fā),而深受政府和企業(yè)青睞。研究社交網(wǎng)絡(luò)的信息抽取技術(shù)能為情報(bào)分析工作提供有效的信息來(lái)源和途徑。
本文在Java環(huán)境下實(shí)現(xiàn)了Twitter推文信息的抽取,如何突破API每小時(shí)150次訪問的限制,以抽取更多的信息量,以及如何判斷信息的可信度,整合抽取回的信息,是下一步亟待解決的問題。
[1]胡亞楠.社交網(wǎng)絡(luò)獲取技術(shù)與實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué),2011.
[2]游彬,韋偉,劉曉然,等.基于主動(dòng)網(wǎng)絡(luò)的軍事化安全防護(hù)體系研究[J].艦船電子工程,2011,31(11):1-3.
[3]Spencer Ackerman.Twitter:利比亞戰(zhàn)爭(zhēng)中的新式武器[EB/OL].譯言 網(wǎng),(2011-06-12)[2012-4-15].http://article.yeeyan.org/view/232379/200519?from=rss_related.
[4]張品秋.北約利用“推特”網(wǎng)站收集利比亞情報(bào)[N].中國(guó)日?qǐng)?bào),2011-6-16.
[5]社交網(wǎng)站被納入軍方情報(bào)網(wǎng)“推特”助力北約空襲[EB/OL].中國(guó)網(wǎng)絡(luò) 電 視 臺(tái),(2011-6-28)[2012-4-15].http://news.cntv.cn/20110628/101801.shtml.
[6]OAuth2.0V.21[S/OL].[2011-10-08].http://tools.ietf.org/html/draft-ietf-oauth.
[7]劉鏑,張智江,張尼.基于國(guó)內(nèi)開放平臺(tái)的Oauth認(rèn)證框架研究[J].信息通信技術(shù),2011(6):43-45.
[8]時(shí)子慶,劉金蘭,譚曉華.基于OAuth2.0的認(rèn)證授權(quán)技術(shù)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(3):260-264.
[9]劉為,郝梅.利用OpenID和OAuth進(jìn)行安全授權(quán)及風(fēng)險(xiǎn)防范的分析[J].武漢商業(yè)服務(wù)學(xué)院學(xué)報(bào),2011,25(5):90-92.
[10]白普易,任明秋,王學(xué)軍,等.雷達(dá)抗干擾性能評(píng)估指標(biāo)分析與測(cè)試平臺(tái)設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2011,39(11).
[11]楊文君,林偉.基于DSP5402的雷達(dá)測(cè)速系統(tǒng)硬件、軟件設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2012(5).
[12]月光博客.Twitter API中文文檔[EB/OL].(2010-4-20)[2012-4-15].http://www.williamlong.info/archives/2152.html.