本發(fā)明涉及web爬蟲領(lǐng)域,具體涉及一種自動識別web爬蟲的方法。
背景技術(shù):
當(dāng)前網(wǎng)站對網(wǎng)絡(luò)爬蟲識別的方法多種多樣,最有效并且廣為使用的方法是提供交互式的組件,來鑒別客戶端是真實(shí)用戶還是網(wǎng)絡(luò)爬蟲,例如驗(yàn)證碼等。但是此方式會在某種程度上影響用戶的上網(wǎng)體驗(yàn)。
爬蟲在抓取網(wǎng)站頁面的過程中,會對首頁進(jìn)行爬取。同時由于爬蟲通常不會重復(fù)爬取具有相同URL的頁面,可以以此來識別請求是否來自爬蟲程序。現(xiàn)有技術(shù)中,在頁面中放置暗鏈做蜜罐來識別爬蟲,或者根據(jù)爬蟲的特征信息(HTTP頭部等)作為識別依據(jù)。但暗鏈?zhǔn)强杀蛔R別的,計算頭部信息需要額外的資源消耗。
相關(guān)術(shù)語:
onload:瀏覽器會在頁面加載完后執(zhí)行onload中的函數(shù);爬蟲:用來抓取網(wǎng)頁信息的應(yīng)用程序;重定向:就是通過各種方法將網(wǎng)絡(luò)請求重新定位到其他位置,(如:網(wǎng)頁重定向,域名重定向等);網(wǎng)頁去重:爬蟲抓取網(wǎng)頁信息時,通過計算兩個頁面的相似度來判斷兩個頁面是否相似或相同,從而避免重復(fù)爬??;URL:統(tǒng)一資源定位符,俗稱為網(wǎng)址;Cookie:網(wǎng)站為了辨別用戶身份存儲于用戶處的數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種自動識別web爬蟲的方法,通過多次重定向和設(shè)置cookie來攔截來自網(wǎng)絡(luò)爬蟲的請求,不影響用戶上網(wǎng)體驗(yàn)。
為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:
一種自動識別web爬蟲的方法,包括以下步驟:
步驟1:服務(wù)器首頁返回只包含JS代碼的頁面,這段代碼位于onload函數(shù)中,在頁面完全加載后被執(zhí)行;
步驟2:步驟1所述的JS代碼采用第一種對稱加密算法通過Set-Cookie頭部設(shè)定一個cookie字段,然后使用window.location跳轉(zhuǎn)到首頁;服務(wù)器檢測cookie合法則返回另一段JS代碼,另一段JS代碼采用第二種對稱加密算法設(shè)定cookie字段;
步驟3:當(dāng)所有的cookie字段都合法,則返回正常的首頁URL;
步驟4:若客戶端沒有進(jìn)行重定向操作,或者cookie值不正確,則設(shè)置badcookie,標(biāo)記為爬蟲。
根據(jù)上述方案,所述步驟1、2、3重復(fù)若干次,但不超過瀏覽器設(shè)置的重定向上限。
根據(jù)上述方案,所述第一種對稱加密算法為DES、TripleDES、RC2、RC4、RC5和Blowfish中的一種,所述第二種對稱加密算法為DES、TripleDES、RC2、RC4、RC5和Blowfish中的一種,且與第一種對稱加密算法不相同。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:1)能阻擋大部分靜態(tài)爬蟲的訪問,如果爬蟲無法執(zhí)行首頁的JS代碼,則只能爬到服務(wù)器返回的只有JS代碼的首頁,無法獲取真實(shí)首頁。2)只要爬蟲具有去重功能,也會因?yàn)樘D(zhuǎn)到相同頁面導(dǎo)致無法繼續(xù)爬取。3)本方法適用的頁面包括但不限于首頁,可以在網(wǎng)站的任意頁面中采用,有效防止爬蟲采集信息。
附圖說明
圖1是本發(fā)明一種自動識別web爬蟲的方法流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。通過在網(wǎng)頁中嵌入javascript一次或者多次重定向到同一頁面,同時返回狀態(tài)碼,使得爬蟲因?yàn)槿ブ責(zé)o法正常爬取頁面。執(zhí)行onload中的javascript代碼指定的cookie或者badcookie,識別請求是否來自爬蟲。
服務(wù)器首頁返回只包含JS代碼(JavaScript編寫的腳本文擴(kuò)件的代碼)的頁面,這段代碼位于onload函數(shù)中,在頁面完全加載后被執(zhí)行。這段JS代碼會采用某種算法(IP,頭部等信息作為算法參數(shù))設(shè)定一個cookie字段,然后使用window.location跳轉(zhuǎn)到首頁(本頁面)。服務(wù)器檢測cookie合法則返回另一段JS,該JS代碼采用另一種算法設(shè)定cookie字段。根據(jù)網(wǎng)站需要,前述步驟可以重復(fù)若干次,但不能超過瀏覽器設(shè)置的重定向上限。只有所有的cookie字段都合法的情況下,才會返回正常的首頁URL。若客戶端沒有進(jìn)行重定向操作,或者cookie值不正確,則可以設(shè)置badcookie,標(biāo)記為爬蟲。同時可以根據(jù)服務(wù)器請求記錄中的請求次數(shù)判定是爬蟲,比如第一次get請求就包含所有正確cookie的一定是爬蟲。
本發(fā)明所涉及的算法為對稱的加密算法,主要有DES、TripleDES、RC2、RC4、RC5和Blowfish。為了防止用戶預(yù)先在瀏覽器中訪問頁面獲取正確cookie,可在網(wǎng)站的每一級頁面目錄中都添加一個具有同樣功能的頁面,來強(qiáng)化反爬蟲的效果。