文/郭思琦
摘要:近年來,高校圖書館資源惡意下載頻發(fā),一旦發(fā)現(xiàn)則停止整個(gè)高校的訪問權(quán)限,嚴(yán)重影響正常用戶的使用。目前,針對上述問題的解決方案對具有偽裝能力的低速隨機(jī)時(shí)間間隔爬蟲效果欠佳。為解決以上問題,本文提出一種基于滑動事件窗口的惡意下載檢測思路,把引入文本內(nèi)容的主題相關(guān)性作為惡意下載檢測依據(jù)。與傳統(tǒng)的基于特征的檢測方法相比較,我們的方法對低速的隨機(jī)時(shí)間間隔爬蟲具有良好的識別效果。
高校為了給在校師生創(chuàng)造良好的科研環(huán)境,投入大量資金購買電子資源,在校師生可通過授權(quán)IP/IP地址段對電子資源進(jìn)行免費(fèi)下載。然而當(dāng)前高校惡意下載頻發(fā),電子資源商基于授權(quán)IP/IP地址段無法精確判斷惡意下載用戶身份,只能對違規(guī)高校立即停止其使用權(quán)限,嚴(yán)重影響校內(nèi)其他師生對電子資源的正常使用。因此,高校迫切需要有效的圖書館惡意下載檢測系統(tǒng),能夠早于電子資源商發(fā)現(xiàn)并制止惡意下載行為,識別惡意下載肇事用戶,及時(shí)追責(zé)。
國內(nèi)已有一些高校根據(jù)自身情況研究并實(shí)現(xiàn)了高校圖書館惡意下載檢測系統(tǒng),如:清華大學(xué)圖書館的“電子資源訪問管理與控制系統(tǒng)”[1],上海交通大學(xué)圖書館的“高校電子資源訪問控制管理系統(tǒng)”[2],南京航空航天大學(xué)的“基于使用控制模型的防惡意下載系統(tǒng)”[3],以及北京郵電大學(xué)的“基于Snort的高校圖書館惡意下載檢測系統(tǒng)”[4]等。但上述系統(tǒng)都是進(jìn)行基于下載頻率閾值或流量閾值的檢測,誤報(bào)率較高,且無法分辨是由于個(gè)人的違規(guī)行為還是多人同時(shí)下載導(dǎo)致的。
為解決上述問題,本文針對北京郵電大學(xué)的圖書館資源訪問環(huán)境,提出一種利用主題相關(guān)性對用戶下載行為進(jìn)行判定的思路。該思路通過聯(lián)動反向代理收集用戶下載行為數(shù)據(jù),通過用戶下載的所有圖書館資源間的主題相關(guān)性大小進(jìn)行惡意下載檢測,并通過聯(lián)動校園內(nèi)身份認(rèn)證等系統(tǒng),實(shí)現(xiàn)精確到人的惡意下載結(jié)果處理。
本文組織結(jié)構(gòu)如下:第一部分介紹北京郵電大學(xué)圖書館資源訪問環(huán)境;第二部分介紹基于滑動事件窗口的圖書館資源惡意下載檢測思路,并詳細(xì)闡釋其實(shí)現(xiàn)步驟;第三部分進(jìn)行實(shí)驗(yàn)驗(yàn)證;第四章對全文進(jìn)行總結(jié)。
北京郵電大學(xué)圖書館為解決圖書館資源訪問管理以及用量統(tǒng)計(jì)分析等問題,部署了反向代理,用戶對圖書館資源訪問的環(huán)境如圖1所示。
北京郵電大學(xué)校內(nèi)用戶在對圖書館資源進(jìn)行訪問前需要通過認(rèn)證系統(tǒng)進(jìn)行驗(yàn)證,登錄網(wǎng)關(guān)并獲取可用IP。隨后用戶通過反向代理對所需的圖書館資源進(jìn)行訪問。在該過程中,認(rèn)證系統(tǒng)中存有當(dāng)前所有在線用戶賬號及IP信息,反向代理可獲取用戶所有圖書館資源訪問請求及圖書館資源返回的頁面內(nèi)容。
圖 1 北京郵電大學(xué)圖書館資源訪問環(huán)境
本文所提出的思路是在滑動事件窗口內(nèi)對用戶下載的文獻(xiàn)進(jìn)行主題聚類,分析其是否主題相關(guān),進(jìn)而進(jìn)行惡意下載檢測判斷。整個(gè)方法中數(shù)據(jù)處理的具體流程如圖2所示。
1.通過反向代理收集HTTP報(bào)文及資源頁面內(nèi)容,獲得以IP為標(biāo)識的用戶請求及資源主題數(shù)據(jù)。
2.與IP對應(yīng)的賬號關(guān)聯(lián),生成以賬號為標(biāo)識的用戶行為數(shù)據(jù)。
3.提取主題信息,對其中的摘要進(jìn)行主題句的提取,降低主題間的差異。
圖 2 各步驟間的數(shù)據(jù)處理流程
4.根據(jù)用戶賬號構(gòu)建滑動事件窗口。
5.對構(gòu)建完畢的滑動事件窗口進(jìn)行文獻(xiàn)主題聚類。
6.依據(jù)聚類結(jié)果進(jìn)行惡意下載判定。
以下對方法中的各關(guān)鍵步驟進(jìn)行詳細(xì)說明。
反向代理對接電子資源庫,收集資源訪問請求及資源返回的結(jié)果,從中獲取請求URL相關(guān)主題信息,包括用戶搜索結(jié)果、論文標(biāo)題、摘要等。
電子資源庫的搜索結(jié)果頁以及詳情頁的URL是靜態(tài)明文,而下載鏈接URL則是動態(tài)密文,且搜索結(jié)果頁中的下載鏈接與詳情頁中的下載鏈接分別加密。本文采用通過下載鏈接獲取相關(guān)主題信息。
1.標(biāo)題獲?。核阉鹘Y(jié)果頁中包括標(biāo)題及其對應(yīng)的動態(tài)加密的下載鏈接。若用戶直接通過搜索結(jié)果頁下載,則直接獲取標(biāo)題作為主題。
2.摘要獲?。喝粲脩敉ㄟ^詳情頁中鏈接下載,則HTTP報(bào)文中的referer直接指向詳情頁。可通過詳情頁中特殊的HTML標(biāo)簽,獲取摘要主題信息。
另外,認(rèn)證系統(tǒng)實(shí)時(shí)推送用戶上線信息,更新[IP→賬號]映射關(guān)系表,由此獲取IP對應(yīng)賬號,與主題信息關(guān)聯(lián)整合。
首先對主題進(jìn)行統(tǒng)一處理,提取摘要主題句,規(guī)范主題信息,便于計(jì)算。
采用基于詞向量語義相似的WMD距離表示句子距離,利用改進(jìn)后的Text Rank算法提取摘要主題句,包括以下步驟:詞向量表示與訓(xùn)練、句子相似度計(jì)算、Text Rank算法迭代計(jì)算、依據(jù)文本結(jié)構(gòu)特征優(yōu)化結(jié)果[5],如圖3所示。
圖 3 摘要主題句提取流程
本文利用中文維基百科作為訓(xùn)練語料以及詞向量模型Word2Vec開源工具包,對詞向量進(jìn)行訓(xùn)練。利用已獲得的詞向量,計(jì)算句子間WMD距離,如公式(1)所示:
其中, d,d'∈ Rn為兩個(gè)句子的詞頻向量;為詞語間互相轉(zhuǎn)換的運(yùn)輸成本,運(yùn)輸成本最小化問題可通過Hungarian算法解決。
在獲取各句子間相似度后,通過Text Rank算法計(jì)算句子權(quán)重,選取權(quán)重最高的句子作為主題句。
將摘要V視為由其n個(gè)句子Vi(1≤i≤n)組成的集合,以Vi為節(jié)點(diǎn),Vi與Vj(1≤j≤n)間的相似關(guān)系作為邊,構(gòu)建Text Rank網(wǎng)絡(luò)圖G。通過公式(2)可推出n個(gè)句子兩兩計(jì)算其句子相似度為一個(gè)n×n的矩陣,令其為矩陣Sn×n,可得公式(3):
根據(jù)網(wǎng)絡(luò)圖G以及Sn×n,可通過迭代計(jì)算得出各節(jié)點(diǎn)的權(quán)重,如公式(4):
其中WS(Vi)是節(jié)點(diǎn)Vi的權(quán)重,In(Vi)表示指向的所有節(jié)點(diǎn)的集合,Out(Vi)表示Vi指向的所有節(jié)點(diǎn)的集合,d為阻尼系數(shù),一般設(shè)置為0.85。將各節(jié)點(diǎn)初始權(quán)重設(shè)為1/n,當(dāng)相鄰兩次迭代計(jì)算后其權(quán)重變化差別趨近于零時(shí),停止迭代,獲得句子權(quán)重值。
最后,根據(jù)摘要的文本結(jié)構(gòu)特性再次進(jìn)行權(quán)重調(diào)整。關(guān)于摘要的文本結(jié)構(gòu)研究[6-8]統(tǒng)計(jì)表明,方法與結(jié)果在摘要中占據(jù)重要地位,與大眾對“學(xué)術(shù)論文就應(yīng)該突出科學(xué)方法及其可獲得的結(jié)果”的普遍認(rèn)知一致。方法和結(jié)果更能表達(dá)學(xué)術(shù)論文的主題,且排布順序在摘要中居中偏后的位置,因此我們將該位置的句子適當(dāng)增加權(quán)重,得到加權(quán)公式(5):
其中x表示句子在摘要中的位置百分比,從前往后表示為0到1;e為可調(diào)整的閾值,本課題令e=1??傻脙?yōu)化后的權(quán)重公式為:
之后對多個(gè)并行的用戶進(jìn)行基于用戶賬號的滑動事件窗口構(gòu)建。
由于低速的隨機(jī)時(shí)間間隔爬蟲與用戶正常的圖書館資源檢索與下載行為均具有時(shí)間隨機(jī)性,因此基于時(shí)間特征的在定長時(shí)間內(nèi)的惡意下載檢測機(jī)制失效。因此,本文以滑動窗口[9-10]為理論基礎(chǔ),設(shè)計(jì)了滑動事件窗口,將一次下載行為定義為一個(gè)事件,在滑動窗口內(nèi)進(jìn)行惡意下載檢測,實(shí)現(xiàn)檢測的時(shí)間隨機(jī)性。
設(shè)滑動事件窗口默認(rèn)長度為w,實(shí)際長度為w’,滑動步長為v(1≤v<w),標(biāo)記變量為flag,時(shí)間限定為t,一次文獻(xiàn)下載請求為一個(gè)事件,t時(shí)間可獲取的事件數(shù)量為n,則滑動事件窗口算法步驟如下:
1.初始化標(biāo)記變量flag,從flag處實(shí)時(shí)獲取到一個(gè)用戶請求事件,成為滑動窗口內(nèi)的第一個(gè)事件;
2.在繼續(xù)實(shí)時(shí)獲取到一個(gè)用戶請求事件時(shí),判斷該事件的發(fā)生時(shí)間是否在窗口內(nèi)第一個(gè)事件的t時(shí)間內(nèi),若是,則將該事件放入滑動窗口內(nèi),轉(zhuǎn)到步驟3);若該事件的發(fā)生時(shí)間已超過窗口內(nèi)第一個(gè)事件后的t時(shí)間,則轉(zhuǎn)到步驟4);
3.判斷該滑動事件窗口大小是否已滿足默認(rèn)長度,若是,則將滑動事件窗口發(fā)送至聚類算法,并跳到步驟5),否則轉(zhuǎn)到步驟6);
4.判斷當(dāng)前窗口內(nèi)的事件數(shù)量是否大于v,若是,則將滑動事件窗口發(fā)送至聚類算法,并跳到步驟5),否則直接跳到步驟6);
5.令flag=flag+v,回到步驟1)開始重新構(gòu)建滑動事件窗口;
6.令flag=n,回到步驟1)開始重新構(gòu)建滑動事件窗口。
本文采用改進(jìn)后的AP聚類算法對滑動事件窗口內(nèi)的主題信息進(jìn)行聚類。
AP聚類算法無需特殊結(jié)構(gòu)的樣本數(shù)據(jù),依據(jù)的也是n個(gè)樣本數(shù)據(jù)點(diǎn)間的相似度,可形成如公式(3)的由n個(gè)樣本間的相似度構(gòu)成的n×n相似度矩陣Sn×n。
AP算法是對各個(gè)點(diǎn)的吸引值與歸屬值不斷更新的過程,直到當(dāng)相鄰兩次迭代計(jì)算后各信息值差別趨近于零時(shí),停止迭代,獲得自動產(chǎn)生的若干個(gè)類中心,并將其余的樣本數(shù)據(jù)點(diǎn)分配到對應(yīng)的類簇中,具體步驟如下:
1.計(jì)算初始相似度矩陣Sn×n,可直接套用摘要主題句提取中的句子相似度計(jì)算方法。
2.對偏好值(即矩陣對角線上的值)賦初值,初始化矩陣[r(i,k)]、[a(i,k)]為0。
3.計(jì)算樣本點(diǎn)間的吸引度矩陣:
其中a(i,j)表示除點(diǎn)xk以外的候選類中心xj對于xi的歸屬度值。
4.計(jì)算樣本點(diǎn)間的歸屬度矩陣:
5.更新吸引度與歸屬度矩陣:
其中λ是收斂系數(shù),用于調(diào)整算法的收斂速度和迭代過程的穩(wěn)定性。
6.若迭代次數(shù)超過設(shè)定的最大值,或當(dāng)聚類中心在兩次相鄰迭代中不改變時(shí),停止迭代,獲得最后的各類中心,否則返回步驟2)。
獲得聚類中心后,需要?dú)w類剩余文獻(xiàn)。傳統(tǒng)AP算法中將數(shù)據(jù)點(diǎn)歸類至距離最小的聚類中心所在的類簇中。這種強(qiáng)制歸類要求所有剩余的數(shù)據(jù)點(diǎn)必被歸類至某一類簇中,而針對科技文獻(xiàn),若是某一文獻(xiàn)對所有聚類中心的距離都非常大,則該文獻(xiàn)應(yīng)當(dāng)是離散的,不能被歸類至任何類簇中。
因此本文對AP算法的歸類限制進(jìn)行改進(jìn),在文獻(xiàn)歸類時(shí)增加文獻(xiàn)到聚類中心距離限制:
1.若到任意聚類中心的距離<distance,則可將文獻(xiàn)歸類至符合要求的聚類中心。
2.若到所有聚類中心的距離>distance,則該文獻(xiàn)離散,表現(xiàn)為單獨(dú)成為一個(gè)類簇。
其中distance用來調(diào)整歸類的嚴(yán)格程度。
在獲得滑動窗口內(nèi)的聚類結(jié)果后,通過分析最大主題簇對窗口的占比判斷窗口內(nèi)用戶請求是否主題相關(guān)。
對最大主題簇中所含文獻(xiàn)的數(shù)量進(jìn)行統(tǒng)計(jì),計(jì)算其相對于滑動窗口大小的比例:
圖 4 本系統(tǒng)的測試網(wǎng)絡(luò)拓?fù)?/p>
2.反之,若,則判定為惡意下載行為。
同樣,P值用來調(diào)整惡意下載判斷的嚴(yán)格程度。確定為惡意下載后可向反向代理發(fā)送肇事用戶賬號、IP,反向代理可利用該信息對其進(jìn)行動態(tài)封禁,避免其影響其他用戶的正常使用。
為驗(yàn)證本檢測方法的實(shí)際效果,對不同用戶類型(包括開源爬蟲以及正常用戶)的圖書館資源訪問及下載請求進(jìn)行了查準(zhǔn)率和誤報(bào)率測試。實(shí)驗(yàn)在某高校校園網(wǎng)中進(jìn)行:
圖 5 三個(gè)主題聚類相關(guān)參數(shù)下的ROC曲線
如圖4所示,通過該高校中部署的反向代理獲取所有對知網(wǎng)訪問的用戶請求信息,該請求信息中包括用戶正常的訪問請求以及可能的惡意下載請求。本文采用了網(wǎng)絡(luò)開源的爬蟲對知網(wǎng)圖書館資源下載的行為數(shù)據(jù)作為惡意下載樣本,并且采集了某高校近年2月20日0:00~2 月 28 日 23:36:09 中知網(wǎng)的訪問下載數(shù)據(jù)作為正常用戶行為數(shù)據(jù)。在獲得的數(shù)據(jù)集中一共包含73965個(gè)用戶行為樣本,其中匹配到的文獻(xiàn)下載請求為565條,通過開源爬蟲制造的惡意下載請求為268個(gè),該部分為確定的惡意下載樣本。
經(jīng)過調(diào)整算法中用到的三個(gè)參數(shù)進(jìn)行分析,包括滑動事件窗口大小Windows、聚類半徑Radius、以及最大主題簇相對于滑動事件窗口的比例rate,得到不同參數(shù)的表現(xiàn),其ROC曲線圖如圖5所示。
從圖5可以看出,當(dāng)誤報(bào)率在5%時(shí),三個(gè)參數(shù)的檢測率較為平均,而隨著誤報(bào)率的上升,檢測率的上升幅度較小。當(dāng)誤報(bào)率在20%左右,可以明顯看到rate對檢測率有明顯的提升,將三個(gè)參數(shù)組合后,本文采用windows=20,Radius=0.1,rate=5的組合方式,可對低速的隨機(jī)時(shí)間間隔爬蟲保證較好的檢測性能,查準(zhǔn)率可達(dá)89.92%,而誤報(bào)率可穩(wěn)定在6%。
針對圖書館資源惡意下載屢禁不止且無法定位惡意下載用戶的問題,本文針對北京郵電大學(xué)的圖書館資源訪問環(huán)境,提出了一種基于主題相關(guān)性的惡意下載檢測思路。該思路通過滑動事件窗口模擬用戶請求發(fā)生的時(shí)間隨機(jī)性,在較短的時(shí)間內(nèi)以及窗口范圍內(nèi)集中分析用戶的文獻(xiàn)下載請求是否呈現(xiàn)主題相關(guān),主題不相關(guān)則說明用戶發(fā)生了惡意下載。
真實(shí)環(huán)境下的實(shí)驗(yàn)顯示,該思路對爬蟲檢測準(zhǔn)確率較高,誤報(bào)率較低,且針對低速隨機(jī)時(shí)間間隔爬蟲,也能很好的識別。另外,基于用戶賬號的檢測方法,可幫助北京郵電大學(xué)方便地定位惡意下載用戶真實(shí)身份,從根源遏制惡意下載。
在惡意下載檢測技術(shù)的基礎(chǔ)上,高校方便地融合用戶管理手段。比如,高??蓪τ脩糍~號引入信用因子,根據(jù)檢測到的情況,酌情降低有惡意下載歷史的用戶信用度,根據(jù)用戶信用度高低對其權(quán)限進(jìn)行控制,使其付出代價(jià),有意識地培養(yǎng)用戶正確的圖書館資源使用習(xí)慣,預(yù)防惡意下載。