網(wǎng)絡(luò)爬蟲(chóng)概述
網(wǎng)絡(luò)爬蟲(chóng)(Web Crawler),又稱網(wǎng)絡(luò)蜘蛛(Web Spider)或網(wǎng)絡(luò)機(jī)器人(Web Robot),是一種按照一定的規(guī)則自動(dòng)抓取萬(wàn)維網(wǎng)資源的程序或者腳本,已被廣泛應(yīng)用于互聯(lián)網(wǎng)領(lǐng)域。搜索引擎使用網(wǎng)絡(luò)爬蟲(chóng)抓取Web網(wǎng)頁(yè)、文檔甚至圖片、音頻、視頻等資源,通過(guò)相應(yīng)的索引技術(shù)組織這些信息,提供給搜索用戶進(jìn)行查詢。隨著網(wǎng)絡(luò)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。不斷優(yōu)化的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)正在有效地應(yīng)對(duì)這種挑戰(zhàn),為高效搜索用戶關(guān)注的特定領(lǐng)域與主題提供了有力支撐。網(wǎng)絡(luò)爬蟲(chóng)也為中小站點(diǎn)的推廣提供了有效的途徑,網(wǎng)站針對(duì)搜索引擎爬蟲(chóng)的優(yōu)化曾風(fēng)靡一時(shí)。
傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)從一個(gè)或若干個(gè)初始網(wǎng)頁(yè)的URL(Universal Resource Locator統(tǒng)一資源定位符)開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定條件停止抓取。現(xiàn)階段網(wǎng)絡(luò)爬蟲(chóng)已發(fā)展為涵蓋網(wǎng)頁(yè)數(shù)據(jù)抽取、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、語(yǔ)義理解等多種方法綜合應(yīng)用的智能工具。
網(wǎng)絡(luò)爬蟲(chóng)的安全性問(wèn)題
由于網(wǎng)絡(luò)爬蟲(chóng)的策略是盡可能多的“爬過(guò)”網(wǎng)站中的高價(jià)值信息,會(huì)根據(jù)特定策略盡可能多的訪問(wèn)頁(yè)面,占用網(wǎng)絡(luò)帶寬并增加Web服務(wù)器的處理開(kāi)銷(xiāo),不少小型站點(diǎn)的站長(zhǎng)發(fā)現(xiàn)當(dāng)網(wǎng)絡(luò)爬蟲(chóng)光顧的時(shí)候,訪問(wèn)流量將會(huì)有明顯的增長(zhǎng)。惡意用戶可以利用爬蟲(chóng)程序?qū)eb站點(diǎn)發(fā)動(dòng)DoS攻擊,使Web服務(wù)在大量爬蟲(chóng)程序的暴力訪問(wèn)下,資源耗盡而不能提供正常服務(wù)。惡意用戶還可能通過(guò)網(wǎng)絡(luò)爬蟲(chóng)抓取各種敏感資料用于不正當(dāng)用途,主要表現(xiàn)在以下幾個(gè)方面:
1)搜索目錄列表
互聯(lián)網(wǎng)中的許多Web服務(wù)器在客戶端請(qǐng)求該站點(diǎn)中某個(gè)沒(méi)有默認(rèn)頁(yè)面的目錄時(shí),會(huì)返回一個(gè)目錄列表。該目錄列表通常包括可供用戶點(diǎn)擊的目錄和文件鏈接,通過(guò)這些鏈接可以訪問(wèn)下一層目錄及當(dāng)前目錄中的文件。因而通過(guò)抓取目錄列表,惡意用戶往往可獲取大量有用的資料,包括站點(diǎn)的目錄結(jié)構(gòu)、敏感文件以及 Web服務(wù)器設(shè)計(jì)架構(gòu)及配置信息等等,比如程序使用的配置文件、日志文件、密碼文件、數(shù)據(jù)庫(kù)文件等,都有可能被網(wǎng)絡(luò)爬蟲(chóng)抓取。這些信息可以作為挑選攻擊目標(biāo)或者直接入侵站點(diǎn)的重要資料。
2)搜索測(cè)試頁(yè)面、手冊(cè)文檔、樣本程序及可能存在的缺陷程序
大多數(shù)Web服務(wù)器軟件附帶了測(cè)試頁(yè)面、幫助文檔、樣本程序及調(diào)試用后門(mén)程序等。這些文件往往會(huì)泄漏大量的系統(tǒng)信息甚至提供繞過(guò)認(rèn)證直接訪問(wèn)Web服務(wù)數(shù)據(jù)的方法,成為惡意用戶分析攻擊Web服務(wù)器的有效情報(bào)來(lái)源。而且這些文件的存在本身也暗示網(wǎng)站中存在潛在的安全漏洞。
3)搜索管理員登錄頁(yè)面
許多網(wǎng)絡(luò)產(chǎn)品提供了基于Web的管理接口,允許管理員在互聯(lián)網(wǎng)中對(duì)其進(jìn)行遠(yuǎn)程管理與控制。如果管理員疏于防范,沒(méi)有修改網(wǎng)絡(luò)產(chǎn)品默認(rèn)的管理員名及密碼,一旦其管理員登錄頁(yè)面被惡意用戶搜索到,網(wǎng)絡(luò)安全將面臨極大的威脅。
4)搜索互聯(lián)網(wǎng)用戶的個(gè)人資料
互聯(lián)網(wǎng)用戶的個(gè)人資料包括姓名、身份證號(hào)、電話、Email地址、QQ號(hào)、通信地址等個(gè)人信息,惡意用戶獲取后容易利用社會(huì)工程學(xué)實(shí)施攻擊或詐騙。
因此,采取適當(dāng)?shù)拇胧┫拗凭W(wǎng)絡(luò)爬蟲(chóng)的訪問(wèn)權(quán)限,向網(wǎng)絡(luò)爬蟲(chóng)開(kāi)放網(wǎng)站希望推廣的頁(yè)面,屏蔽比較敏感的頁(yè)面,對(duì)于保持網(wǎng)站的安全運(yùn)行、保護(hù)用戶的隱私是極其重要的。
基于網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的Web漏洞掃描
前面提到的網(wǎng)絡(luò)爬蟲(chóng)對(duì)網(wǎng)站的間接安全威脅,是通過(guò)對(duì)網(wǎng)絡(luò)站點(diǎn)的信息收集為不法份子的非法訪問(wèn)、攻擊或詐騙作準(zhǔn)備。隨著安全技術(shù)的發(fā)展,利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)對(duì)Web漏洞的直接探測(cè)已經(jīng)出現(xiàn),這會(huì)直接影響到Web服務(wù)器的安全。Web服務(wù)器漏洞中,跨站腳本(Cross Site Script)漏洞與SQL注入(SQL Injection)漏洞所占比例很高,這兩種漏洞均可以通過(guò)對(duì)網(wǎng)絡(luò)爬蟲(chóng)的改進(jìn)來(lái)進(jìn)行探測(cè)。由于缺乏足夠的安全知識(shí),相當(dāng)多的程序員在編寫(xiě)Web應(yīng)用程序時(shí)對(duì)網(wǎng)頁(yè)的請(qǐng)求內(nèi)容缺乏足夠的檢查,使得不少Web應(yīng)用程序存在安全隱患。用戶可以通過(guò)提交一段精心構(gòu)造的包含SQL語(yǔ)句或腳本的URL請(qǐng)求,根據(jù)程序的返回結(jié)果獲得有關(guān)的敏感信息甚至直接修改后臺(tái)數(shù)據(jù)。基于目前的安全現(xiàn)狀,網(wǎng)絡(luò)爬蟲(chóng)技術(shù)在Web漏洞掃描上的應(yīng)用,大大提高了發(fā)現(xiàn)漏洞的效率。
基于網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的Web漏洞掃描大至分為如下過(guò)程:
1)頁(yè)面過(guò)濾:通過(guò)自動(dòng)化的程序抓取網(wǎng)站頁(yè)面,對(duì)包含
等標(biāo)簽的Web頁(yè)面進(jìn)行URL提取處理,這些HTML標(biāo)簽中包含URL信息,便于惡意用戶進(jìn)行更深入的Web訪問(wèn)或提交操作。
2)URL 匹配:對(duì)Web頁(yè)面中的URL進(jìn)行自動(dòng)匹配,提取由參數(shù)組合而成的動(dòng)態(tài)查詢URL或提交URL,進(jìn)行下一步的漏洞探測(cè)。如動(dòng)態(tài)查詢 URL“http://baike.xxxx.com/searchword/?word=frameset&pic=1”,其中 frameset為URL中動(dòng)態(tài)的參數(shù)部分,可以進(jìn)行參數(shù)變換。提交URL用于把Web用戶的輸入提交到服務(wù)器進(jìn)行處理,其參數(shù)多為用戶輸入,同樣可以進(jìn)行參數(shù)變換。
3)漏洞試探:根據(jù)動(dòng)態(tài)查詢URL或提交URL,自動(dòng)在參數(shù)部分進(jìn)行參數(shù)變換,插入引號(hào)、分號(hào)(SQL注入對(duì)其敏感)及 script標(biāo)簽(XSS對(duì) 其敏感)等操作進(jìn)行試探,并根據(jù)Web服務(wù)器返回的結(jié)果自動(dòng)判斷是否存在漏洞。如“URL匹配”中的動(dòng)態(tài)查詢URL可以變換成 http://baike.xxxx.com/searchword/?word= &pic=1進(jìn)行跨站腳本漏洞探測(cè)。
如何應(yīng)對(duì)爬蟲(chóng)的安全威脅
由于網(wǎng)絡(luò)爬蟲(chóng)帶來(lái)的安全威脅,不少網(wǎng)站的管理人員都在考慮對(duì)爬蟲(chóng)訪問(wèn)進(jìn)行限制甚至拒絕爬蟲(chóng)訪問(wèn)。實(shí)際上,根據(jù)網(wǎng)站內(nèi)容的安全性及敏感性,區(qū)別對(duì)待爬 蟲(chóng)是比較理想的措施。網(wǎng)站的URL組織應(yīng)該根據(jù)是否為適合大范圍公開(kāi),設(shè)置不同的URL路徑,在同一Web頁(yè)面中既有需要完全公開(kāi)信息也有敏感信息時(shí),應(yīng) 通過(guò)鏈接、標(biāo)簽嵌入網(wǎng)頁(yè)等方式顯示敏感內(nèi)容,另外盡可能把靜態(tài)頁(yè)面等經(jīng)評(píng)估安全性較高的頁(yè)面與安全性較差的動(dòng)態(tài)頁(yè)面從URL上分開(kāi)。當(dāng)限制爬蟲(chóng)時(shí)可以針對(duì) URL路徑的安全性與敏感性對(duì)不同種類(lèi)的爬蟲(chóng)與代理進(jìn)行限制。
限制爬蟲(chóng)可以通過(guò)以下幾種方法實(shí)現(xiàn):
1) 設(shè)置robots.txt文件
限制爬蟲(chóng)最簡(jiǎn)單的方法是設(shè)置robots.txt文件。robots.txt文件是搜索引擎爬蟲(chóng)訪問(wèn)網(wǎng)站的時(shí)候要查看的第一個(gè)文件,它告訴爬蟲(chóng)程序在服務(wù)器上什么文件是可以被查看的,如設(shè)置Disallow: /,則表示所有的路徑均不能查看。遺憾的是并不是所有的搜索引擎爬蟲(chóng)會(huì)遵守這個(gè)規(guī)則,因此僅僅設(shè)置robots文件是不夠的。
2) User Agent識(shí)別與限制
要對(duì)不理會(huì)robots.txt文件的爬蟲(chóng)訪問(wèn)進(jìn)行限制,首先要把爬蟲(chóng)流量與普通用戶的訪問(wèn)流量進(jìn)行區(qū)分,即對(duì)其進(jìn)行識(shí)別。一般的爬蟲(chóng)程序都可以通過(guò)其 HTTP請(qǐng)求中的User Agent字段進(jìn)行識(shí)別,該字段使服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU類(lèi)型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等。爬蟲(chóng)的User Agent字段一般與瀏覽器的有所不同,如Google搜索引擎爬蟲(chóng)User Agent字段中會(huì)有類(lèi)似Googlebot的字符串,如User-Agent: Googlebot/2.1 ( http://www.google.com/bot.html),百度搜索引擎爬蟲(chóng)則會(huì)有類(lèi)似Baiduspider的字符串。不少Web服務(wù)器軟件如 Apache,可以設(shè)置通過(guò)User Agent字段進(jìn)行訪問(wèn)過(guò)濾,可以比較有效的限制大部分爬蟲(chóng)的訪問(wèn)。
3) 通過(guò)訪問(wèn)行為特征識(shí)別與限制
對(duì)于在HTTP請(qǐng)求的User Agent字段刻意偽裝成瀏覽器的爬蟲(chóng),可以通過(guò)其訪問(wèn)行為特征進(jìn)行識(shí)別。爬蟲(chóng)程序的訪問(wèn)一般是有規(guī)律性的頻率比較高,區(qū)別于真實(shí)用戶瀏覽時(shí)的隨意性與低 頻率。對(duì)這類(lèi)爬蟲(chóng)的限制原理與DDoS攻擊的防御原理很相似,都基于統(tǒng)計(jì)數(shù)據(jù)。對(duì)于這類(lèi)爬蟲(chóng)的限制只能通過(guò)應(yīng)用識(shí)別設(shè)備、IPS等能夠做深度識(shí)別的網(wǎng)絡(luò)設(shè) 備來(lái)實(shí)現(xiàn)。用網(wǎng)絡(luò)設(shè)備限制網(wǎng)絡(luò)爬蟲(chóng),不僅比較全面,而且非常適合在多服務(wù)器情況下進(jìn)行統(tǒng)一的管理,避免多服務(wù)器單獨(dú)管理有可能造成的疏漏。
結(jié)束語(yǔ)
網(wǎng)絡(luò)爬蟲(chóng)及其對(duì)應(yīng)的技術(shù)為網(wǎng)站帶來(lái)了可觀訪問(wèn)量的同時(shí),也帶來(lái)了直接與間接的安全威脅,越來(lái)越多的網(wǎng)站開(kāi)始關(guān)注對(duì)網(wǎng)絡(luò)爬蟲(chóng)的限制問(wèn)題。隨著互聯(lián)網(wǎng)的 高速發(fā)展,基于網(wǎng)絡(luò)爬蟲(chóng)與搜索引擎技術(shù)的互聯(lián)網(wǎng)應(yīng)用將會(huì)越來(lái)越多,網(wǎng)站管理員及安全人員,有必要了解爬蟲(chóng)的原理及限制方法,準(zhǔn)備好應(yīng)對(duì)各種各樣的網(wǎng)絡(luò)爬蟲(chóng)。
如果有需要服務(wù)器的租用與托管的敬請(qǐng)聯(lián)系QQ:1501281758 聯(lián)系電話:0371-63322220