劉宇 程學林



摘要:網絡爬蟲指的是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。但是實際上爬蟲還分為正規爬蟲和非正規爬蟲,所謂的正規爬蟲就是通過正規途徑和手段獲取網站信息和數據,非正規爬蟲又稱為惡意爬蟲,主要用于非法盜竊數據,給網站服務器增加負擔以及偷窺一些敏感信息數據等。本文將會基于決策樹算法設計一種新爬蟲檢測技術,并根據爬蟲檢測結果提供一些反爬機制,對惡意爬蟲進行進行評屏蔽等,進而實現對網站和服務器以及部分數據,信息的保護,降低互聯網資源重疊現象。
關鍵詞:網絡爬蟲;爬蟲檢測;惡意爬蟲;反爬蟲
0引言
隨著網絡的迅速發展,萬維網成為大量信息的載體,如何有效地提取并利用這些信息成為一個巨大的挑戰。為了快速從互聯網中獲得大量目標數據,就需要編寫一些腳本程序,按照一定規律批量獲取數據,這就是所謂的爬蟲,但是在一部分通過正常途徑,即先請求網站Robot.tXt之后,再在不影響對方網站前提下,獲取相關資料的正規爬蟲之外,還有一些惡意爬蟲,它們通常表現為無論網站是的Robot.txt是否允許爬蟲爬取,都會強制性,批量性獲取網站數據,同時會在短時間內大量的發起請求,還有一部分惡意爬蟲會惡意制造虛假PV,模擬點擊付費廣告鏈接,批量檢索網站禁止爬蟲爬取信息,用于商業性質分析等。這類爬蟲在給互聯網帶來巨大的機器流量同時,也會給網站帶來極大的負擔,使得網站性能大大降低,目前互聯網內有40%-60%的流量來自爬蟲或者相關機器流量,已經嚴重妨礙核威脅互聯網相關的產業健康發展!
為了應對爬蟲帶來的危害,國內外相關學者和各大公司企業,教育機構甚至很多個人網站站長等,都對爬蟲檢測,識別等技術進行了深入的研究,例如目前常見的爬蟲檢測有判斷請求的Headers,查看請求頻率等眾多方法。但是由于常見的這些檢測方法并不能靈活快速的檢測請求類型,所以本文將會基于決策樹算法建立一種新的爬蟲檢測方式,同時做一些相關的反爬設計。
1請求與爬蟲檢測
對于網絡爬蟲的檢測,其實就是對請求的分析,一般情況下判斷一個請求是否是爬蟲,通常是:
(1)單位時問內同一IP請求頻率:如果在某一段時間內,某個IP發出大量請求,而這種請求又不是正常人工可以發出的(例如一分鐘發出上千次請求等),那么可以基本判定該請求屬于爬蟲行為;
(2)單位時間內同一IP請求時間間隔:正常人為訪問時,訪問時間間隔是不固定的,但是很多時候爬蟲的訪問時間間隔是固定的或者在某段時間范圍內,如果同一IP每次發起請求時間間隔都是在一個固定時間間隔內或者波動范圍極小的時間間隔內,那么也可以基本判定該行為屬于爬蟲行為;
(3)User-Agent是否為常用瀏覽器User-Agent:通常情況下每個瀏覽器具有特定的User.Agent,以讓服務器識別該請求是通過哪個瀏覽器發起的,但是很多爬蟲在設計時,并未設置User.Agent,所以如果非常見瀏覽器User-Agent或者帶有編程語言名稱的User-Agent基本可以判定為該行為是爬蟲行為;
(4)請求是否為全部請求:一般情況一個網站如果有圖片或者link標簽等,這樣打開一個網頁通常會加載多個資源,如CSS,Js等,但是爬蟲訪問的時候,通常不會做這些額外的請求。所以當一個請求發起之后,只請求了頁面源代碼而未請求相關關聯資源,那么可以基本判定,該請求是爬蟲行為;
(5)是否請求robot:通常情況,爬蟲都會請求Robot.txt,而用戶是不會請求這個文檔的,所以請求Robot.txt的通常為爬蟲行為,當然也是有一部分爬蟲不會請求該文件的,所以未請求該文檔的并不代表非爬蟲行為;
(6)請求時是否會帶有Cookies:一般情況下爬蟲請求頁面的時候,都不會帶有Cookies,而人為訪問的時候,都會帶有前一頁面或者前一次訪問的Cookies,所以在沒有前一次Cookies的請求中,有極大可能是爬蟲發起的請求;
(7)是否觸發爬蟲陷阱:通常情況下,爬蟲陷阱指的是將Spider訪問引入到能產生無限循環的頁面,或者帶人其他特殊頁面中,正常情況下,人為訪問是不會走人該陷阱的,而爬蟲是“無思維”請求,所以極有可能會自動走入該陷阱。一般情況下走入該陷阱并在陷阱中無法跳出的行為是爬蟲行為。endprint