本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體涉及一種網(wǎng)站服務(wù)器爬蟲識別方法和裝置。
背景技術(shù):
目前互聯(lián)網(wǎng)應(yīng)用十分繁榮。網(wǎng)絡(luò)爬蟲程序會占用被爬網(wǎng)站服務(wù)器的寶貴帶寬和計算資源,另外隨著大數(shù)據(jù)技術(shù)興起,網(wǎng)站數(shù)據(jù)和內(nèi)容資源也日趨成為網(wǎng)站服務(wù)商的核心資產(chǎn)。如何從海量的普通用戶訪問請求中,有效識別爬蟲機器人程序的數(shù)據(jù)爬取行為,已成為各大網(wǎng)站急需解決的主要技術(shù)問題之一。
目前已有反爬蟲工作,往往是每個網(wǎng)站開發(fā)商各自為戰(zhàn),根據(jù)自己的業(yè)務(wù)特點,將反爬蟲內(nèi)置到業(yè)務(wù)服務(wù)器里。但是這一方面增加了各個網(wǎng)站的技術(shù)和業(yè)務(wù)成本,另一方面這樣的技術(shù)方法往往跟網(wǎng)站具體業(yè)務(wù)耦合度太高,不具備可移植性。
另外,即便將反爬蟲邏輯跟網(wǎng)站業(yè)務(wù)服務(wù)器邏輯耦合,還會導致反爬技術(shù)改進升級的麻煩,不能有效的應(yīng)對新的爬蟲技術(shù)和情況。如果因為反爬邏輯升級而重新部署服務(wù)器邏輯,又會提高網(wǎng)站運維成本和提高技術(shù)風險。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于:本發(fā)明的目的在于提供一種網(wǎng)站服務(wù)器爬蟲識別方法和裝置,來區(qū)分正常用戶訪問和爬蟲程序訪問,解決網(wǎng)絡(luò)爬蟲程序?qū)σ话憔W(wǎng)站服務(wù)器的數(shù)據(jù)采集和計算資源占用問題。
本發(fā)明采用的技術(shù)方案如下:
一種網(wǎng)站服務(wù)器爬蟲識別方法,包括以下步驟:
s1:依據(jù)用戶ip地址對訪問用戶進行標記;
s2:對用戶訪問請求進行劃分,將用戶訪問請求中請求資源、請求域名、子域名、訪問路徑相同的用戶訪問請求歸為相同類型的訪問請求;
s3:依據(jù)每類訪問請求的資源類型劃分出核心資源訪問請求;
s4:對訪問用戶的核心資源訪問請求進行連續(xù)性判斷,對非連續(xù)性訪問判斷為非爬蟲訪問,對連續(xù)性訪問繼續(xù)進行下一步;
s5:依據(jù)訪問用戶的核心資源訪問請求的內(nèi)容連續(xù)性、訪問持續(xù)時間、訪問頻度進行爬蟲訪問判斷;
s6:將判斷為爬蟲訪問的用戶進行處理。
進一步的,所述核心資源訪問請求劃分方法為:請求資源類型為展示數(shù)據(jù)內(nèi)容的協(xié)議請求為核心資源訪問請求。如請求資源類型為html,xml,json等涉及展示數(shù)據(jù)內(nèi)容的協(xié)議請求為核心資源訪問請求,相應(yīng)的,請求資源類型為css,js的訪問請求,非核心資源訪問請求。
進一步的,所述連續(xù)訪問判斷為:
設(shè)定連續(xù)訪問閾值,當訪問用戶的相鄰兩次核心資源訪問請求的時間小于連續(xù)訪問閾值時判定用戶為連續(xù)性訪問。
進一步的,所述內(nèi)容連續(xù)性的爬蟲訪問判斷方法為:
對時間連續(xù)的訪問,依據(jù)當前訪問用戶的核心資源訪問請求協(xié)議標記的前次核心資源訪問請求地址進行判斷,如前次核心資源訪問請求地址為非網(wǎng)站主地址url和非歷史訪問地址url,則判定訪問用戶的行為為爬蟲訪問。
進一步的,所述訪問持續(xù)時間的爬蟲訪問判斷方法為:
對時間連續(xù)的訪問,依據(jù)訪問用戶的核心資源訪問請求的訪問持續(xù)時間,設(shè)定持續(xù)訪問閾值,當訪問持續(xù)時間超過持續(xù)訪問閾值時判定訪問用戶的行為為爬蟲訪問。
進一步的,所述訪問頻度的爬蟲訪問判斷步驟為:
s11:設(shè)定時間周期t1,統(tǒng)計每時間周期t1相同類型的核心資源訪問請求頻度為:
f=ncr/t1
其中,ncr指的是在時間周期t1內(nèi)時間連續(xù)的同類型核心資源訪問請求的訪問次數(shù);
s12:對用戶每種同類型核心資源訪問請求的連續(xù)請求,獲取其最近n次的訪問頻度值組[f1,f2,f3,…fn],隨機抽取訪問頻度值中任一值作為基準值fy;
s13:依據(jù)fy計算頻度判定值fs=fy±σ(σ=φfy);其中φ為誤差因子;
s14:判斷訪問頻度值中除基準值fy外的其它n-1個訪問頻度值是否滿足范圍[fy-σ,fy+σ],當n-1個訪問頻度值全部滿足范圍時,通過設(shè)定頻度閾值fz,當基準值fy大于頻度閾值fz時判定用戶訪問為爬蟲訪問。
進一步的,對判定有爬蟲訪問的用戶處理方法為:
依據(jù)網(wǎng)站預設(shè)策略,可以斷開當前用戶連接,并在設(shè)定的禁止訪問時間段內(nèi)禁止用戶的ip對該網(wǎng)站的訪問,也可以投遞該訪問給業(yè)務(wù)服務(wù)器,修改協(xié)議頭增加爬蟲標記字段,由業(yè)務(wù)服務(wù)器側(cè)處理。
進一步的,所述爬蟲訪問判定的次序為:內(nèi)容連續(xù)性判定、訪問頻度判定、訪問持續(xù)時間判定。
一種網(wǎng)站服務(wù)器爬蟲識別的裝置,包括:
來訪用戶標記模塊:對每個來訪用戶,根據(jù)其ip地址進行唯一的標記;
用戶參數(shù)采集統(tǒng)計模塊:對每個用戶每個同類型訪問標記其訪問時間和記錄訪問請求頭,進而標記核心訪問內(nèi)容、時間、頻度;
爬蟲用戶識別模塊:依據(jù)用戶參數(shù)采集統(tǒng)計模塊的數(shù)據(jù)對訪問用戶的核心資源訪問請求的請求時間連續(xù)性、請求內(nèi)容連續(xù)性、訪問持續(xù)時間、訪問頻度進行爬蟲訪問判斷;
爬蟲用戶處理模塊:對認定為爬蟲程序的訪問按網(wǎng)站預設(shè)策略進行處理,包括:斷開訪問鏈接并禁止在設(shè)定時間內(nèi)訪問或傳遞給業(yè)務(wù)服務(wù)器,修改協(xié)議頭增加爬蟲標記字段,由網(wǎng)站服務(wù)器側(cè)處理。
進一步的,所述裝置前置于網(wǎng)站服務(wù)器端。
綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
1、能夠有效識別網(wǎng)絡(luò)爬蟲訪問行為,并根據(jù)用戶設(shè)定策略處理,防止爬蟲訪問耗費網(wǎng)站資源,對網(wǎng)站系統(tǒng)接入能力造成影響。
2、通過多種手段有效識別用戶的爬蟲行為,實現(xiàn)成本低,與網(wǎng)站業(yè)務(wù)耦合度較低,可移植性性強。
3、獨立于網(wǎng)站業(yè)務(wù)服務(wù)器邏輯,易于升級更新,運維成本和技術(shù)風險較低。
4、對判別為爬蟲的請求處理靈活,可以根據(jù)根據(jù)業(yè)務(wù)服務(wù)器需求調(diào)整配置。
附圖說明
圖1為本發(fā)明提供的算法過程流程圖。
圖2為本發(fā)明提供的裝置原理圖。
圖3為本發(fā)明提供的算法過程流程實施例圖。
圖4為本發(fā)明提供的裝置安裝原理圖。
具體實施方式
本說明書中公開的所有特征,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
下面結(jié)合附圖對本發(fā)明作詳細說明。
如圖3所示,本發(fā)明的一種實施流程為:
s10.用來訪用戶ip地址標記來訪用戶c1;
s11.根據(jù)用戶請求完整路徑、請求資源類型,區(qū)分同類型請求訪問;
s12.根據(jù)訪問類型是否頁面或數(shù)據(jù),分離出核心訪問請求cr1,記錄其來訪時戳tr1;
s13.判斷同類型核心訪問連續(xù)性:計算兩個連續(xù)訪問時間間隔t=tr2-tr1,若t小于給定間隔st2,認定為連續(xù)訪問,繼續(xù)下一步,否則直接判定為非爬蟲訪問,直接透傳請求協(xié)議;
s14.對任意一種連續(xù)的核心訪問,訪問請求refer參數(shù)異常,則判斷為爬蟲訪問;refer參數(shù)正常時繼續(xù)下一步;
s15.計算每隔給定時間t1,任意一種相同類型的連續(xù)的核心訪問cr1的訪問頻率f;其中,
f=ncr/t1;
s16.對任意一種相同類型的連續(xù)的核心訪問,如果訪問頻率穩(wěn)定,且大于給定值sf1,則判斷為爬蟲訪問,否則直接下一步;其中訪問頻率穩(wěn)定判定方法為:
對用戶每種同類型核心資源訪問請求的連續(xù)請求,獲取其最近n次的訪問頻度值組[f1,f2,f3,…fn],隨機抽取訪問頻度值中任一值作為基準值fy;依據(jù)fy計算頻度判定值fs=fy±σ(σ=φfy);其中φ為誤差因子;判斷訪問頻度值中除基準值fy外的其它n-1個訪問頻度值是否滿足范圍[fy-σ,fy+σ],當n-1個訪問頻度值全部滿足范圍時,訪問頻率穩(wěn)定;
s17.對各種核心訪問,如果其訪問持續(xù)的時間超過指定值st2,則判斷為爬蟲訪問;判定為非爬蟲訪問直接透傳請求協(xié)議。
對爬蟲訪問,按照設(shè)置規(guī)則進行處理,包括:依據(jù)斷開當前用戶連接,可以斷開當前用戶連接,并在設(shè)定的禁止訪問時間段內(nèi)禁止用戶的ip對該網(wǎng)站的訪問,也可以投遞該訪問給業(yè)務(wù)服務(wù)器,修改協(xié)議頭增加爬蟲標記字段,由業(yè)務(wù)服務(wù)器側(cè)處理。
如圖2所示,一種網(wǎng)站服務(wù)器爬蟲識別的裝置,其特征在于,包括:
來訪用戶標記模塊:對每個來訪用戶,根據(jù)其ip地址進行唯一的標記;
用戶參數(shù)采集統(tǒng)計模塊:對每個用戶每個同類型訪問標記其訪問時間和記錄訪問請求頭,進而標記核心訪問內(nèi)容、時間、頻度;
爬蟲用戶識別模塊:依據(jù)用戶參數(shù)采集統(tǒng)計模塊的數(shù)據(jù)對訪問用戶的核心資源訪問請求的請求時間連續(xù)性、請求內(nèi)容連續(xù)性、訪問持續(xù)時間、訪問頻度進行爬蟲訪問判斷;
爬蟲用戶處理模塊:對認定為爬蟲程序的訪問按網(wǎng)站預設(shè)策略進行處理,包括:斷開訪問鏈接并禁止在設(shè)定時間內(nèi)訪問或傳遞給業(yè)務(wù)服務(wù)器,修改協(xié)議頭增加爬蟲標記字段,由網(wǎng)站服務(wù)器側(cè)處理。
如圖4所示,所述裝置前置于網(wǎng)站服務(wù)器端。