文/郭思琦
摘要:近年來,高校圖書館資源惡意下載頻發,一旦發現則停止整個高校的訪問權限,嚴重影響正常用戶的使用。目前,針對上述問題的解決方案對具有偽裝能力的低速隨機時間間隔爬蟲效果欠佳。為解決以上問題,本文提出一種基于滑動事件窗口的惡意下載檢測思路,把引入文本內容的主題相關性作為惡意下載檢測依據。與傳統的基于特征的檢測方法相比較,我們的方法對低速的隨機時間間隔爬蟲具有良好的識別效果。
高校為了給在校師生創造良好的科研環境,投入大量資金購買電子資源,在校師生可通過授權IP/IP地址段對電子資源進行免費下載。然而當前高校惡意下載頻發,電子資源商基于授權IP/IP地址段無法精確判斷惡意下載用戶身份,只能對違規高校立即停止其使用權限,嚴重影響校內其他師生對電子資源的正常使用。因此,高校迫切需要有效的圖書館惡意下載檢測系統,能夠早于電子資源商發現并制止惡意下載行為,識別惡意下載肇事用戶,及時追責。
國內已有一些高校根據自身情況研究并實現了高校圖書館惡意下載檢測系統,如:清華大學圖書館的“電子資源訪問管理與控制系統”[1],上海交通大學圖書館的“高校電子資源訪問控制管理系統”[2],南京航空航天大學的“基于使用控制模型的防惡意下載系統”[3],以及北京郵電大學的“基于Snort的高校圖書館惡意下載檢測系統”[4]等。但上述系統都是進行基于下載頻率閾值或流量閾值的檢測,誤報率較高,且無法分辨是由于個人的違規行為還是多人同時下載導致的。
為解決上述問題,本文針對北京郵電大學的圖書館資源訪問環境,提出一種利用主題相關性對用戶下載行為進行判定的思路。該思路通過聯動反向代理收集用戶下載行為數據,通過用戶下載的所有圖書館資源間的主題相關性大小進行惡意下載檢測,并通過聯動校園內身份認證等系統,實現精確到人的惡意下載結果處理。
本文組織結構如下:第一部分介紹北京郵電大學圖書館資源訪問環境;第二部分介紹基于滑動事件窗口的圖書館資源惡意下載檢測思路,并詳細闡釋其實現步驟;第三部分進行實驗驗證;第四章對全文進行總結。
北京郵電大學圖書館為解決圖書館資源訪問管理以及用量統計分析等問題,部署了反向代理,用戶對圖書館資源訪問的環境如圖1所示。
北京郵電大學校內用戶在對圖書館資源進行訪問前需要通過認證系統進行驗證,登錄網關并獲取可用IP。隨后用戶通過反向代理對所需的圖書館資源進行訪問。在該過程中,認證系統中存有當前所有在線用戶賬號及IP信息,反向代理可獲取用戶所有圖書館資源訪問請求及圖書館資源返回的頁面內容。

圖 1 北京郵電大學圖書館資源訪問環境
本文所提出的思路是在滑動事件窗口內對用戶下載的文獻進行主題聚類,分析其是否主題相關,進而進行惡意下載檢測判斷。整個方法中數據處理的具體流程如圖2所示。
1.通過反向代理收集HTTP報文及資源頁面內容,獲得以IP為標識的用戶請求及資源主題數據。
2.與IP對應的賬號關聯,生成以賬號為標識的用戶行為數據。
3.提取主題信息,對其中的摘要進行主題句的提取,降低主題間的差異。

圖 2 各步驟間的數據處理流程
4.根據用戶賬號構建滑動事件窗口。
5.對構建完畢的滑動事件窗口進行文獻主題聚類。
6.依據聚類結果進行惡意下載判定。
以下對方法中的各關鍵步驟進行詳細說明。
反向代理對接電子資源庫,收集資源訪問請求及資源返回的結果,從中獲取請求URL相關主題信息,包括用戶搜索結果、論文標題、摘要等。
電子資源庫的搜索結果頁以及詳情頁的URL是靜態明文,而下載鏈接URL則是動態密文,且搜索結果頁中的下載鏈接與詳情頁中的下載鏈接分別加密。本文采用通過下載鏈接獲取相關主題信息。
1.標題獲取:搜索結果頁中包括標題及其對應的動態加密的下載鏈接。若用戶直接通過搜索結果頁下載,則直接獲取標題作為主題。
2.摘要獲取:若用戶通過詳情頁中鏈接下載,則HTTP報文中的referer直接指向詳情頁。可通過詳情頁中特殊的HTML標簽,獲取摘要主題信息。
另外,認證系統實時推送用戶上線信息,更新[IP→賬號]映射關系表,由此獲取IP對應賬號,與主題信息關聯整合。
首先對主題進行統一處理,提取摘要主題句,規范主題信息,便于計算。
采用基于詞向量語義相似的WMD距離表示句子距離,利用改進后的Text Rank算法提取摘要主題句,包括以下步驟:詞向量表示與訓練、句子相似度計算、Text Rank算法迭代計算、依據文本結構特征優化結果[5],如圖3所示。

