本發(fā)明涉及反爬蟲技術領域。更具體地說,本發(fā)明涉及能夠自學習的反爬蟲系統(tǒng)和方法。
背景技術:
爬數(shù)據(jù)是指未經(jīng)服務器主允許,通過軟件程序模擬人的操作,抓取頁面上的數(shù)據(jù)。常見的反爬數(shù)據(jù)的方法有兩個:1)通過給頁面設置驗證碼進行驗證,因為這些驗證碼計算機難以識別。但是有的計算機還是能夠識別,而有的會通過雇人識別的方式進行識別,因此不能根本解決問題;2)通過監(jiān)測IP地址的異常行為,比如某個IP地址的客戶端不是用瀏覽器調用,或者說調用速度過快,調用量過大等。設置規(guī)則,封這些IP。但是這樣會導致反應速度比較慢,在發(fā)現(xiàn)異常之后,需要人為設定規(guī)則,才能實現(xiàn)反爬。而用戶往往會通過IP代理的方式,調用各種偽IP來爬數(shù)據(jù)。因此,必須設計一種能夠自己學習反爬規(guī)則的系統(tǒng)和方法。
技術實現(xiàn)要素:
本發(fā)明的一個目的是提供一種能夠從不正常訪問行為的訪問日志提取出新的黑名單規(guī)則,以不斷更新黑名單規(guī)則庫,進而來進行反爬的系統(tǒng)和方法。
為了實現(xiàn)根據(jù)本發(fā)明的這些目的和其它優(yōu)點,提供了一種反爬蟲系統(tǒng),包括:
分析模塊,其判斷訪問行為是否正常;
獲取模塊,其獲取經(jīng)所述分析模塊判斷為不正常訪問行為的訪問日志;
學習模塊,其具有可更新的黑名單規(guī)則庫,所述學習模塊根據(jù)不正常訪問行為的訪問日志提取出新的黑名單規(guī)則,以更新所述黑名單規(guī)則庫;
過濾模塊,其禁止所述黑名單規(guī)則庫所囊括的訪問行為。
優(yōu)選的是,所述的反爬蟲系統(tǒng),所述過濾模塊存儲可更新的IP黑名單,所述過濾模塊將所述黑名單規(guī)則庫所囊括的訪問行為對應的IP地址加入所述IP黑名單,并禁止該IP地址的訪問行為。
優(yōu)選的是,所述的反爬蟲系統(tǒng),若一訪問行為不被所述黑名單規(guī)則庫囊括,則調用所述分析模塊對該訪問行為進行分析,如果該訪問行為為不正常,則所述過濾模塊禁止該訪問行為;若一訪問行為被所述黑名單規(guī)則庫囊括,則不調用所述分析模塊繼續(xù)對該訪問行為進行分析。
優(yōu)選的是,所述的反爬蟲系統(tǒng),所述分析模塊判斷訪問行為是否正常的方法包括:
獲取訪問行為在第一預設時間段內的訪問次數(shù),并且檢測是否存在鼠標行為;
若在第一預設時間內的訪問次數(shù)超過預設閾值,且未檢測到鼠標行為,則判斷該訪問行為為不正常。
優(yōu)選的是,所述的反爬蟲系統(tǒng),所述學習模塊根據(jù)不正常訪問行為的訪問日志提取出新的黑名單規(guī)則的方法包括:
計算不正常訪問行為在第一預設時間段內的單位時間訪問次數(shù)和單位時間預設閾值;提取的新的黑名單規(guī)則為:訪問行為的單位時間訪問次數(shù)高于單位時間預設閾值。
優(yōu)選的是,所述的反爬蟲系統(tǒng),所述分析模塊判斷訪問行為是否正常的方法包括:
獲取訪問行為在各第二預設時間段內的訪問次數(shù)以及各訪問次數(shù)對應的時間點,然后將第二預設時間段劃分為N個分時間段,分別計算各個分時間段的訪問頻率;
若N個分時間段的訪問頻率均低于第一閾值,則將下一個第二預設時間段劃分為N/2個分時間段,然后分別計算各個分時間段的訪問頻率;
若N個分時間段的訪問頻率均高于第二閾值,則將下一個第二預設時間段劃分為2N個分時間段,然后分別計算各個分時間段的訪問頻率;
若N個分時間段的訪問頻率均高于第一閾值并低于第二閾值,則將下一個第二預設時間段劃分為N個分時間段,然后分別計算各個分時間段的訪問頻率;
其中,若訪問行為在任一分時間段內的訪問頻率高于頻率閾值,則訪問行為為不正常;
其中,N≥10;
其中,第一閾值為頻率閾值的1/4,第二閾值為頻率閾值的3/4。
一種反爬蟲方法,包括:
判斷訪問行為是否正常;
獲取經(jīng)判斷為不正常訪問行為的訪問日志;
根據(jù)不正常訪問行為的訪問日志提取出新的黑名單規(guī)則,以更新黑名單規(guī)則庫;
禁止所述黑名單規(guī)則庫所囊括的訪問行為。
優(yōu)選的是,所述的反爬蟲方法,還包括:
將所述黑名單規(guī)則庫所囊括的訪問行為對應的IP地址加入所述IP黑名單,并禁止該IP地址的訪問行為。
優(yōu)選的是,所述的反爬蟲方法,還包括:
若一訪問行為不被所述黑名單規(guī)則庫囊括,則對該訪問行為進行分析,如果該訪問行為為不正常,則禁止該訪問行為;若一訪問行為被所述黑名單規(guī)則庫囊括,則不繼續(xù)對該訪問行為進行分析。
優(yōu)選的是,所述的反爬蟲方法,判斷訪問行為是否正常的方法包括:
獲取訪問行為在第一預設時間段內的訪問次數(shù),并且檢測是否存在鼠標行為;
若在第一預設時間內的訪問次數(shù)超過預設閾值,且未檢測到鼠標行為,則判斷該訪問行為為不正常。
本發(fā)明至少包括以下有益效果:
本發(fā)明一方面可以根據(jù)分析模塊的分析進行反爬,另一方面學習模塊能夠從不正常訪問行為的訪問日志提取出新的黑名單規(guī)則,不斷更新黑名單規(guī)則庫,進而可以直接根據(jù)黑名單規(guī)則庫對訪問行為進行封禁,兩者結合兼具反爬速度和反爬準確度,相比于只用分析模塊,反爬速度明顯提升。
本發(fā)明的其它優(yōu)點、目標和特征將部分通過下面的說明體現(xiàn),部分還將通過對本發(fā)明的研究和實踐而為本領域的技術人員所理解。
具體實施方式
下面結合實例對本發(fā)明做進一步的詳細說明,以令本領域技術人員參照說明書文字能夠據(jù)以實施。
本發(fā)明提供一種反爬蟲系統(tǒng),包括:
分析模塊,其判斷訪問行為是否正常;
獲取模塊,其獲取經(jīng)所述分析模塊判斷為不正常訪問行為的訪問日志;
學習模塊,其具有可更新的黑名單規(guī)則庫,所述學習模塊根據(jù)不正常訪問行為的訪問日志提取出新的黑名單規(guī)則,以更新所述黑名單規(guī)則庫;
過濾模塊,其禁止所述黑名單規(guī)則庫所囊括的訪問行為。
在上述技術方案中,分析模塊、獲取模塊、學習模塊和過濾模塊均為獨立的服務器群,所以在硬件上具有很高的分析性能和效率。分析模塊對訪問行為的分析方法與現(xiàn)有技術中的分析方法相同,比如根據(jù)訪問行為的IP、訪問時間和訪問次數(shù)來判斷是否為正常訪問行為,例如,一個IP在三個小時以上的時間內訪問頁面次數(shù)超過3000次,且檢測不到鼠標,就認為是非正常訪問。獲取模塊用于獲取客戶端的訪問日志。學習模塊根據(jù)分析模塊得出的非正常訪問,提取出新的黑名單規(guī)則,該新的黑名單規(guī)則可以直接與分析模塊對該非正常訪問的判斷規(guī)則相同,也可以是該非正常訪問的判斷規(guī)則的改進。這樣,分析模塊、獲取模塊和學習模塊重復工作,不斷更新黑名單規(guī)則庫。過濾模塊將下一個訪問行為與黑名單規(guī)則庫中的黑名單規(guī)則進行比較,若訪問行為符合其中一個黑名單規(guī)則,則禁止該訪問行為。
在另一種實例中,所述的反爬蟲系統(tǒng),所述過濾模塊存儲可更新的IP黑名單,所述過濾模塊將所述黑名單規(guī)則庫所囊括的訪問行為對應的IP地址加入所述IP黑名單,并禁止該IP地址的訪問行為。這里,也可以根據(jù)黑名單規(guī)則庫不斷充實IP黑名單,使系統(tǒng)根據(jù)IP黑名單直接封禁已經(jīng)出現(xiàn)過非正常訪問的IP,不用再比較訪問行為與黑名單規(guī)則庫。
在另一種實例中,所述的反爬蟲系統(tǒng),若一訪問行為不被所述黑名單規(guī)則庫囊括,則調用所述分析模塊對該訪問行為進行分析,如果該訪問行為為不正常,則所述過濾模塊禁止該訪問行為;若一訪問行為被所述黑名單規(guī)則庫囊括,則不調用所述分析模塊繼續(xù)對該訪問行為進行分析。這里,對分析模塊的調用作了優(yōu)化,如果一訪問行為符合一種黑名單規(guī)則,則封禁該訪問行為,而不再調用分析模塊進行分析,如果一訪問行為不符合任何一種黑名單規(guī)則,則調用分析模塊進行分析其是否應該封禁。
在另一種實例中,所述的反爬蟲系統(tǒng),所述分析模塊判斷訪問行為是否正常的方法包括:
獲取訪問行為在第一預設時間段內的訪問次數(shù),并且檢測是否存在鼠標行為;
若在第一預設時間內的訪問次數(shù)超過預設閾值,且未檢測到鼠標行為,則判斷該訪問行為為不正常。
上述技術方案提供了一種判斷訪問行為是否正常的可行方法,即判斷訪問行為在一定時間段內的訪問次數(shù)是否超過預設閾值,若超過,且未檢測到鼠標行為,則判定該訪問行為不正常。例如,分析模塊的判斷規(guī)則是一個IP在三個小時以上的時間內訪問頁面次數(shù)超過3000次,且檢測不到鼠標,認為是非正常訪問。
在另一種實例中,所述的反爬蟲系統(tǒng),所述學習模塊根據(jù)不正常訪問行為的訪問日志提取出新的黑名單規(guī)則的方法包括:
計算不正常訪問行為在第一預設時間段內的單位時間訪問次數(shù)和單位時間預設閾值;提取的新的黑名單規(guī)則為:訪問行為的單位時間訪問次數(shù)高于單位時間預設閾值。
上述技術方案提供了從不正常訪問行為中提取新的黑名單規(guī)則的方法,即用訪問次數(shù)和預設閾值分別除以第一預設時間,得到單位時間訪問次數(shù)和單位時間預設閾值,新的黑名單規(guī)則為:訪問行為的單位時間訪問次數(shù)高于單位時間預設閾值,且未檢測到鼠標行為。即提取的黑名單規(guī)則相比與分析模塊的判斷規(guī)則更加靈活、簡便。例如,某次分析模塊檢測到了鼠標,但這個IP在三個小時以上的時間內訪問頁面次數(shù)也超過3000次,最終分析模塊認定這個訪問也屬于非正常訪問,則分析模塊會將這些訪問日志發(fā)給學習模塊作為負樣本(之前學習模塊也會得到一些正樣本和負樣本供學習)。學習模塊會根據(jù)這些負樣本,提取出新的黑名單規(guī)則,供下次使用。例如在第二天,另一個IP的訪問頻率也達到了每小時一千次,雖然還沒有達到三個小時,分析模塊還沒有認定這個訪問屬于非正常訪問,而學習模塊的黑名單規(guī)則庫已經(jīng)囊括了這種非正常訪問。
在另一種實例中,所述的反爬蟲系統(tǒng),所述分析模塊判斷訪問行為是否正常的方法包括:
獲取訪問行為在各第二預設時間段內的訪問次數(shù)以及各訪問次數(shù)對應的時間點,然后將第二預設時間段劃分為N個分時間段,分別計算各個分時間段的訪問頻率;
若N個分時間段的訪問頻率均低于第一閾值,則將下一個第二預設時間段劃分為N/2個分時間段,然后分別計算各個分時間段的訪問頻率;
若N個分時間段的訪問頻率均高于第二閾值,則將下一個第二預設時間段劃分為2N個分時間段,然后分別計算各個分時間段的訪問頻率;
若N個分時間段的訪問頻率均高于第一閾值并低于第二閾值,則將下一個第二預設時間段劃分為N個分時間段,然后分別計算各個分時間段的訪問頻率;
其中,若訪問行為在任一分時間段內的訪問頻率高于頻率閾值,則訪問行為為不正常;
其中,N≥10;
其中,第一閾值為頻率閾值的1/4,第二閾值為頻率閾值的3/4。
上述技術方案提供了一種分析模塊判斷訪問行為是否正常的方法,即將第二預設時間段分為若干分時間段,分別用各分時間段的訪問次數(shù)除以分時間段的時間長度計算得到各分時間段的訪問頻率,然后將各分時間段的訪問頻率與頻率閾值比對,若其中一個訪問頻率高于頻率閾值,則判斷該訪問行為不正常;這樣可以更準確地識別爬蟲,避免爬蟲利用系統(tǒng)漏動時而提高訪問頻率時而降低訪問頻率。為了減少計算量,本發(fā)明還在各分時間段的訪問頻率低于第一閾值時,減少訪問頻率技術次數(shù),在訪問頻率高于第二閾值時,提高訪問頻率計算次數(shù),防止漏報爬蟲。本發(fā)明還提供了第一閾值和第二閾值的優(yōu)選值以及減少計算訪問頻率次數(shù)的優(yōu)選值。
本發(fā)明還提供一種反爬蟲方法,包括:
判斷訪問行為是否正常;
獲取經(jīng)判斷為不正常訪問行為的訪問日志;
根據(jù)不正常訪問行為的訪問日志提取出新的黑名單規(guī)則,以更新黑名單規(guī)則庫;
禁止所述黑名單規(guī)則庫所囊括的訪問行為。
在上述技術方案中,首先對訪問行為的分析方法與現(xiàn)有技術中的分析方法相同,比如根據(jù)訪問行為的IP、訪問時間和訪問次數(shù)來判斷是否為正常訪問行為,例如,一個IP在三個小時以上的時間內訪問頁面次數(shù)超過3000次,且檢測不到鼠標,就認為是非正常訪問。然后獲取客戶端的訪問日志。隨后根據(jù)非正常訪問提取出新的黑名單規(guī)則,該新的黑名單規(guī)則可以直接與該非正常訪問的判斷規(guī)則相同,也可以是該非正常訪問的判斷規(guī)則的改進。這樣,就可以不斷更新黑名單規(guī)則庫,并將下一個訪問行為與黑名單規(guī)則庫中的黑名單規(guī)則進行比較,若訪問行為符合其中一個黑名單規(guī)則,則禁止該訪問行為。
在另一種實例中,所述的反爬蟲方法,還包括:
將所述黑名單規(guī)則庫所囊括的訪問行為對應的IP地址加入所述IP黑名單,并禁止該IP地址的訪問行為。這里,也可以根據(jù)黑名單規(guī)則庫不斷充實IP黑名單,使系統(tǒng)根據(jù)IP黑名單直接封禁已經(jīng)出現(xiàn)過非正常訪問的IP,不用再比較訪問行為與黑名單規(guī)則庫。
在另一種實例中,所述的反爬蟲方法,還包括:
若一訪問行為不被所述黑名單規(guī)則庫囊括,則對該訪問行為進行分析,如果該訪問行為為不正常,則禁止該訪問行為;若一訪問行為被所述黑名單規(guī)則庫囊括,則不繼續(xù)對該訪問行為進行分析。這里,對分析的調用作了優(yōu)化,如果一訪問行為符合一種黑名單規(guī)則,則封禁該訪問行為,而不再進行分析,如果一訪問行為不符合任何一種黑名單規(guī)則,則繼續(xù)進行分析其是否應該封禁。
在另一種實例中,所述的反爬蟲方法,判斷訪問行為是否正常的方法包括:
獲取訪問行為在第一預設時間段內的訪問次數(shù),并且檢測是否存在鼠標行為;
若在第一預設時間內的訪問次數(shù)超過預設閾值,且未檢測到鼠標行為,則判斷該訪問行為為不正常。上述技術方案提供了一種判斷訪問行為是否正常的可行方法,即判斷訪問行為在一定時間段內的訪問次數(shù)是否超過預設閾值,若超過,且未檢測到鼠標行為,則判定該訪問行為不正常。例如,判斷規(guī)則是一個IP在三個小時以上的時間內訪問頁面次數(shù)超過3000次,且檢測不到鼠標,符合該規(guī)則就認為是非正常訪問。
盡管本發(fā)明的實施方案已公開如上,但其并不僅僅限于說明書和實施方式中所列運用,它完全可以被適用于各種適合本發(fā)明的領域,對于熟悉本領域的人員而言,可容易地實現(xiàn)另外的修改,因此在不背離權利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細節(jié)和這里示出與描述的實例。