爬蟲檢測方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了爬蟲檢測方法和系統(tǒng),該方法包括:設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型;客戶端的瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求;服務(wù)器根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性;客戶端判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,客戶端運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲;若否,則所述數(shù)據(jù)請求為一爬蟲。本發(fā)明能夠從瀏覽器的角度出發(fā),能夠檢測用任意種類的瀏覽器來獲取服務(wù)器端的數(shù)據(jù)的爬蟲,保護(hù)了服務(wù)器不受非法請求的攻擊,節(jié)省了服務(wù)器資源,降低了網(wǎng)絡(luò)帶寬消耗。
【專利說明】
爬蟲檢測方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及互聯(lián)網(wǎng)中的爬蟲檢測方法和系統(tǒng)。
【背景技術(shù)】
[0002]爬蟲是一種自動(dòng)獲取網(wǎng)頁內(nèi)容的程序,是搜索引擎的重要組成部分。隨著互聯(lián)網(wǎng)的發(fā)展,互聯(lián)網(wǎng)上的爬蟲量日益增加,由于爬蟲會(huì)偽造用戶行為,不斷地訪問服務(wù)器以獲取信息,導(dǎo)致爬蟲會(huì)嚴(yán)重拖慢服務(wù)器的響應(yīng)速度,還會(huì)浪費(fèi)網(wǎng)絡(luò)帶寬,甚至?xí)欠ūI取信息,威脅信息財(cái)產(chǎn)安全,如爬蟲對金融類應(yīng)用的攻擊。而現(xiàn)有技術(shù)中反爬蟲的方法通常是對爬蟲所在的IP(Internet Protocol,互聯(lián)網(wǎng)協(xié)議)地址進(jìn)行封鎖,但這樣的封鎖行為難以防范分散的多個(gè)IP地址的爬蟲,現(xiàn)有技術(shù)中還通常將服務(wù)器端返回的數(shù)據(jù)進(jìn)行加密,使得爬蟲所在的客戶端無法破解返回的數(shù)據(jù),但仍然存在一些爬蟲開發(fā)者通過分析頁面的代碼來破解該加密算法,從而獲得想要的數(shù)據(jù)??梢?,現(xiàn)有技術(shù)中的反爬蟲的方法仍然無法多方面地檢測爬蟲。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中反爬蟲的手段單一、且難以更全面更徹底地檢測爬蟲的缺陷,提供一種爬蟲檢測方法和系統(tǒng)。
[0004]本發(fā)明是通過下述技術(shù)方案解決上述技術(shù)問題的:
[0005]—種爬蟲檢測方法,其特點(diǎn)在于,包括:
[0006]S1、設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型;
[0007]S2、客戶端的瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求;
[0008]S3、服務(wù)器根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性;
[0009]S4、客戶端判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,進(jìn)入步驟&,若否,則所述數(shù)據(jù)請求為一爬蟲;
[0010]s5、客戶端運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲。
[0011]本發(fā)明通過設(shè)置跨域服務(wù)類型,使得客戶端能夠請求不同域的數(shù)據(jù),而服務(wù)器端能夠在響應(yīng)的信息中攜帶不同的代碼,通過將服務(wù)器端檢測的瀏覽器的屬性與瀏覽器的實(shí)際屬性進(jìn)行對比,能夠檢測出偽造了請求頭的爬蟲,而通過運(yùn)行服務(wù)器端反饋的檢測腳本,能夠檢測出使用瀏覽器內(nèi)核模擬器等接近于真實(shí)瀏覽器的特性的瀏覽器進(jìn)行訪問數(shù)據(jù)的爬蟲。并且,由于服務(wù)器端反饋了檢測腳本,因此對于爬蟲開發(fā)者而言,則無法通過分析頁面代碼的方式來破解服務(wù)器端返回的加密的響應(yīng)消息。而對于分散了 IP地址的爬蟲,則也無法躲避本申請從瀏覽器的屬性和瀏覽器本身的特性出發(fā)所執(zhí)行的雙重檢測攔截,可見,本申請的檢測方法從瀏覽器的角度出發(fā),能夠更加全面地、徹底地檢測網(wǎng)絡(luò)內(nèi)的爬蟲。
[0012]較佳地,所述服務(wù)器內(nèi)存儲(chǔ)有一腳本庫,所述腳本庫包括若干個(gè)瀏覽器的屬性和與每一瀏覽器的屬性對應(yīng)的至少一檢測腳本,步驟S3中根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本為:
[0013]S31、服務(wù)器根據(jù)所述跨域服務(wù)類型和所述屬性查詢所述腳本庫以獲得與所述屬性對應(yīng)的檢測腳本,并在獲得的檢測腳本中隨機(jī)抽取一檢測腳本以發(fā)送至所述客戶端。
[0014]其中,瀏覽器的特性包括瀏覽器的類型和瀏覽器的版本所支持的功能和具有的性能,比如瀏覽器的動(dòng)畫播放功能、瀏覽器的安全性是否較高、瀏覽器的速度是否較高、瀏覽器是否能夠兼容某些網(wǎng)站內(nèi)容、標(biāo)簽瀏覽、內(nèi)置RSS(—種用來分發(fā)和匯集網(wǎng)頁內(nèi)容的擴(kuò)展性標(biāo)識語音格式)支持、多會(huì)話恢復(fù)、網(wǎng)站的縮略圖、網(wǎng)頁翻譯、立體搜索、顏色配置文件支持、網(wǎng)頁更新提醒、閱讀模式等等??梢岳斫?,檢測腳本更多的是針對瀏覽器的實(shí)際屬性和檢測到的瀏覽器的屬性所形成的不同瀏覽器之間的功能差異所執(zhí)行的檢測,甚至是針對某個(gè)瀏覽器本身具有的bug(漏洞)所執(zhí)行的檢測。
[0015]較佳地,步驟S4中在判斷結(jié)果為是時(shí)還執(zhí)行以下步驟:
[0016]S5a、判斷所述請求頭的請求次數(shù)是否達(dá)到一次數(shù)閾值,若是,則所述數(shù)據(jù)請求為一爬蟲。
[0017]通過對請求次數(shù)的判斷,能夠進(jìn)一步針對分散IP地址的爬蟲進(jìn)行檢測。
[0018]較佳地,所述請求頭包括客戶端的瀏覽器類型和客戶端的瀏覽器版本,以及包括客戶端的硬件平臺(tái)、客戶端的操作系統(tǒng)和客戶端的用戶偏好中的一項(xiàng)或多項(xiàng),步驟S3中服務(wù)器根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性為:
[0019]S32、服務(wù)器通過NodeJS(是一個(gè)基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境,JavaScript是一種直譯式腳本語言,V8是一個(gè)由丹麥Google開發(fā)的開源JavaScript引擎,用于Google Chrome瀏覽器中)的方式檢測所述瀏覽器的屬性。
[0020]較佳地,在檢測到所述數(shù)據(jù)請求為一爬蟲時(shí)還執(zhí)行以下步驟:
[0021]S5b、服務(wù)器根據(jù)所述數(shù)據(jù)請求返回一響應(yīng)消息至客戶端的瀏覽器以顯示所述響應(yīng)消息,所述響應(yīng)消息包括警告信息或誤導(dǎo)信息。
[0022]也即,在檢測到爬蟲時(shí),發(fā)出警告以提示非法用戶請求獲得服務(wù)器的數(shù)據(jù)的行為,或者直接向非法用戶返回虛假的數(shù)據(jù)信息。
[0023]較佳地,所述跨域服務(wù)類型包括JSONP(是JSON with Padding的略稱,它是一個(gè)非官方的協(xié)議,它允許在服務(wù)器端集成Script tags (腳本標(biāo)簽)返回至客戶端,通過JavaScript callback(回調(diào)函數(shù))的形式實(shí)現(xiàn)跨域訪問)跨域服務(wù),和/或,所述瀏覽器的屬性包括瀏覽器的類別和瀏覽器的版本;
[0024]和/或,步驟S3還對所述檢測腳本執(zhí)行壓縮混淆操作后將壓縮混淆的檢測腳本返回至客戶端。
[0025]本發(fā)明還提供一種爬蟲檢測系統(tǒng),其特點(diǎn)在于,包括一客戶端和一服務(wù)器,所述客戶端包括一設(shè)置模塊、一請求模塊、一第一判斷模塊和一運(yùn)行模塊,所述服務(wù)器包括一檢測豐旲塊;
[0026]所述設(shè)置模塊用于設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型;
[0027]所述請求模塊用于通過瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求;
[0028]所述檢測模塊用于根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性;
[0029]所述第一判斷模塊用于判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,調(diào)用所述運(yùn)行模塊,若否,則所述數(shù)據(jù)請求為一爬蟲;
[0030]所述運(yùn)行模塊用于運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲。
[0031 ]較佳地,所述服務(wù)器內(nèi)存儲(chǔ)有一腳本庫,所述腳本庫包括若干個(gè)瀏覽器的屬性和與每一瀏覽器的屬性對應(yīng)的至少一檢測腳本,所述檢測模塊用于根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本為:
[0032]所述檢測模塊用于根據(jù)所述跨域服務(wù)類型和所述屬性查詢所述腳本庫以獲得與所述屬性對應(yīng)的檢測腳本,并在獲得的檢測腳本中隨機(jī)抽取一檢測腳本以發(fā)送至所述客戶端。
[0033]較佳地,所述服務(wù)器還包括一第二判斷模塊,所述第二判斷模塊用于判斷所述請求頭的請求次數(shù)是否達(dá)到一次數(shù)閾值,若是,則所述數(shù)據(jù)請求為一爬蟲。
[0034]較佳地,所述服務(wù)器還包括一響應(yīng)模塊,所述響應(yīng)模塊用于在檢測到所述數(shù)據(jù)請求為一爬蟲時(shí)根據(jù)所述數(shù)據(jù)請求返回一響應(yīng)消息至客戶端的瀏覽器以顯示所述響應(yīng)消息,所述響應(yīng)消息包括警告信息或誤導(dǎo)信息。
[0035]本發(fā)明的積極進(jìn)步效果在于:本發(fā)明能夠從瀏覽器的角度出發(fā),通過對瀏覽器的屬性和瀏覽器的特性進(jìn)行檢測,能夠檢測用任意種類的瀏覽器,包括偽造請求頭的瀏覽器和模擬的瀏覽器來獲取服務(wù)器端的數(shù)據(jù)的爬蟲,且通過攜帶檢測腳本,使得爬蟲開發(fā)者無法通過分析頁面代碼來獲得服務(wù)器端返回的加密的響應(yīng)消息,而對于分散了 IP地址的爬蟲,也無法躲避本申請從瀏覽器的屬性和瀏覽器本身的特性出發(fā)所執(zhí)行的雙重檢測攔截,并且,通過對請求次數(shù)的判斷,能夠進(jìn)一步加強(qiáng)對分散IP地址的爬蟲進(jìn)行檢測。保護(hù)了服務(wù)器不受非法請求的攻擊,節(jié)省了服務(wù)器資源,降低了網(wǎng)絡(luò)帶寬消耗。
【附圖說明】
[0036]圖1為本發(fā)明實(shí)施例1的爬蟲檢測方法流程圖。
[0037]圖2為本發(fā)明實(shí)施例2的爬蟲檢測系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0038]下面通過實(shí)施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。
[0039]實(shí)施例1
[0040]本實(shí)施例提供一種爬蟲檢測方法,本實(shí)施例的應(yīng)用場景可為:一非法用戶使用一臺(tái)電腦,并通過瀏覽器IE8訪問網(wǎng)站A的酒店價(jià)格數(shù)據(jù)和價(jià)格的排列方式數(shù)據(jù),如圖1所示,圖1中的虛線表示兩個(gè)設(shè)備之間進(jìn)行網(wǎng)絡(luò)連接,包括:
[0041 ]步驟101、設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型;
[0042]跨域是指,由于瀏覽器同源策略,凡是發(fā)送請求url(Uniform Resoure Locator,統(tǒng)一資源定位符)的協(xié)議、域名、端口三者之間任意一與當(dāng)前頁面地址不同即為跨域。
[0043]所述跨域服務(wù)類型包括JSONP跨域服務(wù),在不產(chǎn)生沖突的情況下,也可設(shè)置為CORS(Cross-Origin Resource Sharing跨域資源共享,是一種允許當(dāng)前域(domain)的資源被其他域的腳本請求訪問的機(jī)制)跨域服務(wù)。
[0044]步驟102、客戶端的瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求;
[0045]該數(shù)據(jù)請求則為向網(wǎng)站A的服務(wù)器訪問網(wǎng)站A的酒店價(jià)格數(shù)據(jù)和價(jià)格的排列方式的請求,由于該數(shù)據(jù)請求的載體是建立在客戶端和瀏覽器的基礎(chǔ)上的,因此該數(shù)據(jù)請求內(nèi)必然攜帶有客戶端和瀏覽器的信息,該信息通過請求頭User-Agent的方式體現(xiàn),所述請求頭包括客戶端的瀏覽器類型和客戶端的瀏覽器版本,以及包括客戶端的硬件平臺(tái)、客戶端的操作系統(tǒng)和客戶端的用戶偏好中的一項(xiàng)或多項(xiàng)。
[0046]步驟103、服務(wù)器根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性;
[0047]具體地,服務(wù)器通過NodeJS的方式檢測所述瀏覽器的屬性,所述屬性包括瀏覽器的類別和瀏覽器的版本,所述服務(wù)器內(nèi)存儲(chǔ)有一腳本庫,所述腳本庫包括若干個(gè)瀏覽器的屬性和與每一瀏覽器的屬性對應(yīng)的至少一檢測腳本,服務(wù)器根據(jù)所述跨域服務(wù)類型和所述屬性查詢所述腳本庫以獲得與所述屬性對應(yīng)的檢測腳本,并在獲得的檢測腳本中隨機(jī)抽取一檢測腳本以發(fā)送至所述客戶端。由于是從腳本庫里隨機(jī)抽取的檢測腳本,因此爬蟲開發(fā)者是無法從瀏覽器的頁面代碼層面上來破解服務(wù)器響應(yīng)的數(shù)據(jù)的。
[0048]其中,還可對返回的檢測腳本通過JavaScript壓縮混淆工具對檢測腳本做壓縮混淆操作,以進(jìn)一步增加爬蟲開發(fā)者的破解難度。
[0049]當(dāng)爬蟲用戶頻繁更改請求頭User-Agent的內(nèi)容,來偽裝成不同的客戶端時(shí),如偽裝成瀏覽器IElO或?yàn)g覽器Chrome時(shí),服務(wù)器端檢測到的則是偽裝了的瀏覽器版本和瀏覽器類別。
[0050]步驟104、客戶端判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,進(jìn)入步驟105,若否,則所述數(shù)據(jù)請求為一爬蟲;
[0051]客戶端判斷服務(wù)器端檢測到的屬性與客戶端實(shí)際使用的瀏覽器的屬性是否相同,由于爬蟲用戶更改了請求頭User-Agent的內(nèi)容,因此不論爬蟲用戶如何變換請求頭,始終能夠被本申請的檢測方法檢測出。
[0052]步驟105、客戶端運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲。
[0053]而當(dāng)爬蟲用戶不采用更改請求頭User-Agent的內(nèi)容的方式來偽裝成不同的客戶端,而只是采用與真實(shí)瀏覽器類似的運(yùn)行速度較快的瀏覽器內(nèi)核模擬器,如phantom模擬器,以訪問服務(wù)器的數(shù)據(jù)時(shí),服務(wù)器會(huì)根據(jù)檢測到的瀏覽器的屬性所對應(yīng)的瀏覽器的特性,反饋一檢測腳本來檢測該瀏覽器的特性,而這樣的特性檢測必然是只有在真實(shí)的瀏覽器和真實(shí)的用戶訪問行為的情況下才能運(yùn)行成功,而在一些瀏覽器內(nèi)核模擬器上或者一些偽造了請求頭User-Agent的情況下運(yùn)行失敗。比如,服務(wù)器返回的檢測腳本用于檢測瀏覽器是否存在某個(gè)bug,針對實(shí)際的瀏覽器而言,該瀏覽器本身是存在該bug的,但客戶端的瀏覽器運(yùn)行該檢測腳本時(shí),反而不會(huì)出現(xiàn)該bug,因此可斷定訪問用戶為一爬蟲。再如,服務(wù)器返回的檢測腳本用于檢測瀏覽器是否具有網(wǎng)頁翻譯的功能,針對實(shí)際的瀏覽器而言,該瀏覽器本身是具有網(wǎng)頁翻譯功能的,但客戶端的瀏覽器運(yùn)行該檢測腳本時(shí),執(zhí)行網(wǎng)頁翻譯功能失敗,因此也可斷定訪問用戶為一爬蟲。該檢測腳本可通過JavaScr ipt實(shí)現(xiàn)。
[0054]此外,步驟104中在判斷結(jié)果為是時(shí)還執(zhí)行以下步驟:
[0055]步驟105a、判斷所述請求頭的請求次數(shù)是否達(dá)到一次數(shù)閾值,若是,則所述數(shù)據(jù)請求為一爬蟲。
[0056]也即,當(dāng)爬蟲用戶不更換請求頭User-Agent的內(nèi)容,但仍然使用真實(shí)瀏覽器而非瀏覽器內(nèi)核模擬器時(shí),由于減少了偽造瀏覽器的變種手段,這樣必然使得單個(gè)用戶的請求頭User-Agent的訪問率突出,在這種情況是再根據(jù)訪問量的判斷是很容易檢測爬蟲并封鎖爬蟲的IP地址的。
[0057]而在檢測到所述數(shù)據(jù)請求為一爬蟲時(shí)還執(zhí)行以下步驟:
[0058]步驟105b、服務(wù)器根據(jù)所述數(shù)據(jù)請求返回一響應(yīng)消息至客戶端的瀏覽器以顯示所述響應(yīng)消息,所述響應(yīng)消息包括警告信息或誤導(dǎo)信息。
[0059]可以理解,當(dāng)真實(shí)用戶使用真實(shí)瀏覽器訪問服務(wù)器的數(shù)據(jù)時(shí),且在訪問量可接受的情況下,該瀏覽器是經(jīng)得起本實(shí)施例采用的多重檢測手段的,而只有在通過本實(shí)施例的多重檢測手段后,服務(wù)器才會(huì)將對應(yīng)于數(shù)據(jù)請求的真實(shí)的響應(yīng)數(shù)據(jù)開放給客戶端以做顯示,至于真實(shí)的響應(yīng)數(shù)據(jù)與檢測腳本是處于同一數(shù)據(jù)包中還是不同的數(shù)據(jù)包中,本實(shí)施例不作限定,只要本實(shí)施例能夠反饋檢測腳本和真實(shí)的響應(yīng)數(shù)據(jù)即可,而當(dāng)檢測到爬蟲時(shí),月艮務(wù)器也會(huì)根據(jù)實(shí)際情況發(fā)出警告信息以提示非法用戶的請求行為,或者直接向非法用戶返回虛假的數(shù)據(jù)信息,甚至是返回一個(gè)與數(shù)據(jù)請求完全無關(guān)的數(shù)據(jù)頁面。
[0060]可見,本實(shí)施例能夠從瀏覽器的角度出發(fā),能夠檢測用任意種類的瀏覽器,包括偽造請求頭的瀏覽器和模擬的瀏覽器來獲取服務(wù)器端的數(shù)據(jù)的爬蟲,且通過攜帶檢測腳本,使得爬蟲開發(fā)者無法通過分析頁面代碼來獲得服務(wù)器端返回的加密的響應(yīng)消息,而對于分散了 IP地址的爬蟲,也無法躲避本申請從瀏覽器的屬性和瀏覽器本身的特性出發(fā)所執(zhí)行的雙重檢測攔截,并且,通過對請求次數(shù)的判斷,能夠進(jìn)一步加強(qiáng)對分散IP地址的爬蟲進(jìn)行檢測。保護(hù)了服務(wù)器不受非法請求的攻擊,節(jié)省了服務(wù)器資源,降低了網(wǎng)絡(luò)帶寬消耗,能夠防止XSS(Cross Site Scripting,跨站腳本攻擊)、SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)等攻擊,保護(hù)了網(wǎng)絡(luò)安全。能夠更加全面地、徹底地檢測網(wǎng)絡(luò)內(nèi)的爬蟲。
[0061 ] 實(shí)施例2
[0062]本實(shí)施例提供一種爬蟲檢測系統(tǒng),如圖2所示,包括一客戶端I和一服務(wù)器2,所述客戶端I包括一設(shè)置模塊11、一請求模塊12、一第一判斷模塊13和一運(yùn)行模塊14,所述服務(wù)器2包括一檢測模塊21 ;
[0063]所述設(shè)置模塊11用于設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型;
[0064]所述請求模塊12用于通過瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求;
[0065]所述檢測模塊21用于根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性;
[0066]所述第一判斷模塊13用于判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,調(diào)用所述運(yùn)行模塊,若否,則所述數(shù)據(jù)請求為一爬蟲;
[0067]所述運(yùn)行模塊14用于運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲。
[0068]所述服務(wù)器2內(nèi)存儲(chǔ)有一腳本庫,所述腳本庫包括若干個(gè)瀏覽器的屬性和與每一瀏覽器的屬性對應(yīng)的至少一檢測腳本,所述檢測模塊用于根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本為:
[0069]所述檢測模塊21用于根據(jù)所述跨域服務(wù)類型和所述屬性查詢所述腳本庫以獲得與所述屬性對應(yīng)的檢測腳本,并在獲得的檢測腳本中隨機(jī)抽取一檢測腳本以發(fā)送至所述客戶端。
[0070]所述服務(wù)器還包括一第二判斷模塊22,所述第二判斷模塊22用于判斷所述請求頭的請求次數(shù)是否達(dá)到一次數(shù)閾值,若是,則所述數(shù)據(jù)請求為一爬蟲。
[0071]所述服務(wù)器還包括一響應(yīng)模塊23,所述響應(yīng)模塊23用于在檢測到所述數(shù)據(jù)請求為一爬蟲時(shí)根據(jù)所述數(shù)據(jù)請求返回一響應(yīng)消息至客戶端的瀏覽器以顯示所述響應(yīng)消息,所述響應(yīng)消息包括警告信息或誤導(dǎo)信息。
[0072]本實(shí)施例的爬蟲檢測系統(tǒng)可以采用實(shí)施例1的方法進(jìn)行工作,該系統(tǒng)主要在客戶端上做驗(yàn)證,并在客戶端驗(yàn)證通過后才開放服務(wù)器端返回的真實(shí)的響應(yīng)數(shù)據(jù),還能對爬蟲用戶執(zhí)行多重檢測,能夠獲得與實(shí)施例1相同的技術(shù)效果。
[0073]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種爬蟲檢測方法,其特征在于,包括: S1、設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型; &、客戶端的瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求; 53、服務(wù)器根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性; 54、客戶端判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,進(jìn)入步驟S5,若否,則所述數(shù)據(jù)請求為一爬蟲; 55、客戶端運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲。2.如權(quán)利要求1所述的爬蟲檢測方法,其特征在于,所述服務(wù)器內(nèi)存儲(chǔ)有一腳本庫,所述腳本庫包括若干個(gè)瀏覽器的屬性和與每一瀏覽器的屬性對應(yīng)的至少一檢測腳本,步驟S3中根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本為: 531、服務(wù)器根據(jù)所述跨域服務(wù)類型和所述屬性查詢所述腳本庫以獲得與所述屬性對應(yīng)的檢測腳本,并在獲得的檢測腳本中隨機(jī)抽取一檢測腳本以發(fā)送至所述客戶端。3.如權(quán)利要求1所述的爬蟲檢測方法,其特征在于,步驟S4中在判斷結(jié)果為是時(shí)還執(zhí)行以下步驟: S5a、判斷所述請求頭的請求次數(shù)是否達(dá)到一次數(shù)閾值,若是,則所述數(shù)據(jù)請求為一爬蟲。4.如權(quán)利要求1所述的爬蟲檢測方法,其特征在于,所述請求頭包括客戶端的瀏覽器類型和客戶端的瀏覽器版本,以及包括客戶端的硬件平臺(tái)、客戶端的操作系統(tǒng)和客戶端的用戶偏好中的一項(xiàng)或多項(xiàng),步驟S3中服務(wù)器根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性為: 532、服務(wù)器通過NodeJS的方式檢測所述瀏覽器的屬性。5.如權(quán)利要求1-4中任意一項(xiàng)所述的爬蟲檢測方法,其特征在于,在檢測到所述數(shù)據(jù)請求為一爬蟲時(shí)還執(zhí)行以下步驟: S5b、服務(wù)器根據(jù)所述數(shù)據(jù)請求返回一響應(yīng)消息至客戶端的瀏覽器以顯示所述響應(yīng)消息,所述響應(yīng)消息包括警告信息或誤導(dǎo)信息。6.如權(quán)利要求1-4中任意一項(xiàng)所述的爬蟲檢測方法,其特征在于,所述跨域服務(wù)類型包括JSONP跨域服務(wù),所述瀏覽器的屬性包括瀏覽器的類別和瀏覽器的版本; 和/或,步驟S3還對所述檢測腳本執(zhí)行壓縮混淆操作后將壓縮混淆的檢測腳本返回至客戶端。7.一種爬蟲檢測系統(tǒng),其特征在于,包括一客戶端和一服務(wù)器,所述客戶端包括一設(shè)置模塊、一請求模塊、一第一判斷模塊和一運(yùn)行模塊,所述服務(wù)器包括一檢測模塊; 所述設(shè)置模塊用于設(shè)置客戶端與服務(wù)器之間的跨域服務(wù)類型; 所述請求模塊用于通過瀏覽器向服務(wù)器發(fā)送一數(shù)據(jù)請求; 所述檢測模塊用于根據(jù)所述數(shù)據(jù)請求的請求頭檢測所述瀏覽器的屬性,并根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本,所述檢測腳本用于檢測所述瀏覽器的特性; 所述第一判斷模塊用于判斷所述屬性是否與所述瀏覽器的實(shí)際屬性相同,若是,調(diào)用所述運(yùn)行模塊,若否,則所述數(shù)據(jù)請求為一爬蟲; 所述運(yùn)行模塊用于運(yùn)行所述檢測腳本,并在所述檢測腳本運(yùn)行失敗時(shí)將所述數(shù)據(jù)請求識別為一爬蟲。8.如權(quán)利要求7所述的爬蟲檢測系統(tǒng),其特征在于,所述服務(wù)器內(nèi)存儲(chǔ)有一腳本庫,所述腳本庫包括若干個(gè)瀏覽器的屬性和與每一瀏覽器的屬性對應(yīng)的至少一檢測腳本,所述檢測模塊用于根據(jù)所述跨域服務(wù)類型和所述屬性返回一檢測腳本為: 所述檢測模塊用于根據(jù)所述跨域服務(wù)類型和所述屬性查詢所述腳本庫以獲得與所述屬性對應(yīng)的檢測腳本,并在獲得的檢測腳本中隨機(jī)抽取一檢測腳本以發(fā)送至所述客戶端。9.如權(quán)利要求7所述的爬蟲檢測系統(tǒng),其特征在于,所述服務(wù)器還包括一第二判斷模塊,所述第二判斷模塊用于判斷所述請求頭的請求次數(shù)是否達(dá)到一次數(shù)閾值,若是,則所述數(shù)據(jù)請求為一爬蟲。10.如權(quán)利要求7-9中任意一項(xiàng)所述的爬蟲檢測系統(tǒng),其特征在于,所述服務(wù)器還包括一響應(yīng)模塊,所述響應(yīng)模塊用于在檢測到所述數(shù)據(jù)請求為一爬蟲時(shí)根據(jù)所述數(shù)據(jù)請求返回一響應(yīng)消息至客戶端的瀏覽器以顯示所述響應(yīng)消息,所述響應(yīng)消息包括警告信息或誤導(dǎo)信息。
【文檔編號】H04L29/06GK105871850SQ201610206481
【公開日】2016年8月17日
【申請日】2016年4月5日
【發(fā)明人】陳劍, 李巍
【申請人】攜程計(jì)算機(jī)技術(shù)(上海)有限公司