圖 3 摘要主題句提取流程
本文利用中文維基百科作為訓練語料以及詞向量模型Word2Vec開源工具包,對詞向量進行訓練。利用已獲得的詞向量,計算句子間WMD距離,如公式(1)所示:

其中, d,d'∈ Rn為兩個句子的詞頻向量;為詞語間互相轉換的運輸成本,運輸成本最小化問題可通過Hungarian算法解決。

在獲取各句子間相似度后,通過Text Rank算法計算句子權重,選取權重最高的句子作為主題句。
將摘要V視為由其n個句子Vi(1≤i≤n)組成的集合,以Vi為節點,Vi與Vj(1≤j≤n)間的相似關系作為邊,構建Text Rank網絡圖G。通過公式(2)可推出n個句子兩兩計算其句子相似度為一個n×n的矩陣,令其為矩陣Sn×n,可得公式(3):

根據網絡圖G以及Sn×n,可通過迭代計算得出各節點的權重,如公式(4):

其中WS(Vi)是節點Vi的權重,In(Vi)表示指向的所有節點的集合,Out(Vi)表示Vi指向的所有節點的集合,d為阻尼系數,一般設置為0.85。將各節點初始權重設為1/n,當相鄰兩次迭代計算后其權重變化差別趨近于零時,停止迭代,獲得句子權重值。
最后,根據摘要的文本結構特性再次進行權重調整。關于摘要的文本結構研究[6-8]統計表明,方法與結果在摘要中占據重要地位,與大眾對“學術論文就應該突出科學方法及其可獲得的結果”的普遍認知一致。方法和結果更能表達學術論文的主題,且排布順序在摘要中居中偏后的位置,因此我們將該位置的句子適當增加權重,得到加權公式(5):

其中x表示句子在摘要中的位置百分比,從前往后表示為0到1;e為可調整的閾值,本課題令e=1。可得優化后的權重公式為:

之后對多個并行的用戶進行基于用戶賬號的滑動事件窗口構建。
由于低速的隨機時間間隔爬蟲與用戶正常的圖書館資源檢索與下載行為均具有時間隨機性,因此基于時間特征的在定長時間內的惡意下載檢測機制失效。因此,本文以滑動窗口[9-10]為理論基礎,設計了滑動事件窗口,將一次下載行為定義為一個事件,在滑動窗口內進行惡意下載檢測,實現檢測的時間隨機性。
設滑動事件窗口默認長度為w,實際長度為w’,滑動步長為v(1≤v<w),標記變量為flag,時間限定為t,一次文獻下載請求為一個事件,t時間可獲取的事件數量為n,則滑動事件窗口算法步驟如下:
1.初始化標記變量flag,從flag處實時獲取到一個用戶請求事件,成為滑動窗口內的第一個事件;
2.在繼續實時獲取到一個用戶請求事件時,判斷該事件的發生時間是否在窗口內第一個事件的t時間內,若是,則將該事件放入滑動窗口內,轉到步驟3);若該事件的發生時間已超過窗口內第一個事件后的t時間,則轉到步驟4);
3.判斷該滑動事件窗口大小是否已滿足默認長度,若是,則將滑動事件窗口發送至聚類算法,并跳到步驟5),否則轉到步驟6);
4.判斷當前窗口內的事件數量是否大于v,若是,則將滑動事件窗口發送至聚類算法,并跳到步驟5),否則直接跳到步驟6);
5.令flag=flag+v,回到步驟1)開始重新構建滑動事件窗口;
6.令flag=n,回到步驟1)開始重新構建滑動事件窗口。
本文采用改進后的AP聚類算法對滑動事件窗口內的主題信息進行聚類。
AP聚類算法無需特殊結構的樣本數據,依據的也是n個樣本數據點間的相似度,可形成如公式(3)的由n個樣本間的相似度構成的n×n相似度矩陣Sn×n。
AP算法是對各個點的吸引值與歸屬值不斷更新的過程,直到當相鄰兩次迭代計算后各信息值差別趨近于零時,停止迭代,獲得自動產生的若干個類中心,并將其余的樣本數據點分配到對應的類簇中,具體步驟如下:
1.計算初始相似度矩陣Sn×n,可直接套用摘要主題句提取中的句子相似度計算方法。
2.對偏好值(即矩陣對角線上的值)賦初值,初始化矩陣[r(i,k)]、[a(i,k)]為0。
3.計算樣本點間的吸引度矩陣:

