本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種爬蟲識(shí)別方法。
背景技術(shù):
爬蟲也稱為網(wǎng)絡(luò)爬蟲,是一種自動(dòng)獲取網(wǎng)頁(yè)內(nèi)容的程序,是搜索引擎的重要組成部分。
傳統(tǒng)的爬蟲識(shí)別方法主要針對(duì)請(qǐng)求來(lái)源ip,通過統(tǒng)計(jì)來(lái)源ip的訪問頻率,如果頻率高于設(shè)定的閾值,所述來(lái)源ip被判為爬蟲程序,然后對(duì)其進(jìn)行限制。此方法最大的缺點(diǎn)是誤判率較高,因?yàn)榧词故钦S脩?,其使用的ip也可能經(jīng)常發(fā)生變化,或者多個(gè)正常用戶可能共用一個(gè)ip,所以單純根據(jù)ip訪問頻率反爬蟲,會(huì)經(jīng)常誤傷了正常的用戶。目前針對(duì)此問題有一些優(yōu)化方法,常見的方法主要有以下幾種:
在瀏覽器展示的頁(yè)面中添加特殊js代碼,代碼運(yùn)行結(jié)果會(huì)發(fā)送給服務(wù)端,服務(wù)端再根據(jù)運(yùn)行結(jié)果判斷是否是真實(shí)瀏覽器,如果不是真實(shí)的瀏覽器,則是爬蟲;
服務(wù)端向用戶瀏覽器發(fā)送一些特殊的cookie,然后在后續(xù)的關(guān)鍵請(qǐng)求中,對(duì)cookie屬性進(jìn)行判斷驗(yàn)證,如果cookie無(wú)效,則是爬蟲;
服務(wù)端對(duì)http請(qǐng)求中的header進(jìn)行判斷,認(rèn)為header不完整或者符合特定模式的則是爬蟲。
以上優(yōu)化方法的優(yōu)點(diǎn)是能降低誤傷率,缺點(diǎn)都是能被爬蟲有針對(duì)性的破解,識(shí)別爬蟲的準(zhǔn)確率較低。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提出一種爬蟲識(shí)別方法,根據(jù)安裝了客戶端的移動(dòng)設(shè)備的設(shè)備id的多個(gè)參數(shù)進(jìn)行爬蟲識(shí)別,提高了判斷爬蟲的準(zhǔn)確率。
為了便于理解本發(fā)明的技術(shù)方案,對(duì)兩個(gè)名詞進(jìn)行解釋:
服務(wù)端:基于web向用戶提供查詢、下單等服務(wù)的程序;
客戶端:安裝于手機(jī)、平板電腦等移動(dòng)設(shè)備的應(yīng)用程序app。本發(fā)明技術(shù)方案中的移動(dòng)設(shè)備均指安裝了客戶端的移動(dòng)設(shè)備。
本發(fā)明提供一種爬蟲識(shí)別方法,包括由服務(wù)端執(zhí)行的如下步驟:
接收移動(dòng)設(shè)備發(fā)送的訪問信號(hào),每接收一條訪問信號(hào)保存一條訪問日志,所述訪問日志包括以下信息:設(shè)備id,訪問時(shí)間,發(fā)送訪問信號(hào)時(shí)的位置,訪問頁(yè)面,查詢參數(shù);
根據(jù)訪問日志計(jì)算同一移動(dòng)設(shè)備的以下參數(shù):
a為訪問頻率,即單位時(shí)間內(nèi)的訪問次數(shù);
b為并發(fā)訪問量,即同時(shí)訪問服務(wù)端的移動(dòng)設(shè)備的數(shù)量;
c為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問列表頁(yè)的次數(shù)與訪問次數(shù)(總訪問次數(shù))的比值;
d為業(yè)務(wù)低峰時(shí)段每小時(shí)的訪問次數(shù)與業(yè)務(wù)高峰時(shí)段訪問次數(shù)的比值;
e為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問次數(shù)與訂單數(shù)量的比值,所述訂單為購(gòu)買服務(wù)端提供的商品或服務(wù)創(chuàng)建的訂單;
f為當(dāng)前時(shí)刻前一段時(shí)間t內(nèi)移動(dòng)設(shè)備的位置沒有發(fā)生變化的時(shí)間t1和移動(dòng)設(shè)備處于位置黑名單中的時(shí)間t2的和(t1+t2)與t的比值;
g為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問的查詢參數(shù)與所有可選查詢參數(shù)的比值;
對(duì)a、b、c、d、e、f、g進(jìn)行加權(quán)求和得到h,如果a>a0,或b>b0,或h>h0,則判為爬蟲;其中,a0、b0、h0為設(shè)定的三個(gè)爬蟲判斷閾值,h的表達(dá)式為:
h=a*a+b*b+c*c+d*d+e*e+f*f+g*g
式中,a、b、c、d、e、f、g分別為a、b、c、d、e、f、g的權(quán)值。
進(jìn)一步地,所述方法還包括:
獲取移動(dòng)設(shè)備發(fā)送的經(jīng)加密處理的設(shè)備id,實(shí)現(xiàn)所述移動(dòng)設(shè)備在服務(wù)端的注冊(cè);
根據(jù)發(fā)送訪問信號(hào)的移動(dòng)設(shè)備的設(shè)備id對(duì)所述移動(dòng)設(shè)備進(jìn)行校驗(yàn),判斷所述移動(dòng)設(shè)備是否為注冊(cè)設(shè)備;
設(shè)置非注冊(cè)設(shè)備的三個(gè)爬蟲判斷閾值分別小于注冊(cè)設(shè)備的三個(gè)爬蟲判斷閾值。
進(jìn)一步地,a=2,b=3,c=1,d=0.8,e=1.5,f=0.3,g=0.5。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
本發(fā)明提出的一種爬蟲識(shí)別方法,通過服務(wù)端接收安裝了客戶端的移動(dòng)設(shè)備發(fā)送的訪問信號(hào),每接收一條訪問信號(hào)保存一條包括設(shè)備id、訪問時(shí)間、發(fā)送訪問信號(hào)時(shí)的位置、訪問頁(yè)面和查詢參數(shù)的訪問日志,根據(jù)訪問日志計(jì)算同一移動(dòng)設(shè)備的訪問頻率a、并發(fā)訪問數(shù)量b等7個(gè)參數(shù)a~g,對(duì)a~g進(jìn)行加權(quán)求和得到h,當(dāng)a或b或h超過設(shè)定的閾值時(shí)判為爬蟲,實(shí)現(xiàn)了根據(jù)同一設(shè)備id的移動(dòng)設(shè)備的多個(gè)參數(shù)進(jìn)行爬蟲識(shí)別。由于同一爬蟲無(wú)法偽造注冊(cè)多個(gè)設(shè)備id,因此服務(wù)端能利用設(shè)備id準(zhǔn)確地識(shí)別哪些訪問信號(hào)來(lái)自同一用戶或爬蟲,提高了爬蟲識(shí)別的準(zhǔn)確率。
附圖說明
圖1為本發(fā)明實(shí)施例一種爬蟲識(shí)別方法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
本發(fā)明實(shí)施例提供一種爬蟲識(shí)別方法,由服務(wù)端程序?qū)崿F(xiàn),所述方法流程圖如圖1所示,包括以下步驟:
步驟101,接收移動(dòng)設(shè)備發(fā)送的訪問信號(hào),每接收一條訪問信號(hào)保存一條訪問日志,所述訪問日志包括以下信息:設(shè)備id,訪問時(shí)間,發(fā)送訪問信號(hào)時(shí)的位置,訪問頁(yè)面,查詢參數(shù);
在本步驟中,服務(wù)端實(shí)時(shí)接收移動(dòng)設(shè)備發(fā)送的訪問信號(hào)。本實(shí)施例中的移動(dòng)設(shè)備都是指安裝了客戶端app的手機(jī)、平板電腦等。本實(shí)施例以設(shè)備id作為識(shí)別不同移動(dòng)設(shè)備的唯一標(biāo)識(shí),因此,每一條訪問信號(hào)都包含移動(dòng)設(shè)備的設(shè)備id信息。為了方便后面的參數(shù)計(jì)算,每接收一條訪問信號(hào)創(chuàng)建一條訪問日志,用于保存訪問信號(hào)中的以下信息:設(shè)備id,訪問時(shí)間,發(fā)送訪問信號(hào)時(shí)的位置,訪問頁(yè)面,查詢參數(shù)。
步驟102,根據(jù)訪問日志計(jì)算同一移動(dòng)設(shè)備的以下參數(shù):
a為訪問頻率,即單位時(shí)間內(nèi)的訪問次數(shù);
b為并發(fā)訪問量,即同時(shí)訪問服務(wù)端的移動(dòng)設(shè)備的數(shù)量;
c為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問列表頁(yè)的次數(shù)與訪問次數(shù)的比值;
d為業(yè)務(wù)低峰時(shí)段每小時(shí)的訪問次數(shù)與業(yè)務(wù)高峰時(shí)段訪問次數(shù)的比值;
e為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問次數(shù)與訂單數(shù)量的比值,所述訂單為購(gòu)買服務(wù)端提供的商品或服務(wù)創(chuàng)建的訂單;
f為當(dāng)前時(shí)刻前一段時(shí)間t內(nèi)移動(dòng)設(shè)備的位置沒有發(fā)生變化的時(shí)間t1和移動(dòng)設(shè)備處于位置黑名單中的時(shí)間t2的和(t1+t2)與t的比值;
g為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問的查詢參數(shù)與所有可選查詢參數(shù)的比值;
在本步驟中,根據(jù)上一步創(chuàng)建的訪問日志計(jì)算同一移動(dòng)設(shè)備的參數(shù)a~g,這些參數(shù)將用于判斷是不是爬蟲。
a為訪問頻率,一般指1分鐘內(nèi)的訪問次數(shù)。獲得訪問頻率的方法很多,比如,可以采用一個(gè)計(jì)數(shù)器,每接收到一次訪問信號(hào),計(jì)數(shù)器的值加1,每1分鐘重置一次計(jì)數(shù)器。訪問頻率越a高,是爬蟲的可能性越大。訪問頻率a為實(shí)時(shí)測(cè)量參數(shù),只要計(jì)數(shù)器的值超過設(shè)定的閾值,就可以判為爬蟲。
b為并發(fā)訪問量。b的值也可以通過計(jì)數(shù)器獲得,每收到一次訪問信號(hào)計(jì)數(shù)器的值加1,訪問信號(hào)結(jié)束時(shí)計(jì)數(shù)器的值減1,計(jì)數(shù)器的值就是并發(fā)訪問量b。同樣,并發(fā)訪問量b越大,是爬蟲的可能性越大。而且并發(fā)訪問量b也是實(shí)時(shí)測(cè)量參數(shù),只要計(jì)數(shù)器的值超過設(shè)定的閾值,就可以判為爬蟲。
c為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問列表頁(yè)的次數(shù)與訪問次數(shù)的比值。c的值可通過統(tǒng)計(jì)最近一段時(shí)間內(nèi)的訪問軌跡(由訪問的頁(yè)面組成)獲得。訪問的頁(yè)面包括首頁(yè)、詳情頁(yè)、列表頁(yè)等。訪問列表頁(yè)的次數(shù)越多,是爬蟲的可能性越大。因此,c值越大,是爬蟲的可能性越大。
d為業(yè)務(wù)低峰時(shí)段每小時(shí)的訪問次數(shù)與業(yè)務(wù)高峰時(shí)段訪問次數(shù)的比值。d的值可以通過統(tǒng)計(jì)一天內(nèi)每個(gè)小時(shí)的訪問次數(shù),得到低峰時(shí)段每小時(shí)的訪問次數(shù)和業(yè)務(wù)高峰時(shí)段訪問次數(shù),然后求二者的比值得到。業(yè)務(wù)低峰時(shí)段每小時(shí)的訪問次數(shù)越多,是爬蟲的可能性越大。因此,d值越大,是爬蟲的可能性越大。
e為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問次數(shù)與訂單數(shù)量的比值。訪問次數(shù)通過統(tǒng)計(jì)訪問日志獲得;創(chuàng)建的訂單數(shù)量保存在服務(wù)端的數(shù)據(jù)庫(kù)中,通過訪問數(shù)據(jù)庫(kù)可獲得訂單數(shù)量。訂單數(shù)量越多,是爬蟲的可能性越小。因此,e值越大,是爬蟲的可能性越大。
f為當(dāng)前時(shí)刻前一段時(shí)間t內(nèi)移動(dòng)設(shè)備的位置沒有發(fā)生變化的時(shí)間t1和移動(dòng)設(shè)備處于位置黑名單中的時(shí)間t2的和(t1+t2)與t的比值。根據(jù)訪問日志中的位置信息可以判斷移動(dòng)設(shè)備的位置有沒有發(fā)生變化,從而得到位置沒有發(fā)生變化的時(shí)間t1;獲得位置信息后,與服務(wù)端的位置黑名單進(jìn)行比對(duì)即可知道是否處于位置黑名單中,從而得到移動(dòng)設(shè)備處于位置黑名單中的時(shí)間t2。用戶使用移動(dòng)設(shè)備時(shí),移動(dòng)設(shè)備位置不發(fā)生變化的次數(shù)越多,是爬蟲的可能性越大;移動(dòng)設(shè)備處于位置黑名單范圍內(nèi)的時(shí)間越長(zhǎng),是爬蟲的可能性越大。因此,f值越大,是爬蟲的可能性越大。
g為當(dāng)前時(shí)刻前一段時(shí)間內(nèi)訪問的查詢參數(shù)與所有可選查詢參數(shù)的比值。根據(jù)訪問日志中的查詢參數(shù)信息可獲得移動(dòng)設(shè)備在當(dāng)前時(shí)刻前一段時(shí)間內(nèi)共使用了哪些查詢參數(shù),再與可選查詢參數(shù)求比值得到g。訪問的查詢參數(shù)越接近所有可選查詢參數(shù),是爬蟲的概率越高。因此,g值越大,是爬蟲的可能性越大。
與a、b不同的是,c~g均為非實(shí)時(shí)測(cè)量參數(shù),一般稱為延時(shí)測(cè)量參數(shù),測(cè)量周期較長(zhǎng),不能單獨(dú)用來(lái)判斷是否為爬蟲。
步驟103,對(duì)a、b、c、d、e、f、g進(jìn)行加權(quán)求和得到h,如果a>a0,或b>b0,或h>h0,則判為爬蟲;其中,a0、b0、h0為設(shè)定的爬蟲判斷閾值,h的表達(dá)式為:
h=a*a+b*b+c*c+d*d+e*e+f*f+g*g
式中,a、b、c、d、e、f、g分別為a、b、c、d、e、f、g的權(quán)值。
本步驟給出了根據(jù)步驟102得到的參數(shù)識(shí)別爬蟲的技術(shù)方案。如前所述,c~g均為非實(shí)時(shí)測(cè)量參數(shù),不能單獨(dú)用來(lái)判斷是否為爬蟲。所以,通過對(duì)a~g進(jìn)行加權(quán)求和得到一個(gè)綜合參數(shù)h,分別用a、b、h與設(shè)定的閾值a0、b0、h0進(jìn)行比較來(lái)判斷是不是爬蟲,a、b、h中只要有一個(gè)超過設(shè)定的閾值就判為爬蟲。h的表達(dá)式中a~g的權(quán)值a~g的大小與各個(gè)參數(shù)對(duì)爬蟲的敏感度有關(guān),一般根據(jù)經(jīng)驗(yàn)或模擬實(shí)驗(yàn)確定。
本發(fā)明實(shí)施例根據(jù)同一設(shè)備id的移動(dòng)設(shè)備的多個(gè)參數(shù)進(jìn)行爬蟲識(shí)別?,F(xiàn)有方法一般依賴設(shè)備ip識(shí)別爬蟲,爬蟲可以使用不同代理ip偽裝成不同用戶,使服務(wù)端無(wú)法準(zhǔn)確識(shí)別哪些請(qǐng)求來(lái)自同一用戶或爬蟲。本發(fā)明實(shí)施例基于設(shè)備id進(jìn)行爬蟲識(shí)別,由于同一爬蟲無(wú)法偽造注冊(cè)多個(gè)設(shè)備id,因此服務(wù)端能利用設(shè)備id準(zhǔn)確地識(shí)別哪些訪問信號(hào)來(lái)自同一用戶或爬蟲,提高了爬蟲識(shí)別的準(zhǔn)確率。
作為一種可選實(shí)施例,所述方法還包括:
根據(jù)移動(dòng)設(shè)備發(fā)送的經(jīng)加密處理的設(shè)備id,實(shí)現(xiàn)所述移動(dòng)設(shè)備在服務(wù)端的注冊(cè);
根據(jù)發(fā)送訪問信號(hào)的移動(dòng)設(shè)備的設(shè)備id對(duì)所述移動(dòng)設(shè)備進(jìn)行校驗(yàn),判斷所述移動(dòng)設(shè)備是否為注冊(cè)設(shè)備;
設(shè)置非注冊(cè)設(shè)備的三個(gè)爬蟲判斷閾值分別小于注冊(cè)設(shè)備的三個(gè)爬蟲判斷閾值。
本實(shí)施例給出了對(duì)安裝客戶端的移動(dòng)設(shè)備進(jìn)行注冊(cè),在爬蟲識(shí)別前檢驗(yàn)移動(dòng)設(shè)備是不是注冊(cè)設(shè)備,對(duì)注冊(cè)設(shè)備和非注冊(cè)設(shè)備設(shè)置不同的判斷閾值的技術(shù)方案。因?yàn)榕老x無(wú)法完成加密注冊(cè),因此非注冊(cè)設(shè)備是爬蟲的可能性大于注冊(cè)設(shè)備,所以進(jìn)行爬蟲識(shí)別時(shí)對(duì)非注冊(cè)設(shè)備的要求更苛刻,設(shè)置比注冊(cè)設(shè)備更低的爬蟲判斷閾值。
作為一種可選實(shí)施例,a=2,b=3,c=1,d=0.8,e=1.5,f=0.3,g=0.5。
本實(shí)施例給出了一組求綜合參數(shù)h的權(quán)值。因?yàn)閍、b為實(shí)時(shí)性測(cè)量參數(shù),對(duì)爬蟲最敏感,所以權(quán)值較高。本實(shí)施例作為一種較佳實(shí)施例,給出了一組具體的權(quán)值,以供參考,并不排除其它權(quán)值數(shù)據(jù)。
上述僅對(duì)本發(fā)明中的幾種具體實(shí)施例加以說明,但并不能作為本發(fā)明的保護(hù)范圍,凡是依據(jù)本發(fā)明中的設(shè)計(jì)精神所做出的等效變化或修飾或等比例放大或縮小等,均應(yīng)認(rèn)為落入本發(fā)明的保護(hù)范圍。