摘 要:本文設(shè)計(jì)和實(shí)現(xiàn)了一種互聯(lián)網(wǎng)用戶行為分析系統(tǒng),設(shè)計(jì)了系統(tǒng)的總體框架,系統(tǒng)由捕獲模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)圖表生成模塊和系統(tǒng)界面框架模塊組成,并采用Java語(yǔ)言進(jìn)行了編程實(shí)現(xiàn),本系統(tǒng)產(chǎn)生的網(wǎng)絡(luò)用戶行為分析結(jié)果可以為互聯(lián)網(wǎng)用戶管理提供科學(xué)的依據(jù)。
關(guān)鍵詞:用戶行為;行為分析;抓包;網(wǎng)絡(luò)協(xié)議
中圖分類(lèi)號(hào):TP393.01
據(jù)中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)發(fā)布的第34次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》統(tǒng)計(jì),我國(guó)互聯(lián)網(wǎng)用戶數(shù)量已超過(guò)6億,如此龐大的互聯(lián)網(wǎng)用戶群體將產(chǎn)生大量的網(wǎng)絡(luò)訪問(wèn)行為,如何從這些訪問(wèn)行為中發(fā)掘有用的數(shù)據(jù)模式,已成為當(dāng)前研究的熱點(diǎn)?;ヂ?lián)網(wǎng)用戶行為分析的結(jié)果可以為制定有針對(duì)性的網(wǎng)絡(luò)營(yíng)銷(xiāo)策略提供科學(xué)的依據(jù),同時(shí),它還在幫助用戶了解自身網(wǎng)絡(luò)行為習(xí)慣、掌握誤操作行為或不經(jīng)意的惡意行為等方面提供統(tǒng)計(jì)數(shù)據(jù)。為了對(duì)互聯(lián)用戶行為分析進(jìn)行分析,需要通過(guò)對(duì)網(wǎng)絡(luò)流量進(jìn)行抓包,抽取其特征信息,并對(duì)其源/目的IP地址、協(xié)議標(biāo)志等特征域進(jìn)行統(tǒng)計(jì)和分析,進(jìn)而從中找出用戶訪問(wèn)互聯(lián)網(wǎng)的規(guī)律。
本文設(shè)計(jì)并實(shí)現(xiàn)了一種互聯(lián)網(wǎng)用戶行為分析系統(tǒng),用于實(shí)時(shí)獲取互聯(lián)網(wǎng)網(wǎng)絡(luò)用戶的上網(wǎng)數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行分析,同時(shí)通過(guò)圖形化界面顯示用戶行為分析的結(jié)果。
1 系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
1.1 系統(tǒng)總體設(shè)計(jì)
本文設(shè)計(jì)的互聯(lián)網(wǎng)用戶行為分析系統(tǒng)由數(shù)據(jù)捕獲模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)圖表生成模塊和系統(tǒng)界面框架模塊組成。
系統(tǒng)運(yùn)行的流程:本系統(tǒng)首先由數(shù)據(jù)捕獲模塊獲取網(wǎng)絡(luò)數(shù)據(jù)包,并截取其包頭信息,抽取包頭中源IP地址、目的IP地址、端口號(hào)等關(guān)鍵特征信息,存入數(shù)據(jù)庫(kù)中并將實(shí)時(shí)捕獲到的數(shù)據(jù)信息顯示在系統(tǒng)界面中;數(shù)據(jù)分析模塊通過(guò)對(duì)數(shù)據(jù)庫(kù)中捕獲到的特征信息進(jìn)行統(tǒng)計(jì)和分析,進(jìn)而得到可以反映用戶行為特征的數(shù)據(jù);圖表模塊根據(jù)數(shù)據(jù)分析模塊得到的數(shù)據(jù)生成直觀、易于理解、可以更好反映數(shù)據(jù)特征的圖表并將圖表顯示在系統(tǒng)界面中;系統(tǒng)界面框架模塊實(shí)現(xiàn)用戶的操作以及信息的顯示。
1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
本系統(tǒng)采用MySql數(shù)據(jù)庫(kù)系統(tǒng)存儲(chǔ)運(yùn)行過(guò)程中的用戶行為數(shù)據(jù),MySql是一種開(kāi)源的數(shù)據(jù)庫(kù)系統(tǒng),其體積小、速度快、成本低,可以運(yùn)行在多種操作系統(tǒng)平臺(tái)上,由于其開(kāi)源和免費(fèi)特性,大量開(kāi)發(fā)用戶采用其作為數(shù)據(jù)庫(kù)管理系統(tǒng)。
本系統(tǒng)設(shè)計(jì)的數(shù)據(jù)庫(kù)包含三個(gè)數(shù)據(jù)表:捕獲信息存儲(chǔ)表data、數(shù)據(jù)分析結(jié)果表result、注冊(cè)端口表tblregisteredports。
1.3 系統(tǒng)模塊介紹
1.3.1 系統(tǒng)界面框架模塊
系統(tǒng)界面主要用于與用戶進(jìn)行良好的交互,實(shí)現(xiàn)系統(tǒng)的操作。系統(tǒng)界面分成三個(gè)部分,第一部分是菜單欄,用于實(shí)現(xiàn)系統(tǒng)的操作,包括捕獲器的設(shè)置、數(shù)據(jù)捕獲的啟動(dòng)、對(duì)捕獲到的數(shù)據(jù)的分析等操作;第二部分是實(shí)時(shí)顯示表格,實(shí)現(xiàn)對(duì)實(shí)時(shí)捕獲到的特征信息的顯示;最后一部分是數(shù)據(jù)總大小標(biāo)簽,實(shí)時(shí)顯示捕獲到的數(shù)據(jù)的總量。
使用Java語(yǔ)言的具體實(shí)現(xiàn)方法如下:創(chuàng)建一個(gè)JFrame類(lèi)對(duì)象做為主界面的框架,該主界面的框架分為三部分:菜單欄部分、表格部分、標(biāo)簽部分。主界面框架使用邊界布局管理器進(jìn)行布局,在主界面框架的NORTH、CENTER、SOUTH位置分別添加一個(gè)JPanel面板;在NORTH位置,面板中添加JMenuBar對(duì)象,并添加一系列菜單欄組件實(shí)現(xiàn)菜單欄功能。
在CENTER位置,先在面板JScrollPane類(lèi)對(duì)象中添加JTable對(duì)象,再將JScrollPane類(lèi)對(duì)象添加到Jpanel面板中,最后將用于顯示實(shí)時(shí)的捕獲特征信息在SOUTH位置,添加Jlabel類(lèi)對(duì)象,通過(guò)不斷更新標(biāo)簽上數(shù)據(jù)以實(shí)現(xiàn)顯示捕獲數(shù)據(jù)的大小。
1.3.2 數(shù)據(jù)捕獲模塊
數(shù)據(jù)捕獲模塊主要用于實(shí)現(xiàn)從主機(jī)中捕獲用戶的網(wǎng)絡(luò)行為所產(chǎn)生的數(shù)據(jù),捕獲器設(shè)置界面所示,“選擇網(wǎng)卡”下拉框用于選擇要捕獲的網(wǎng)卡,被選中網(wǎng)卡信息在“網(wǎng)卡信息”文本域中顯示;“混雜模式”單選按鈕用于實(shí)現(xiàn)對(duì)捕獲模式的選擇,選擇“是”捕獲所有經(jīng)過(guò)網(wǎng)卡的數(shù)據(jù)包,包括不是發(fā)給本機(jī)的包,選擇“否”僅捕獲發(fā)給本機(jī)的數(shù)據(jù)包;“數(shù)據(jù)長(zhǎng)度”文本框用于實(shí)現(xiàn)對(duì)一次捕獲數(shù)據(jù)大小的設(shè)置;“超時(shí)時(shí)間”文本框用于實(shí)現(xiàn)對(duì)超時(shí)時(shí)間的設(shè)置。
數(shù)據(jù)捕獲模塊的實(shí)現(xiàn)方法如下:
首先通過(guò)第三方庫(kù)Jpcap提供的JpcapCaptor類(lèi)對(duì)象中g(shù)etDeviceList方法來(lái)獲取網(wǎng)卡列表信息,再通過(guò)其提供的openDevice方法來(lái)打開(kāi)指定需要捕獲的網(wǎng)卡,并設(shè)置相關(guān)的捕獲器信息,之后通過(guò)getPacket()方法,主動(dòng)捕獲的方式進(jìn)行數(shù)據(jù)包的捕獲,進(jìn)而對(duì)捕獲到的數(shù)據(jù)進(jìn)行過(guò)濾,獲取UDP和TCP數(shù)據(jù)包,截取包頭信息,抽取包頭中源IP地址、目的IP地址、端口號(hào)等關(guān)鍵特征信息,最后將這些數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)庫(kù)中。
1.3.3 數(shù)據(jù)分析模塊
數(shù)據(jù)分析模塊實(shí)現(xiàn)對(duì)原始捕獲到的數(shù)據(jù)進(jìn)行加工處理,進(jìn)而獲得所需要的數(shù)據(jù)。其實(shí)現(xiàn)方法如下為:在本機(jī)與所訪問(wèn)的服務(wù)器之間的信息交換過(guò)程中,通過(guò)獲取信息交換過(guò)程中的端口號(hào)信息來(lái)獲取網(wǎng)絡(luò)行為的類(lèi)型?;谶@點(diǎn),對(duì)于本機(jī)所采用的端口是無(wú)實(shí)質(zhì)意義,只有服務(wù)器的端口號(hào)才具有相應(yīng)的意義。
本模塊實(shí)現(xiàn)數(shù)據(jù)分析的方法如下。如果獲取的信息源IP是本地IP地址,那么相應(yīng)的目的端口號(hào)即為服務(wù)器的端口號(hào),如果獲取的信息目的IP是本地IP地址,則源端口號(hào)幾位服務(wù)器端口號(hào)。我們通過(guò)這種方式來(lái)處理原始數(shù)據(jù),進(jìn)而獲取需要的數(shù)據(jù)信息。最后,再對(duì)處理后的數(shù)據(jù)通過(guò)流量活動(dòng)情況、協(xié)議類(lèi)型、流量趨勢(shì)等幾個(gè)方面進(jìn)行統(tǒng)計(jì)分析,獲得最后的數(shù)據(jù)。
1.3.4 圖表顯示模塊
圖表顯示模塊主要的功能是實(shí)現(xiàn)處理后的數(shù)據(jù)以圖表的方式展示。通過(guò)界面中的按鈕選擇查看不同的數(shù)據(jù)分析圖表。
本模塊的實(shí)現(xiàn)方法為如下。使用來(lái)源于JAVA開(kāi)源項(xiàng)目中JFreeChart來(lái)實(shí)現(xiàn)圖表。首先構(gòu)建圖表的數(shù)據(jù)集,之后通過(guò)抽象類(lèi)ChartFactory提供的createBarChart、createPieChart、createLineChart等方法來(lái)實(shí)現(xiàn)諸如條形圖、餅圖、折線圖等。
1.3.5 界面美化模塊
通過(guò)引用第三方的外觀插件實(shí)現(xiàn)界面的美化,提升界面友好性。在運(yùn)行程序之前,首先通過(guò)其提供的方法在主方法代碼前加入關(guān)鍵代碼以實(shí)現(xiàn)第三方外觀插件加載,實(shí)現(xiàn)系統(tǒng)界面的美化。
2 結(jié)束語(yǔ)
本文設(shè)計(jì)和實(shí)現(xiàn)了一種互聯(lián)網(wǎng)用戶行為分析系統(tǒng),通過(guò)對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)包進(jìn)行捕獲和分析,將看似無(wú)規(guī)律的網(wǎng)絡(luò)行為數(shù)據(jù)進(jìn)行加工、統(tǒng)計(jì)、分析和總結(jié),從而獲得具有一定價(jià)值的、可以反映用戶網(wǎng)絡(luò)行為特征的數(shù)據(jù)。本系統(tǒng)產(chǎn)生的網(wǎng)絡(luò)用戶行為分析結(jié)果可以幫助家長(zhǎng)掌控和指導(dǎo)青少年正確的上網(wǎng)、幫助網(wǎng)絡(luò)用戶了解自身網(wǎng)絡(luò)行為習(xí)慣、發(fā)現(xiàn)誤操作行為或不經(jīng)意的惡意行為,同時(shí),它還可以為制定有針對(duì)性的網(wǎng)絡(luò)營(yíng)銷(xiāo)策略提供科學(xué)的依據(jù)。
參考文獻(xiàn):
[1]李鐘尉,陳丹丹.軟件開(kāi)發(fā)實(shí)戰(zhàn)1200例[M].北京:清華大學(xué)出版社,2011.
[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第六版)[M].北京:電子工業(yè)出版社,2013.
[3]施瓦茨(Schwartz,B.)(美),扎伊采夫(Zaitsev,P.)(美),特卡琴科(Tkachenko,V.)(美).高性能MySQL(第3版)[M].北京:電子工業(yè)出版社,2013.
作者簡(jiǎn)介:楊曉(1992.03-),男,安徽靈璧人,本科在讀,研究方向:軟件工程。
作者單位:樂(lè)山師范學(xué)院 計(jì)算機(jī)科學(xué)學(xué)院,四川樂(lè)山 614000
基金項(xiàng)目:國(guó)家級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):201310649011);國(guó)家自然科學(xué)基金項(xiàng)目(項(xiàng)目編號(hào):61103249);樂(lè)山市科技計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):13GZD051),人工智能四川省重點(diǎn)實(shí)驗(yàn)室開(kāi)放基金項(xiàng)目(項(xiàng)目編號(hào):2013RYJ04和2013RZJ03)。