其中a(i,j)表示除點xk以外的候選類中心xj對于xi的歸屬度值。
4.計算樣本點間的歸屬度矩陣:

5.更新吸引度與歸屬度矩陣:

其中λ是收斂系數,用于調整算法的收斂速度和迭代過程的穩定性。

6.若迭代次數超過設定的最大值,或當聚類中心在兩次相鄰迭代中不改變時,停止迭代,獲得最后的各類中心,否則返回步驟2)。
獲得聚類中心后,需要歸類剩余文獻。傳統AP算法中將數據點歸類至距離最小的聚類中心所在的類簇中。這種強制歸類要求所有剩余的數據點必被歸類至某一類簇中,而針對科技文獻,若是某一文獻對所有聚類中心的距離都非常大,則該文獻應當是離散的,不能被歸類至任何類簇中。
因此本文對AP算法的歸類限制進行改進,在文獻歸類時增加文獻到聚類中心距離限制:
1.若到任意聚類中心的距離<distance,則可將文獻歸類至符合要求的聚類中心。
2.若到所有聚類中心的距離>distance,則該文獻離散,表現為單獨成為一個類簇。
其中distance用來調整歸類的嚴格程度。
在獲得滑動窗口內的聚類結果后,通過分析最大主題簇對窗口的占比判斷窗口內用戶請求是否主題相關。
對最大主題簇中所含文獻的數量進行統計,計算其相對于滑動窗口大小的比例:

圖 4 本系統的測試網絡拓撲
2.反之,若,則判定為惡意下載行為。
同樣,P值用來調整惡意下載判斷的嚴格程度。確定為惡意下載后可向反向代理發送肇事用戶賬號、IP,反向代理可利用該信息對其進行動態封禁,避免其影響其他用戶的正常使用。
為驗證本檢測方法的實際效果,對不同用戶類型(包括開源爬蟲以及正常用戶)的圖書館資源訪問及下載請求進行了查準率和誤報率測試。實驗在某高校校園網中進行:

圖 5 三個主題聚類相關參數下的ROC曲線
如圖4所示,通過該高校中部署的反向代理獲取所有對知網訪問的用戶請求信息,該請求信息中包括用戶正常的訪問請求以及可能的惡意下載請求。本文采用了網絡開源的爬蟲對知網圖書館資源下載的行為數據作為惡意下載樣本,并且采集了某高校近年2月20日0:00~2 月 28 日 23:36:09 中知網的訪問下載數據作為正常用戶行為數據。在獲得的數據集中一共包含73965個用戶行為樣本,其中匹配到的文獻下載請求為565條,通過開源爬蟲制造的惡意下載請求為268個,該部分為確定的惡意下載樣本。
經過調整算法中用到的三個參數進行分析,包括滑動事件窗口大小Windows、聚類半徑Radius、以及最大主題簇相對于滑動事件窗口的比例rate,得到不同參數的表現,其ROC曲線圖如圖5所示。
從圖5可以看出,當誤報率在5%時,三個參數的檢測率較為平均,而隨著誤報率的上升,檢測率的上升幅度較小。當誤報率在20%左右,可以明顯看到rate對檢測率有明顯的提升,將三個參數組合后,本文采用windows=20,Radius=0.1,rate=5的組合方式,可對低速的隨機時間間隔爬蟲保證較好的檢測性能,查準率可達89.92%,而誤報率可穩定在6%。
針對圖書館資源惡意下載屢禁不止且無法定位惡意下載用戶的問題,本文針對北京郵電大學的圖書館資源訪問環境,提出了一種基于主題相關性的惡意下載檢測思路。該思路通過滑動事件窗口模擬用戶請求發生的時間隨機性,在較短的時間內以及窗口范圍內集中分析用戶的文獻下載請求是否呈現主題相關,主題不相關則說明用戶發生了惡意下載。
真實環境下的實驗顯示,該思路對爬蟲檢測準確率較高,誤報率較低,且針對低速隨機時間間隔爬蟲,也能很好的識別。另外,基于用戶賬號的檢測方法,可幫助北京郵電大學方便地定位惡意下載用戶真實身份,從根源遏制惡意下載。
在惡意下載檢測技術的基礎上,高校方便地融合用戶管理手段。比如,高校可對用戶賬號引入信用因子,根據檢測到的情況,酌情降低有惡意下載歷史的用戶信用度,根據用戶信用度高低對其權限進行控制,使其付出代價,有意識地培養用戶正確的圖書館資源使用習慣,預防惡意下載。