鄒建鑫,李紅靈
(云南大學(xué) 信息學(xué)院 計(jì)算機(jī)科學(xué)與工程系,云南 昆明 650000)
基于網(wǎng)站訪問(wèn)行為的匿名爬蟲(chóng)檢測(cè)
鄒建鑫,李紅靈
(云南大學(xué) 信息學(xué)院 計(jì)算機(jī)科學(xué)與工程系,云南 昆明 650000)
通過(guò)分析和研究網(wǎng)絡(luò)爬蟲(chóng)訪問(wèn)網(wǎng)頁(yè)內(nèi)容的行為,針對(duì)惡意網(wǎng)絡(luò)爬蟲(chóng)偽裝成瀏覽器訪問(wèn)網(wǎng)站難以甄別、網(wǎng)站日志檢測(cè)工具不支持匿名網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)等問(wèn)題,總結(jié)了一些基于機(jī)器人排斥協(xié)議和基于爬蟲(chóng)行為的惡意網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)算法。通過(guò)這些網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)算法的啟發(fā),提出一種基于爬蟲(chóng)行為的檢測(cè)匿名爬蟲(chóng)算法。該算法主要根據(jù)人為訪問(wèn)網(wǎng)站與網(wǎng)絡(luò)爬蟲(chóng)訪問(wèn)網(wǎng)站時(shí)間的長(zhǎng)短、訪問(wèn)的周期等,對(duì)網(wǎng)絡(luò)爬蟲(chóng)進(jìn)行檢測(cè),同時(shí)對(duì)算法進(jìn)行了實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)數(shù)據(jù)來(lái)自一個(gè)服務(wù)器的網(wǎng)絡(luò)日志。應(yīng)用Python對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行處理,從而對(duì)網(wǎng)絡(luò)匿名爬蟲(chóng)進(jìn)行檢測(cè),并與當(dāng)前主流的匿名網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)算法進(jìn)行比較。結(jié)果表明,該算法能夠檢測(cè)出并發(fā)量小的匿名的網(wǎng)絡(luò)爬蟲(chóng)。
網(wǎng)絡(luò)爬蟲(chóng);網(wǎng)絡(luò)機(jī)器人排斥協(xié)議;網(wǎng)站訪問(wèn)行為;匿名爬蟲(chóng)檢測(cè)
為了批量抓取互聯(lián)網(wǎng)網(wǎng)站中的特定鏈接和內(nèi)容,20世紀(jì)90年代出現(xiàn)了一種自身?yè)碛兴阉鞑呗缘木W(wǎng)絡(luò)程序,將其命名為網(wǎng)絡(luò)爬蟲(chóng)(Web Crawler)[1]。網(wǎng)絡(luò)爬蟲(chóng)首先廣泛應(yīng)用于搜索引擎(如Google的Googlebot),其主要任務(wù)是從互聯(lián)網(wǎng)抓取內(nèi)容,將抓取的內(nèi)容經(jīng)過(guò)整理后放入自己公司搜索引擎的索引庫(kù)中,以供用戶進(jìn)行內(nèi)容查詢。
隨著大數(shù)據(jù)[2]時(shí)代的到來(lái)和數(shù)據(jù)挖掘[3]的應(yīng)用,網(wǎng)絡(luò)爬蟲(chóng)也隨之迅猛發(fā)展,從而使其成為全球互聯(lián)網(wǎng)的一大公害。除了一些專(zhuān)門(mén)從事搜索引擎[4]的公司,如:Google、微軟、百度外,國(guó)內(nèi)大多數(shù)大型門(mén)戶網(wǎng)站都開(kāi)發(fā)了自己的搜索引擎,如:搜狐、騰訊、網(wǎng)易等等,此外還有很多國(guó)內(nèi)外不知名的搜索引擎,甚至一些學(xué)生組織的科研機(jī)構(gòu)等完成的小型搜索引擎。網(wǎng)絡(luò)上充斥著如此數(shù)量巨大的網(wǎng)絡(luò)爬蟲(chóng)[5],會(huì)影響網(wǎng)站安全[6],阻塞網(wǎng)絡(luò)[7]。
現(xiàn)今主流的網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)[8]方法主要為三種。第一:限制單個(gè)IP/api token的訪問(wèn)量,比如15分鐘限制訪問(wèn)180次;第二:蜜罐資源,在網(wǎng)站頁(yè)面中嵌入瀏覽器不能看到的資源,如果有IP訪問(wèn)了就視為爬蟲(chóng);第三:利用網(wǎng)站日志分析工具awstats等對(duì)網(wǎng)絡(luò)日志進(jìn)行定期分析,找出并發(fā)量大的匿名訪問(wèn)IP。但這幾種方法對(duì)于并發(fā)量小的,只是抓取特定內(nèi)容的匿名爬蟲(chóng)顯得無(wú)能為力,只有從其訪問(wèn)行為上才能區(qū)別出來(lái)。
網(wǎng)絡(luò)爬蟲(chóng)實(shí)質(zhì)上是一種駐留在某個(gè)主機(jī)之內(nèi)的軟件[9-11],并不會(huì)在互聯(lián)網(wǎng)中移動(dòng)。主體思想是通過(guò)主機(jī)(如:個(gè)人電腦、服務(wù)器等)發(fā)送HTTP請(qǐng)求來(lái)獲取網(wǎng)頁(yè),應(yīng)用自身的搜索策略從獲取的網(wǎng)頁(yè)中得到超鏈接(URL),又通過(guò)超鏈接不斷地遞歸下去。其行為類(lèi)似于人使用瀏覽器訪問(wèn)英特網(wǎng)中的網(wǎng)頁(yè),但其行為是根據(jù)爬取策略來(lái)自動(dòng)完成和實(shí)現(xiàn)的。
爬蟲(chóng)的一般遞歸策略為:首先選定要爬取的地址,將這些地址放入列表當(dāng)中;其次根據(jù)列表中的地址自動(dòng)發(fā)送HTTP請(qǐng)求,獲取相應(yīng)的網(wǎng)頁(yè)之后,再對(duì)網(wǎng)頁(yè)進(jìn)行分析,得到更多的URL;最后對(duì)得到的URL進(jìn)行分析并過(guò)濾掉列表中已有的URL,將沒(méi)有的URL增加到自己的爬取列表中。重復(fù)以上步驟,遞歸地進(jìn)行爬取操作。
為了使網(wǎng)絡(luò)爬蟲(chóng)和Web服務(wù)器協(xié)同工作,在保障網(wǎng)站安全運(yùn)行的前提下,允許網(wǎng)絡(luò)爬蟲(chóng)抓取網(wǎng)站上的某些數(shù)據(jù),1994年眾多網(wǎng)絡(luò)爬蟲(chóng)作者以及網(wǎng)絡(luò)爬蟲(chóng)愛(ài)好者共同商討,提出了網(wǎng)絡(luò)機(jī)器人排斥標(biāo)準(zhǔn)。
網(wǎng)絡(luò)機(jī)器人排斥協(xié)議[12](Standard for Robot Exclusion,SRE):由網(wǎng)站管理員或者網(wǎng)站設(shè)計(jì)人員在服務(wù)器的根目錄下,設(shè)置robots.txt文件來(lái)實(shí)現(xiàn)。在這個(gè)文件中明確標(biāo)明了網(wǎng)絡(luò)爬蟲(chóng)不可以抓取本網(wǎng)站的資源信息,文件的內(nèi)容由一條或者多條記錄聯(lián)合構(gòu)成。每一條記錄包含一個(gè)或者多個(gè)User-Agent,每個(gè)User-Agent后包含一個(gè)或者多個(gè)Disallow行。User-Agent所記錄的是一些網(wǎng)絡(luò)爬蟲(chóng)的名稱(chēng),表示這些爬蟲(chóng)可以訪問(wèn)該網(wǎng)站中的網(wǎng)頁(yè)。Disallow的值是一些禁止訪問(wèn)本網(wǎng)站的網(wǎng)頁(yè)鏈接名稱(chēng),在同一個(gè)記錄的User-Agent行中列出的網(wǎng)絡(luò)爬蟲(chóng)將不能訪問(wèn)這些網(wǎng)頁(yè)鏈接名稱(chēng)。
網(wǎng)絡(luò)機(jī)器人排斥協(xié)議的Robots.txt范例如圖1所示。
User-agent:Disallow:
圖1 Robots.txt范例
Web服務(wù)器日志記錄[13]是用戶訪問(wèn)該站點(diǎn)發(fā)出請(qǐng)求所產(chǎn)生的信息,對(duì)于遵守機(jī)器人排斥協(xié)議標(biāo)準(zhǔn)的網(wǎng)絡(luò)爬蟲(chóng)可以直接通過(guò)訪問(wèn)記錄將其檢測(cè)出來(lái),方法有以下5種。
網(wǎng)絡(luò)機(jī)器人排斥協(xié)議中明確規(guī)定,爬蟲(chóng)訪問(wèn)站點(diǎn)的網(wǎng)頁(yè)前,必須先訪問(wèn)Robots.txt文件。也就是首先要有一個(gè)請(qǐng)求資源robots.txt,從服務(wù)器管理的角度,在管理Web服務(wù)器時(shí),如果一個(gè)網(wǎng)絡(luò)爬蟲(chóng)沒(méi)有請(qǐng)求robots.txt就直接按照自身的搜索策略來(lái)對(duì)網(wǎng)站進(jìn)行爬取,那么就視這個(gè)網(wǎng)絡(luò)爬蟲(chóng)為惡意爬蟲(chóng)。
對(duì)于每個(gè)遵守機(jī)器人排斥協(xié)議的網(wǎng)絡(luò)爬蟲(chóng),在發(fā)送網(wǎng)頁(yè)請(qǐng)求時(shí),一定會(huì)將自己的User-Agent封裝在請(qǐng)求頭當(dāng)中,而且自身的User-Agent是網(wǎng)絡(luò)當(dāng)中特有的,不會(huì)是某個(gè)瀏覽器的名稱(chēng)。由此可以通過(guò)User-Agent來(lái)檢測(cè)是否為爬蟲(chóng)程序。但是一般惡意爬蟲(chóng)會(huì)通過(guò)設(shè)置User-Agent的內(nèi)容來(lái)偽裝瀏覽器。
IP地址記錄了訪問(wèn)網(wǎng)站站點(diǎn)的源地址,根據(jù)源地址是否大量發(fā)送鏈接請(qǐng)求,可以用來(lái)鑒別是否為網(wǎng)絡(luò)爬蟲(chóng),確定為網(wǎng)絡(luò)爬蟲(chóng)之后可以通過(guò)封禁IP地址來(lái)達(dá)到控制網(wǎng)站訪問(wèn)的目的。但目前大部分爬蟲(chóng)程序IP地址是動(dòng)態(tài)變化的,或者是直接通過(guò)代理IP對(duì)網(wǎng)站進(jìn)行爬取,所以IP地址檢測(cè)的漏檢率與誤判率比較高。
一些簡(jiǎn)易的爬蟲(chóng)程序不會(huì)在發(fā)送的Request請(qǐng)求當(dāng)中封裝Referer字段,Web服務(wù)器可以通過(guò)檢查HTTP請(qǐng)求頭中是否具有Referer字段來(lái)識(shí)別網(wǎng)絡(luò)爬蟲(chóng)。在地址欄中直接輸入鏈接,產(chǎn)生的Request請(qǐng)求中沒(méi)有這個(gè)字段,這個(gè)字段也可以被封裝進(jìn)Header當(dāng)中,所以這種方法的檢錯(cuò)率也可能較低。
部分網(wǎng)絡(luò)爬蟲(chóng)為了減少請(qǐng)求服務(wù)器的開(kāi)銷(xiāo)回應(yīng),在Method域中采用HEAD方法來(lái)請(qǐng)求。如果在網(wǎng)絡(luò)日志當(dāng)中有某個(gè)IP擁有很多的HEAD請(qǐng)求,則此網(wǎng)站訪問(wèn)者可能被判定為網(wǎng)絡(luò)爬蟲(chóng)。
以上5種方法主要針對(duì)遵循網(wǎng)絡(luò)機(jī)器人排斥標(biāo)準(zhǔn)的靜態(tài)的網(wǎng)絡(luò)爬蟲(chóng)的檢測(cè),但各有其優(yōu)缺點(diǎn),結(jié)合幾種方法同時(shí)考慮會(huì)提供準(zhǔn)確度。但是網(wǎng)絡(luò)機(jī)器人排斥協(xié)議所定義的一些內(nèi)容并不能夠限制惡意網(wǎng)絡(luò)爬蟲(chóng)對(duì)網(wǎng)站的抓取,因?yàn)閻阂饩W(wǎng)絡(luò)爬蟲(chóng)現(xiàn)今基本上都封裝成假冒的Request請(qǐng)求,盡最大努力地模仿瀏覽器[14]的行為,甚至出現(xiàn)了一些專(zhuān)用工具。如Phantomjs,這是一個(gè)沒(méi)有界面的瀏覽器,專(zhuān)門(mén)解析網(wǎng)站中動(dòng)態(tài)生成的JS文件以及AJXS文件,Phantomjs本身就是瀏覽器,通過(guò)它的訪問(wèn)都可以偽裝成一個(gè)真正用戶的請(qǐng)求。只有通過(guò)服務(wù)器日志的行為分析才能夠區(qū)分出這是一個(gè)偽裝爬蟲(chóng)。檢測(cè)出來(lái)后,服務(wù)器管理員可以通過(guò)IP封鎖[15]等方式對(duì)這些惡意爬蟲(chóng)進(jìn)行相應(yīng)處理。
遵守網(wǎng)絡(luò)機(jī)器人排斥協(xié)議的網(wǎng)絡(luò)爬蟲(chóng)很容易通過(guò)網(wǎng)站日志等進(jìn)行判斷和區(qū)分。而現(xiàn)今許多網(wǎng)絡(luò)爬蟲(chóng)是通過(guò)偽裝成瀏覽器來(lái)進(jìn)行,這就不能夠簡(jiǎn)單地從網(wǎng)站日志當(dāng)中將其區(qū)分出來(lái),需要根據(jù)其行為進(jìn)行動(dòng)態(tài)分析來(lái)進(jìn)行甄別。
在服務(wù)器根目錄的robots.txt文件代碼中,加入不允許訪問(wèn)的網(wǎng)頁(yè)[16],例如/admin/hide.html。這個(gè)網(wǎng)頁(yè)是不存在或者是無(wú)關(guān)緊要的文件,而且這個(gè)網(wǎng)頁(yè)或者文件只在robots.txt里面被提及,一個(gè)網(wǎng)絡(luò)爬蟲(chóng)只有通過(guò)robots.txt才能獲知這個(gè)網(wǎng)頁(yè)。非惡意爬蟲(chóng)遵循robots.txt的規(guī)定,不會(huì)去訪問(wèn)這個(gè)網(wǎng)頁(yè)或者文件,也不會(huì)知道這個(gè)網(wǎng)頁(yè)或者文件的URL,訪問(wèn)該網(wǎng)頁(yè)或者文件的網(wǎng)絡(luò)爬蟲(chóng)極可能就是那些視圖利用robots.txt抓取網(wǎng)站機(jī)密文件的惡意爬蟲(chóng)。
網(wǎng)絡(luò)爬蟲(chóng)通常缺乏足夠的能力去辨別網(wǎng)頁(yè)代碼中各鏈接的真?zhèn)蝃17]。根據(jù)這個(gè)策略,可以在網(wǎng)頁(yè)代碼中加入一些在瀏覽器中不能顯示的或是顯示不明顯的,但是可能被網(wǎng)絡(luò)爬蟲(chóng)訪問(wèn)的隱藏鏈接,通過(guò)這種方式來(lái)捕獲惡意爬蟲(chóng)。例如:鏈接的文本采用與background一樣的顏色,在瀏覽器中很難看出這個(gè)鏈接,正常的網(wǎng)站訪問(wèn)一般情況是不會(huì)訪問(wèn)到這個(gè)鏈接的。如果爬蟲(chóng)爬取了這個(gè)鏈接,即被視為惡意爬蟲(chóng)。另外,如果只是檢測(cè)那些不遵守網(wǎng)絡(luò)爬蟲(chóng)限制策略的爬蟲(chóng),可以在robots.txt中將這些鏈接進(jìn)行Disallow描述。
3.3.1 偽裝成瀏覽器的爬蟲(chóng)行為模式
對(duì)于未知的、匿名的、惡意的網(wǎng)絡(luò)爬蟲(chóng),有幾個(gè)共性:不遵守相關(guān)的協(xié)議、偽裝自己的User-Agent、構(gòu)造虛假的Referer信息、設(shè)置代理Proxy IP。為了識(shí)別它們,不能依靠已經(jīng)存在的協(xié)議,協(xié)議都可能被假冒,只有從其訪問(wèn)模式上進(jìn)行識(shí)別。
從訪問(wèn)模式上看,網(wǎng)絡(luò)爬蟲(chóng)與人為通過(guò)瀏覽器訪問(wèn)有很大的區(qū)別,網(wǎng)絡(luò)爬蟲(chóng)有自己早已設(shè)定好的訪問(wèn)策略,而人為瀏覽是漫無(wú)目的的。例如:網(wǎng)絡(luò)爬蟲(chóng)的搜索策略有廣度優(yōu)先和深度優(yōu)先,并且可以設(shè)置訪問(wèn)深度,人為瀏覽網(wǎng)站一般跨度不可能如此之大。
人為通過(guò)瀏覽器訪問(wèn)某個(gè)網(wǎng)站,步驟是:在瀏覽器當(dāng)中輸入要訪問(wèn)網(wǎng)站的URL,瀏覽器解析URL,然后向解析后的URL地址的服務(wù)器發(fā)送鏈接請(qǐng)求;Web服務(wù)器收到請(qǐng)求后,檢查服務(wù)器上是否存在該資源,如果存在,就將資源傳送,如果沒(méi)有則返回錯(cuò)誤信息,如404等信息;通過(guò)網(wǎng)絡(luò)傳輸之后,瀏覽器收到了網(wǎng)站服務(wù)器發(fā)送的文件,接著就會(huì)對(duì)所收到的文件進(jìn)行解析。接收到的文件是單一文件體,則直接在瀏覽器頁(yè)面當(dāng)中顯示,例如動(dòng)畫(huà)。接收到的文件是ASPX、JS或者是HTML文件,分析出這些文件當(dāng)中需要的嵌入對(duì)象,包括:JS腳本、CSS、圖片、聲音等,按照嵌入對(duì)象順序,發(fā)送嵌入對(duì)象請(qǐng)求;服務(wù)器收到這些請(qǐng)求后,將對(duì)象發(fā)送;瀏覽器收到嵌入對(duì)象后,將這些嵌入對(duì)象裝進(jìn)ASPX、JS、HTML文件中,通過(guò)頁(yè)面處理,將一個(gè)完整的網(wǎng)頁(yè)呈現(xiàn)出來(lái)。綜上所述,人為通過(guò)瀏覽器訪問(wèn)某個(gè)網(wǎng)頁(yè),在服務(wù)器的訪問(wèn)日志中,擁有多條請(qǐng)求記錄。
網(wǎng)絡(luò)爬蟲(chóng)的訪問(wèn)模式則與此有很大的不同:從等待爬取的URL列表當(dāng)中取出一個(gè)URL,假定所請(qǐng)求的是一個(gè)HTML,接下來(lái)把一些必要的參數(shù)封裝進(jìn)鏈接請(qǐng)求,將封裝好的請(qǐng)求發(fā)送出去;服務(wù)器收到請(qǐng)求后,將HTML框架文件發(fā)送回去;爬蟲(chóng)在收到文件之后,對(duì)接收到的文件進(jìn)行解析,將該HTML中的超鏈接進(jìn)行分析,需要的就增加到自己的訪問(wèn)隊(duì)列中,而對(duì)于其他的一些鏈接和嵌入對(duì)象,根據(jù)網(wǎng)絡(luò)爬蟲(chóng)功能、處理方法的不同,選擇直接丟棄或是選擇特定的對(duì)象進(jìn)行抓取。但是有一個(gè)明顯的特點(diǎn)就是并不會(huì)馬上向服務(wù)器發(fā)送對(duì)象請(qǐng)求,所以網(wǎng)絡(luò)爬蟲(chóng)的訪問(wèn),一次請(qǐng)求只在服務(wù)器日志中留下一條記錄信息。
爬蟲(chóng)訪問(wèn)網(wǎng)站和瀏覽器訪問(wèn)網(wǎng)站的行為差異如圖2所示。
圖2 爬蟲(chóng)訪問(wèn)網(wǎng)站和瀏覽器訪問(wèn)網(wǎng)站的行為差異
3.3.2 基于爬蟲(chóng)訪問(wèn)行為模式算法
網(wǎng)絡(luò)上一般網(wǎng)頁(yè)的訪問(wèn)都遵循先請(qǐng)求網(wǎng)頁(yè)框架,然后再向服務(wù)器發(fā)送請(qǐng)求網(wǎng)頁(yè)中的內(nèi)容。所以一個(gè)網(wǎng)頁(yè)由主體的html[18]文件以及嵌入式的網(wǎng)頁(yè)成員構(gòu)成。
定義1 將頁(yè)面的成員定義為:W=
在二元組當(dāng)中,weburl為互聯(lián)網(wǎng)訪問(wèn)的一般URL,webmember為頁(yè)面中所有嵌入式文件對(duì)象的URL集合。兩者的不同是服務(wù)器訪問(wèn)日志記錄中訪問(wèn)狀態(tài)不同,如果說(shuō)請(qǐng)求到了weburl頁(yè)面,服務(wù)器日志記錄中所標(biāo)識(shí)的請(qǐng)求狀態(tài)為200,而請(qǐng)求到webmember對(duì)象,其服務(wù)器日志記錄中的請(qǐng)求狀態(tài)為304。200表示請(qǐng)求成功,而304表示請(qǐng)求重定向到本網(wǎng)站當(dāng)中的資源。
其中,嵌入式的webmember包括:FRAME之類(lèi)的框架網(wǎng)頁(yè)文件;在HTML中的眾多單一文件,例如圖片、聲音、動(dòng)畫(huà)等;JAVASCRIPT之類(lèi)語(yǔ)言的腳本文件;CSS之類(lèi)的樣式文件;Applet Class之類(lèi)的CODE文件。例如,該算法實(shí)驗(yàn)數(shù)據(jù)網(wǎng)頁(yè)index.aspx中包括一個(gè)CSS頁(yè)面/all.css存在服務(wù)器的根目錄當(dāng)中,還有另外九個(gè)圖片文件存在根目錄下的images目錄下。根據(jù)定義構(gòu)造出index.aspx文件的二元組為:
W=
定義2 將每個(gè)訪問(wèn)成員訪問(wèn)過(guò)的資源定義為:
U=
其中,uid為訪問(wèn)者的ID;IP為訪問(wèn)者的IP地址;User-Agent為用戶代理;request為在一段時(shí)間內(nèi)向服務(wù)器發(fā)出的請(qǐng)求;n為請(qǐng)求定義1的二元組的個(gè)數(shù)。
定義3 對(duì)每一條網(wǎng)站訪問(wèn)記錄定義為:
R=
其中,IP為日志訪問(wèn)記錄中的訪問(wèn)者IP;User-Agent為用戶代理;Time為訪問(wèn)時(shí)間;Status為返回狀態(tài)碼。
算法1:偽裝爬蟲(chóng)檢測(cè)算法偽代碼。
Procedure BuildUser:
ListR(定義3)W(定義1)
UserListU(定義2) user(定義2)
Begin
Fori=temp;i temp←temp+1#設(shè)置臨時(shí)變量作為訪問(wèn)點(diǎn) IfR[i].request==W.url then #一條日志當(dāng)中的請(qǐng)求為待檢測(cè)的頁(yè)面 user←new User()#新建一個(gè)訪問(wèn)用戶 user.request.append(R[i].request) #將當(dāng)前請(qǐng)求元素放入用戶請(qǐng)求表中 夾層加熱系統(tǒng)的投入減少機(jī)組啟動(dòng)時(shí)間,降低上下缸溫差,改善機(jī)組啟動(dòng)條件,有效避免因加熱膨脹不均可能發(fā)生的碰磨引起振動(dòng)。鍋爐點(diǎn)火起壓后,爐側(cè)壓力為0.2~0.5 MPa,凝汽器建立真空后稍開(kāi)聯(lián)箱進(jìn)汽門(mén),維持聯(lián)箱壓力0.1~0.3 MPa,對(duì)汽輪機(jī)汽缸夾層加熱供汽及聯(lián)箱暖管疏水;汽輪機(jī)沖轉(zhuǎn)到500 r/min投入汽缸夾層加熱,控制汽缸溫升率小于1.5 ℃/min,使汽缸內(nèi)外加熱均勻;高壓外缸下半外壁金屬溫度達(dá)到320 ℃時(shí)停用夾層加熱系統(tǒng)。 Forj=i+1;R[i].ip==R[j].ip&R[i].ag==R[j].ag;j++ 訪問(wèn)下一條日志判斷條件為ip、agent相同 IfR[j].time-R[i].time<30 then #兩者記錄時(shí)間小于30 s user.request.append(R[j].request) #將當(dāng)前日志請(qǐng)求放入請(qǐng)求表 End If temp←j#臨時(shí)變量記錄訪問(wèn)到哪一個(gè)元素 End For U.append(user)#將訪問(wèn)用戶記錄到用戶表當(dāng)中 End If End For For eachu∈Udo#訪問(wèn)用戶表中的每一個(gè)元素 Ifu.request在W中的request數(shù)為0 then #如果用戶請(qǐng)求中沒(méi)有檢測(cè)頁(yè)面的請(qǐng)求元素,則認(rèn)定此用戶為爬蟲(chóng) Result.append(u)#將用戶放入結(jié)果列表 End If End For Return result#返回檢測(cè)出的爬蟲(chóng)列表 End 通常情況下,人為訪問(wèn)某個(gè)網(wǎng)站[19],通過(guò)瀏覽器來(lái)訪問(wèn)幾乎是同時(shí)對(duì)頁(yè)面元素進(jìn)行請(qǐng)求,時(shí)間一般在0~5 s以內(nèi),一般不超過(guò)30 s。如果是網(wǎng)絡(luò)爬蟲(chóng),請(qǐng)求到頁(yè)面之后請(qǐng)求頁(yè)面內(nèi)容通常會(huì)超過(guò)30 s。最后得出的結(jié)果包含一個(gè)用戶表,而有用的信息就是訪問(wèn)URL成員的數(shù)量,如果數(shù)量為0,幾乎可以判定為偽裝的網(wǎng)絡(luò)爬蟲(chóng)。 對(duì)一個(gè)網(wǎng)站一段時(shí)間的日志進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果如表1所示。 表1 算法檢測(cè)出來(lái)的爬蟲(chóng) 首先用網(wǎng)站分析工具SEO分析這一段時(shí)間內(nèi)的網(wǎng)絡(luò)日志,所得結(jié)果主要有頁(yè)面抓取和爬蟲(chóng)分析(僅針對(duì)爬蟲(chóng)的項(xiàng)),如表2所示。 表2 網(wǎng)站日志分析工具得出的頁(yè)面抓取結(jié)果 實(shí)驗(yàn)當(dāng)中僅僅測(cè)試的是/index.asp頁(yè)面,可以看到狀態(tài)碼為200,這是已經(jīng)申明自己機(jī)構(gòu)的爬蟲(chóng),通過(guò)awstats或者其他的網(wǎng)絡(luò)日志分析工具都可以查出,而匿名的爬蟲(chóng)這些分析工具并不能分析出來(lái)。綜合網(wǎng)絡(luò)日志分析工具,看實(shí)驗(yàn)結(jié)果中的IP請(qǐng)求次數(shù),以及在鏈接當(dāng)中是否跳轉(zhuǎn)過(guò)頁(yè)面而沒(méi)有請(qǐng)求過(guò)本站的資源,如表3所示。 表3 實(shí)驗(yàn)所得IP請(qǐng)求次數(shù) 實(shí)驗(yàn)數(shù)據(jù)當(dāng)中有四個(gè)IP是屬于本地局域網(wǎng),有兩個(gè)外網(wǎng),其中有一個(gè)是只發(fā)送過(guò)一次鏈接請(qǐng)求,這與微軟必應(yīng)爬蟲(chóng)、百度爬蟲(chóng)的行為方式相同,只對(duì)網(wǎng)站爬取過(guò)一次(此為檢測(cè)方法的主要特征),初步可以判定此IP為匿名爬蟲(chóng)。然后在接下來(lái)一段時(shí)間的日志當(dāng)中進(jìn)行此IP的查找,在訪問(wèn)此網(wǎng)站的頁(yè)面資源時(shí)只有一個(gè)請(qǐng)求,并沒(méi)有其他的資源請(qǐng)求,而且此IP會(huì)周期性地訪問(wèn)網(wǎng)站一次,凡是正常的用戶一次訪問(wèn)可能會(huì)出現(xiàn)只請(qǐng)求頁(yè)面問(wèn)題,長(zhǎng)期反復(fù)的只請(qǐng)求頁(yè)面而不請(qǐng)求資源,即可確定此IP為匿名的網(wǎng)絡(luò)爬蟲(chóng)。 該方法的提出主要針對(duì)現(xiàn)今網(wǎng)絡(luò)爬蟲(chóng)分析工具匿名爬蟲(chóng)檢測(cè)功能的不足,在用awstats進(jìn)行網(wǎng)站日志分析時(shí)查找匿名網(wǎng)絡(luò)爬蟲(chóng)。實(shí)驗(yàn)結(jié)果當(dāng)中就用了國(guó)內(nèi)SEO網(wǎng)站分析工具對(duì)網(wǎng)絡(luò)日志進(jìn)行分析,分析結(jié)果表3已經(jīng)顯示,對(duì)于開(kāi)源的國(guó)外公認(rèn)的awstats也是基本類(lèi)似的功能。對(duì)此類(lèi)分析工具所得出的結(jié)果只能夠檢測(cè)出并發(fā)量高的網(wǎng)絡(luò)爬蟲(chóng),而不能檢測(cè)出并發(fā)量低的網(wǎng)絡(luò)爬蟲(chóng)。 該方法與主流的限制單個(gè)ip/api token的訪問(wèn)量進(jìn)行比較,限制IP主要的工作是限制而不是檢測(cè),大眾點(diǎn)評(píng)網(wǎng)站當(dāng)中就用到了。如果少量地抓取大眾點(diǎn)評(píng)上的信息,限制策略并沒(méi)有用。 該方法與蜜罐資源即上文所提及的使用隱藏資源進(jìn)行比較,不必在設(shè)計(jì)網(wǎng)站當(dāng)中加入冗余的東西來(lái)增加網(wǎng)站的復(fù)雜性,而且對(duì)于只抓取特定內(nèi)容的網(wǎng)絡(luò)爬蟲(chóng)蜜罐資源并不能夠檢測(cè)出網(wǎng)絡(luò)爬蟲(chóng)。 通過(guò)對(duì)爬蟲(chóng)規(guī)范的解析,以及爬蟲(chóng)行為的分析,檢測(cè)匿名爬蟲(chóng)現(xiàn)今只能夠從爬蟲(chóng)并發(fā)量、爬蟲(chóng)訪問(wèn)網(wǎng)站的行為等方面入手。匿名爬蟲(chóng)并發(fā)量可以通過(guò)設(shè)置服務(wù)器手段完成,而從爬蟲(chóng)訪問(wèn)行為方面并沒(méi)有太多的工具以及手段,所以完善現(xiàn)今的網(wǎng)絡(luò)日志分析工具對(duì)匿名爬蟲(chóng)的功能,網(wǎng)站才能夠得到有力的保護(hù)。 [1] Cho J,Garcia-Molina H. The evolution of the web and implications for an incremental crawler[C]//Proceedings of 26th international conference on very large data bases.San Francisco,CA,USA:Morgan Kaufmann Publishers Inc,2000:200-209. [2] 王 珊,王會(huì)舉,覃雄派,等. 架構(gòu)大數(shù)據(jù):挑戰(zhàn)、現(xiàn)狀與展望[J].計(jì)算機(jī)學(xué)報(bào),2011,34(10):1741-1752. [3] Witten I H, Frank E, Hall M A.Data mining:practical machine learning tools and techniques[M].[s.l.]:Elsevier Science,2011. [4] Croft B, Metzler D, Strohman T.Search engines-information retrieval in practice[J].Computer Journal,2011,54(5):831-832. [5] Raghavan S, Garcia-Molina H. Crawling the hidden web[C]//Proceedings of 27th international conference on very large data bases.San Francisco,CA,USA:Morgan Kaufmann Publishers Inc,2001:129-138. [6] Tan Pangning,Kumar V.Discovery of web robot sessions ba-sed on their navigational patterns[J].Data Mining and Knowledge Discovery,2002,6(1):9-35. [7] 郭偉剛,鞠時(shí)光.電子商務(wù)網(wǎng)站中Web Robot的檢測(cè)技術(shù)[J].計(jì)算機(jī)工程,2005,31(23):219-211. [8] Najork M,Heydon A.High-performance web crawling[M]//Handbook of massive data sets.[s.l.]:Kluwer Academic Publishers,2001:25-45. [9] 詳解網(wǎng)絡(luò)爬蟲(chóng)與Web安全[J].計(jì)算機(jī)與網(wǎng)絡(luò),2012,38(12):38-39. [10] Shkapenyuk V,Suel T,Shkapenyuk V,et al.Design and implementation of a high-performance distributed web crawler[C]//Proceedings of 18th international conference on data engineering.[s.l.]:IEEE,2002:357-368. [11] Cho J,Garcia-Molina H,Page L.Efficient crawling through URL ordering[J].Computer Networks & ISDN Systems,1998,30(1-7):161-172. [12] 張 峰,付 俊,楊光華,等.Web訪問(wèn)日志安全分析技術(shù)研究[J].北京郵電大學(xué)學(xué)報(bào),2014,37(2):93-98. [13] 李佳欣,潘 偉.PhantomJS在Web自動(dòng)化測(cè)試中的應(yīng)用[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2013,16(18):76-77. [14] 梁雪松.網(wǎng)絡(luò)機(jī)器人對(duì)網(wǎng)絡(luò)安全的影響及其應(yīng)對(duì)策略[J].信息安全與通信保密,2008(8):94-96. [15] Linnér L,Arborelius L,Nomikos G G,et al.Locus coeruleus neuronal activity and noradrenaline availability in the frontal cortex of rats chronically treated with imipramine:effect of alpha 2-adrenoceptor blockade[J].Biological Psychiatry,1999,46(6):766-774. [16] 范純龍,袁 濱,余周華,等.基于陷阱技術(shù)的網(wǎng)絡(luò)爬蟲(chóng)檢測(cè)[J].計(jì)算機(jī)應(yīng)用,2010,30(7):1782-1784. [17] Artail H,Masri Z A,Sraj M,et al.A dynamic honeypot design for intrusion detection[C]//IEEE/ACS international conference on pervasive services.[s.l.]:IEEE,2004:95-104. [18] 常紅要,朱征宇,陳 燁,等.基于HTML標(biāo)記用途分析的網(wǎng)頁(yè)正文提取技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(24):5187-5191. [19] 賈夢(mèng)青.基于用戶訪問(wèn)行為分析的網(wǎng)站分類(lèi)研究[D].鄭州:鄭州大學(xué),2009. AnonymousCrawlerDetectionBasedonWebAccess ZOU Jian-xin,LI Hong-ling (Department of Computer Science and Engineering,School of Information Science and Engineering,Yunnan University,Kunming 650000,China) web crawler;robot exclusion protocol;website access;camouflage crawler detection TP393.08 A 1673-629X(2017)12-0103-05 10.3969/j.issn.1673-629X.2017.12.023 2016-12-08 2017-04-10 < class="emphasis_bold">網(wǎng)絡(luò)出版時(shí)間 時(shí)間:2017-08-01 國(guó)家自然科學(xué)基金資助項(xiàng)目(61562090) 鄒建鑫(1991-),男,碩士,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)和信息安全;李紅靈,副教授,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)和信息安全。 http://kns.cnki.net/kcms/detail/61.1450.TP.20170801.1557.076.html Abstarct:By analysis and study of web crawler accessing web page,some detection algorithms of malicious web crawler are summarized based on robot exclusion protocol and crawling,aiming to the problem that it is difficult to identify website accessing from malicious web crawler disguised as a browser,and that web log detection tools don’t support anonymous web crawler detection.In consideration of above algorithms,a new one to identify the camouflage web crawler is proposed based on crawling.It detects the web crawler mainly according to the length of access time and access cycle of website accessing form both human and crawler,and is verified by an experiment,the data of which is from a server web log.The experimental data are processed by Python for anonymous crawler detection.Compared with mainstream detection algorithm of anonymous web crawler,the proposed algorithm can detect the small amount of concurrent anonymous web crawler.4 實(shí)驗(yàn)結(jié)果及驗(yàn)證
5 結(jié)束語(yǔ)