游 彬 劉曉然 李 寧 嚴岳松
(海軍指揮學院信息系 南京 211800)
隨著互聯網技術的發展,時至今日,網頁內容存在多樣性和動態性等特點[1],為了有針對性的抓取互聯網信息資源,目前學者對網頁和網絡的分類如表1所示。

表1 網頁和網絡的分類
隱藏在互聯網數據庫中的動態網頁,沒有超鏈接的互相關聯,其信息量卻占據整個互聯網的絕大部分。這部分網頁有的只能通過網站的查詢接口提交來動態生成,有的需要注冊和登錄之后才能查看,因此傳統的Web處理相關技術研究和應用無法獲取這些信息,學者開始研究針對動態網頁的信息采集技術。
目前,隨著信息化技術的發展,信息系統已經成為不可或缺的基礎設施,并廣泛應用于社會生活中[2]。對于社交網站推特(Twitter)等深層網絡,其信息內容一般較短,但時效性很強,觀點突出,因此推特的140字推文(tweets)限制看似缺陷,實則為極大的優勢:全球移動通信網絡的擴張使得這種極度適合手機閱讀的傳播方式繼續爆發,對于各種突發新聞,推特比CNN等傳媒巨頭更有優勢,推特上的推文信息完全可以作為商業競爭或軍事情報的素材。
2011年利比亞戰爭初期,北約發言人、英國皇家空軍中校麥克·布蘭肯首次確認了推特(twitter,國外著名的社交網站)作為情報工具的事實:他們從推特上獲得了很多關于卡扎菲武裝在受困城市班加西和的黎波里的動向的消息[3~5]。推特在情報獲取或輿情分析等應用領域具有廣泛的前景。
本文研究了Twitter等社交網站所遵循的協議,并在Java環境下實現了這類網站的信息抽取的關鍵代碼,以期待為網絡輿情等信息抽取應用領域提供新的動態網絡的信息來源。
OAuth(開放式驗證協議)是一種開放的協議,由IETF(Internet Engineering Task Force,Internet工程任務組)起草,目前最新版本為OAuth2.0第21版[6],支持用戶在不同的Web站點共享其私有數據和憑證,但僅在擁有數據的原始Web站點公開數據。
2011年互聯網廠商如騰訊、新浪微博、人人網等都推出了各自的開放平臺,第三方開發者可以基于開放平臺的開放API開發各種各樣的應用[7],大多數開放平臺采用了較新的 OAuth2.0版本[8],也有部分廠家采用了OAuth1.0a版本,或者兩種版本共用,如表2所示。

表2 各類開放平臺的OAuth版本
OAuth協議支持用戶將存儲在一個Web站點的私有資源數據(如私人照片)與其他站點共享,而不會將用戶的憑證(如用戶名和密碼)泄漏給除擁有用戶數據的Web站點之外的其他站點。采用OAuth作為其中一種身份驗證協議的Web站點將增強用戶的隱私保護和安全性。
在OAuth中有三個主要角色:用戶、使用者和服務提供商。如表3所示。

表3 OAuth協議中的主要角色
為了抓取twitter網上所關注對象的推文內容,首先需要注冊twitter帳戶。用戶、使用者和服務提供商twitter之間的OAuth交互如所示。OAuth協議認證雖然有用戶登錄的過程[9],但是,其登錄始終是在服務提供商的頁面登錄,而并非在第三方資源數據使用者(如桌面應用程序或Web程序)的頁面,從而保證了用戶的登錄名和密碼不泄露給第三方。

圖1 用戶、應用程序和twitter之間的OAuth交互
工作流程描述如下:
1)擁有Twitter帳戶的用戶通過第三方應用程序要求查看推文內容;
2)應用程序向Twitter網請求Request_Token,Twitter返回臨時未授權Request_Token;
3)應用程序引導用戶至Twitter登錄授權,授權后Twitter引導用戶回到應用程序;
4)應用程序向Twitter請求Access_Token;
5)應用程序用返回的Access_Token訪問用戶的推文;
6)應用程序將推文反饋并展示給用戶。
從上述分析可知,整個過程是安全可信的,除非第三方Consumer是不可信的應用程序,在引導用戶至Twitter登錄界面時使用釣魚網站,獲取用戶的帳號名和密碼。
推特API與twitter4j目前Twitter僅支持HTTP Basic Authentication驗證機制,通過API的方式開放一些應用接口,除了部分API(如公共時間線public timeline)外,所有的API方法都必須要求用戶認證,所有的返回都與認證用戶相關[12]。例如,嘗試獲取一個設置為私密的且不是您的好友的用戶信息時,將會返回失敗狀態。根據用戶特定的請求返回對應特定格式的數據,Twitter目前支持以下的四種數據返回格式:XML、JSON、RSS、Atom。與獲取推文有關的部分接口方法如表4所示。

