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