• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種基于python語言的網(wǎng)絡爬蟲研究

    2016-10-21 02:26:00劉洋崔翠李立新
    科學與財富 2016年9期
    關(guān)鍵詞:網(wǎng)絡爬蟲敏感數(shù)據(jù)搜索引擎

    劉洋 崔翠 李立新

    摘要:隨著Internet技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人們獲取信息的主要途徑,搜索引擎從互聯(lián)網(wǎng)中靶向性篩選出有用信息,而網(wǎng)絡爬蟲又是搜索引擎的基礎(chǔ)構(gòu)件之一。本文實現(xiàn)了一個基于python語言的并行網(wǎng)絡爬蟲,利用關(guān)鍵字匹配技術(shù)對目標網(wǎng)站進行掃描,得到敏感數(shù)據(jù)并抓取,分析網(wǎng)站數(shù)據(jù)結(jié)構(gòu)和受惡意攻擊的風險系數(shù)。

    關(guān)鍵詞:搜索引擎 網(wǎng)絡爬蟲 python 敏感數(shù)據(jù)

    1引言

    網(wǎng)絡爬蟲(Crawler)是搜索引擎(search engine SE)的基本構(gòu)件之一,其直接面向互聯(lián)網(wǎng)底層,它是搜索引擎的數(shù)據(jù)發(fā)源地,決定著整個系統(tǒng)的內(nèi)容是否豐富、信息能否得到及時更新。它的性能表現(xiàn)直接影響整個搜索引擎的效果。網(wǎng)絡爬蟲的工作原理如下:從一個初始種子URLs出發(fā),從中獲取一個URL,下載網(wǎng)頁,從網(wǎng)頁中抽取所有的URLs,并將新的URLs添加到URLs隊列中。然后,Crawler從隊列中獲取另一個URL。重復剛才的過程,直到Crawler達到某種停止標準為止。

    搜索引擎以一定的策略在互聯(lián)網(wǎng)中搜集、發(fā)現(xiàn)信息,對信息進行理解、提取、組織和處理,并為用戶提供檢索服務,從而起到信息導航的目的。我們經(jīng)??吹讲煌木W(wǎng)站發(fā)布著同樣的新聞,很多就是通過網(wǎng)絡爬蟲的技術(shù)從其它的網(wǎng)站爬取信息,然后放在自己的網(wǎng)站發(fā)布。同樣,這樣的爬蟲技術(shù)也可以用來幫助我們做安全掃描分析等工作,這也是本文研究的重點。

    2國內(nèi)外研究現(xiàn)狀及相關(guān)核心技術(shù)

    2.1現(xiàn)狀

    90年代出現(xiàn)了最早的搜索引擎,也就產(chǎn)生了網(wǎng)絡爬蟲。此時的爬蟲在爬取整個網(wǎng)絡的時候采取深度或廣度優(yōu)先的遍歷方式。作為搜索引擎的信息資源采集的重要角色,網(wǎng)絡爬蟲的性能將直接影響整個搜索引擎索引網(wǎng)頁的數(shù)量、質(zhì)量和更新周期。于是出現(xiàn)后面的分布式網(wǎng)絡爬蟲。分布式網(wǎng)絡爬蟲可以看做是由多個集中式網(wǎng)絡爬蟲組合而成,分布式系統(tǒng)中的每個節(jié)點都可以看作一個集中式網(wǎng)絡爬蟲。分布式網(wǎng)絡爬蟲大大提高了爬取效率,目前分布式網(wǎng)絡爬蟲已近有了不少的應用,例如現(xiàn)在著名的Google和Alta Vista搜索引擎所采用的網(wǎng)絡爬蟲系統(tǒng)。

    由于爬蟲的重要性,Twisted使用python語言寫了一個廣受歡迎的爬蟲事件驅(qū)動網(wǎng)絡框架:scrapy,scrapy使用的是非堵塞的異步處理方式。scrapy能夠爬取web頁面,并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。它可以用來數(shù)據(jù)挖掘、監(jiān)測、和自動化測試。

    scrapy流程圖見圖1。

    2.2 Python

    本系統(tǒng)用python腳本語言開發(fā),python腳本語言與其它編程語言相比的優(yōu)勢在于它的語法簡單、系統(tǒng)庫強大、實現(xiàn)功能容易、高效率的高層數(shù)據(jù)結(jié)構(gòu)、簡單的面向?qū)ο缶幊獭⒋a結(jié)構(gòu)清晰易懂。如今python語言被廣泛的應用于系統(tǒng)后臺處理和web編程。由于python腳本語言有著這么多的優(yōu)勢,所以通過python腳本語言自己實現(xiàn)了一個爬蟲、敏感文件掃描和日志分析程序。爬蟲通過任務隊列、線程池實現(xiàn)多線程并發(fā)爬取網(wǎng)頁,在爬取了網(wǎng)頁之后對網(wǎng)頁進行解碼分析,獲取目錄結(jié)構(gòu),對已知的目錄結(jié)構(gòu)進行敏感文件掃描。同時也通過腳本程序利用攻擊規(guī)則庫對用戶請求的web日志進行安全分析,提取出日志中的sql注入攻擊,xss跨站腳本攻擊,可以利用這些方法發(fā)現(xiàn)網(wǎng)站的安全漏洞。

    2.3并行爬蟲技術(shù)

    由于WEB網(wǎng)站群結(jié)構(gòu)層次多,目錄深度廣,數(shù)據(jù)量很大,單進程的爬蟲很難滿足快速抓取大量數(shù)據(jù)的要求,因此本文爬蟲進行了并行架構(gòu)的擴展,實現(xiàn)了基于MPI的并行數(shù)據(jù)抓取功能。本文并行爬蟲主要采用主從模式,主節(jié)點負責維護整個爬蟲的抓取隊列以及任務分配工作,從節(jié)點負責對自己的任務列表按照第l章中的抓取規(guī)則進行數(shù)據(jù)抓取。每個從節(jié)點都需要維護兩個隊列,一個是任務隊列,另一個是新用戶隊列。當從節(jié)點完成了其任務隊列后會將自己的新用戶隊列交給主節(jié)點,由主節(jié)點來處理合并用戶的工作,同時,主節(jié)點會將新的任務隊列發(fā)送到從節(jié)點,由從節(jié)點繼續(xù)抓取新數(shù)據(jù)。

    3系統(tǒng)設計與試驗分析

    3.1系統(tǒng)功能模塊

    本系統(tǒng)主要分為三個模塊。整個系統(tǒng)功能模塊結(jié)構(gòu)見圖2。

    3.1.1程序主模塊和線程池模塊

    程序主模塊的主要功能是web爬取。通過用戶提供的初始URL開始爬取。

    線程池決定著整個程序的執(zhí)行效率,創(chuàng)建太多的線程,有些線程又有可能未被充分的利用,程序?qū)速M一定的資源。銷毀太多線程,將導致之后浪費時間再次創(chuàng)建它們。創(chuàng)建線程太慢,將會導致長時間的等待,性能變差。銷毀線程太慢,將導致其它線程資源饑餓。所以在程序的開發(fā)中,線程池相當?shù)闹匾?,應做到合理有效的利用?/p>

    線程池模塊主要是用來創(chuàng)建線程,加載爬蟲模塊中的爬取url任務到任務隊列,每個線程從任務隊列中獲取任務并執(zhí)行任務。

    3.1.2敏感文件掃描模塊

    網(wǎng)站中的敏感文件是不應被普通用戶查看的,通常這些敏感文件一旦被暴露出來則有可能泄露服務器的一些敏感信息,比如用戶名、密碼、源代碼、服務器信息、配置信息等。還有一些敏感文件則可能是網(wǎng)站的后臺管理員管理地址,一些已經(jīng)公開有漏洞的編輯器。這些都能被攻擊者所利用,進而對網(wǎng)站實施攻擊,獲得網(wǎng)站控制權(quán)。

    3.2試驗分析

    用戶通過爬蟲的入口向程序提供需要爬取的目標,爬取的深度和使用多少個線程爬取,如果沒有定義線程數(shù),程序會初始化為9個線程爬取。程序?qū)⑴廊〉玫降木W(wǎng)頁類容進行解碼分析,提取出里面的URL,并將這些URL做一些處理后加入隊列進行下一步爬取。目標爬取完畢之后會將結(jié)果保存下來,然后再調(diào)用敏感文件掃描模塊對這些目錄下進行敏感文件掃描,對于存在的敏感文件會將結(jié)果保存下來。

    3.2.1目標網(wǎng)頁爬取

    在目標爬取的測試過程中,程序在獲得一個目標站點后開始進行爬取。首先將這個目標url加入urlQueue隊列中,在start函數(shù)中從urlQueue隊列中獲取第一個url,隨后調(diào)用線程中addJob函數(shù)將url和工作work函數(shù)同時加入線程池任務隊列中。此時線程從線程池任務隊列中獲取任務,也就是獲取到的url和work函數(shù),隨后線程開始開始執(zhí)行work函數(shù),work函數(shù)中開始對url進行爬取,將url加入已爬取的任務隊列readUrls中。爬取方法是調(diào)用requests模塊中的get函數(shù)對目標進行網(wǎng)頁抓?。?/p>

    html=requests.get(url),此方法返回一個html對象。

    該對象中的content屬性為網(wǎng)頁內(nèi)容:htmldata=html.content。

    接下來是對返回的網(wǎng)頁內(nèi)容進行解析分析,本程序采用的是python的第三方模塊Beautiful Soup對其解析。Beautiful Soup 是用python 寫的一個 HTML/XML 的解析器,它可以很好的處理不規(guī)范標記并生成剖析樹。通常用來分析爬蟲抓取到的web文檔。對于不規(guī)則的 Html文檔,也有很多的補全功能,節(jié)省了開發(fā)者的時間和精力。通過Beautiful Soup對htmldata解析:

    接著遍歷allurl列表,如果列表中的鏈接沒有在readUrls中,就將其加入urlQueue隊列中。如此循環(huán)操作,直到最后達到爬取的深度停止任務,完成網(wǎng)頁爬取。

    爬取結(jié)果如圖3。

    3.2.2敏感文件掃描

    實現(xiàn)方法是通過python中requests類中g(shù)et函數(shù)對url進行請求,通過http請求返回的狀態(tài)碼來識別url是否存在。

    圖4是定義好的部分敏感文件信息。

    在利用獲取到的網(wǎng)站目錄結(jié)構(gòu)進行敏感文件掃描,對黑名單中的文件進行一一掃描,能夠?qū)⒋嬖诘拿舾形募呙璩鰜?,識別http狀態(tài)碼結(jié)果為200,該功能已經(jīng)很好的實現(xiàn)。掃描結(jié)果如圖5。

    結(jié) 語

    本文設計的并行網(wǎng)絡爬蟲通過將網(wǎng)頁表單進行分類和檢索提交,在這個爬蟲的基礎(chǔ)上實現(xiàn)一些安全分析的工作,最終可以發(fā)現(xiàn)并下載更多的網(wǎng)頁內(nèi)容和檢測更多的網(wǎng)站數(shù)據(jù)漏洞。實驗結(jié)果表明,和普通的網(wǎng)絡爬蟲相比,并行爬蟲產(chǎn)生的索引文件更大,可以檢索到更多的結(jié)果。其主要有以下幾個特點:

    1)使用方便。使用者只需提供相似關(guān)鍵字,就能利用一般爬蟲抓取網(wǎng)站中的相關(guān)數(shù)據(jù)。

    2)支持關(guān)鍵字匹配。使用者只需自定義感興趣的關(guān)鍵字爬蟲就能自動匹配相關(guān)內(nèi)容并將符合條件的網(wǎng)站內(nèi)容和目錄保存到磁盤之上。

    3)支持并行爬蟲。對于需要集群式的網(wǎng)站數(shù)據(jù),同時又需要快速獲取數(shù)據(jù)的用戶而言使用其并行功能,可以達到令人滿意的效果。

    然而,由于并行爬蟲需要提取網(wǎng)頁中的表單并進行分類、提交以及頁面緩存和狀態(tài)保持,這些都需要更多的時間和系統(tǒng)資源。因此,如何盡量減少額外的系統(tǒng)資源消耗以適合大規(guī)模爬行需要進行進一步的研究。另外,雖然并行爬蟲發(fā)現(xiàn)了更多的網(wǎng)頁,但是它并沒有發(fā)現(xiàn)所有的深度網(wǎng)頁,這是由于其所依據(jù)的決策樹無法正確地對某些表單進行分類。而決策樹的準確性取決于訓練實例的特點和決策樹生成算法,所以,選擇更合理的訓練樣本和更合適的決策樹生成算法應該是可行的。

    參考文獻:

    [1]WELCH M J,SCHONFELD U,HE D,et al.Topical semantics of twitter links【C】//Proceedings of the Fourth ACM International Conference 0n Web Search and Data Mining. New York: ACM Press.2011:327—336.

    [2] Sismanis Y,Deligiannakis A.Dwarf K Y.Shrinking the petacube[A].Proc ACM SIGMOD[C],Madison.Wisomin.2002 464—475

    [3] ChunWJ, 吉廣. Python 核心編程[M].人民郵電出版社, 2008.

    [4]Boldi P,Codenotti B.Santini M.UbiCrawler:A Scalable Fully Distributed Web Crawler[J].Software:Practice&Experience。2004,34:711-726

    [5]Lee Hsin-Tsang,Leonard D.IRLbot:Scaling to 6 BillionPages and Beyond[A]//Proceedings of the 17th International World Wide Web Conference[C].ACM Press,2008:427—436

    [6] 李勇, 韓亮. 主題搜索引擎中網(wǎng)絡爬蟲的搜索策略研究[J].計算機工程與科學, 2008, 30(3): 4-6.

    [7] 張紅云, 劉煒, 熊前興. 一種基于語義本體的網(wǎng)絡爬蟲模型[J].計算機應用與軟件,2009, 26(11): 101-104.

    [8] 劉世濤. 簡析搜索引擎中網(wǎng)絡爬蟲的搜索策略[J]. 阜陽師范學院學報: 自然科學版, 2006,23(3):59-62.

    猜你喜歡
    網(wǎng)絡爬蟲敏感數(shù)據(jù)搜索引擎
    干擾條件下可檢索數(shù)字版權(quán)管理環(huán)境敏感數(shù)據(jù)的加密方法
    實現(xiàn)虛擬機敏感數(shù)據(jù)識別
    基于透明加密的水下通信網(wǎng)絡敏感數(shù)據(jù)防泄露方法
    基于4A平臺的數(shù)據(jù)安全管控體系的設計與實現(xiàn)
    煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設計與實現(xiàn)
    基于社會網(wǎng)絡分析的權(quán)威網(wǎng)頁挖掘研究
    主題搜索引擎中網(wǎng)絡爬蟲的實現(xiàn)研究
    淺析如何應對網(wǎng)絡爬蟲流量
    中國市場(2016年23期)2016-07-05 04:35:08
    網(wǎng)絡搜索引擎亟待規(guī)范
    基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
    义马市| 中宁县| 千阳县| 松阳县| 唐山市| 宁都县| 方山县| 平乡县| 英吉沙县| 个旧市| 桓台县| 永善县| 那曲县| 大埔区| 克什克腾旗| 扶余县| 伊川县| 金阳县| 遂宁市| 新龙县| 祁东县| 齐河县| 广宗县| 洮南市| 平果县| 来凤县| 沧源| 渭源县| 逊克县| 卢龙县| 隆德县| 庆城县| 玛纳斯县| 兴业县| 四子王旗| 盐源县| 平南县| 邮箱| 都江堰市| 水城县| 千阳县|