表4 部分API接口方法
Twitter4J是一個非官方的封裝了Twitter API的Java客戶端開發包,使用Twitter4j可以在應用程序中集成Twitter的服務,提供的功能包括:獲取朋友,特殊用戶的時間線(Timeline),收發私信(Direct Messages),搜索推文等,其主要特點是:不依賴第三方開發包,支持OAuth協議。

圖2 第三方Consumer程序的流程圖
文獻[1]針對 Twitter、Facebook和人人網等深層網絡(Deep Web,主要指動態網絡資源),使用Twitter API調用設計了增量式爬蟲,能較好地抓取關注對象的Twitter信息。為了使抽取的推文信息更具針對性,論文將根據用戶設定的關鍵詞,調用基于OAuth協議的twitter4j的編程接口,在Java環境下實現Twitter的關鍵詞推文抽取,第三方Consumer程序的流程圖如圖2所示。
程序關鍵代碼及其說明如下:





在上述代碼的驗證身份信息和訪問權限部分,consumerKey和consumerSecret和accessTokenSecret是兩對密鑰,需到 Twitter網(https://dev.twitter.com/apps/new)使用已注冊的帳戶名和密碼申請,兩對密鑰背后的安全機制為OAuth協議。密鑰的功能說明如下:
consumerKey和consumerSecret,代表客戶端應用程序,搜索應用程序將用這對密鑰來訪問您所創建帳戶的Twitter Web服務。
AccessToken和AccessTokenSecret,結合使用來簽署搜索應用程序發送到Twitter Web服務的請求。
在關鍵詞查詢部分,用戶可設定searchKeyword,如在實驗中設定為“Obama”,最后將推文(tweets)存入列表,調用getFromUser()和getText()函數在控制臺打印。

因其快捷的信息傳播方式,Twitter在時效性上已超越了廣大媒體,Twitter已不再局限于個人的推文收發,而深受政府和企業青睞。研究社交網絡的信息抽取技術能為情報分析工作提供有效的信息來源和途徑。
本文在Java環境下實現了Twitter推文信息的抽取,如何突破API每小時150次訪問的限制,以抽取更多的信息量,以及如何判斷信息的可信度,整合抽取回的信息,是下一步亟待解決的問題。
[1]胡亞楠.社交網絡獲取技術與實現[D].哈爾濱工業大學,2011.
[2]游彬,韋偉,劉曉然,等.基于主動網絡的軍事化安全防護體系研究[J].艦船電子工程,2011,31(11):1-3.
[3]Spencer Ackerman.Twitter:利比亞戰爭中的新式武器[EB/OL].譯言 網,(2011-06-12)[2012-4-15].http://article.yeeyan.org/view/232379/200519?from=rss_related.
[4]張品秋.北約利用“推特”網站收集利比亞情報[N].中國日報,2011-6-16.
[5]社交網站被納入軍方情報網“推特”助力北約空襲[EB/OL].中國網絡 電 視 臺,(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]劉鏑,張智江,張尼.基于國內開放平臺的Oauth認證框架研究[J].信息通信技術,2011(6):43-45.
[8]時子慶,劉金蘭,譚曉華.基于OAuth2.0的認證授權技術[J].計算機系統應用,2012,21(3):260-264.
[9]劉為,郝梅.利用OpenID和OAuth進行安全授權及風險防范的分析[J].武漢商業服務學院學報,2011,25(5):90-92.
[10]白普易,任明秋,王學軍,等.雷達抗干擾性能評估指標分析與測試平臺設計[J].計算機與數字工程,2011,39(11).
[11]楊文君,林偉.基于DSP5402的雷達測速系統硬件、軟件設計[J].計算機與數字工程,2012(5).
[12]月光博客.Twitter API中文文檔[EB/OL].(2010-4-20)[2012-4-15].http://www.williamlong.info/archives/2152.html.