WebKit爬蟲

https://github.com/emyller/webkitcrawler
html

一個開源的項目,能夠快速入門。前端

http://spiderformysql.com/
mysql

http://crawl.group.iteye.com/關於爬蟲的一個罈子,主要是Java開源組件Heritrix,nutch爬蟲的源碼剖析
git


一些基於webkit實現爬蟲的文章github

http://www.cnblogs.com/Jiajun/archive/2012/12/12/2813888.htmlweb

http://rfyiamcool.blog.51cto.com/1030776/1287810
正則表達式

http://www.haogongju.net/art/511472sql

http://blog.csdn.net/rongrong0206/article/details/6087974
瀏覽器


http://wenku.baidu.com/view/39b88fdd6f1aff00bed51eb5.html
安全


http://www.lianglong.org/tags/webkit/

 

1.http://www.blueidea.com/tech/program/2009/6571_2.asp

2.http://blog.csdn.net/ciml/category/317893.aspx

3.http://leopard168.blog.163.com/blog/static/168471844201072112642310/

5.http://timyang.net/programming/memcache-mutex/

4.http://leopard168.blog.163.com/blog/#m=0&t=1&c=fks_084067082080086071086082087095085080089071083087094071080

 

 

摘 要: 以AJAX技術爲表明的Web應用新技術的出現,賦予了JavaScript更加豐富的功能。但也致使更多的URL以數據形式存在於JavaScript 代碼中,給網絡爬蟲的URL提取帶來了新的挑戰。爲了解決這一問題,在此提出了一種基於WebKit的網絡爬蟲,以WebKit做爲爬蟲的前端來解析並執 行JavaScript。一是實現JavaScript對網頁DOM的修改,從而將存在於此類代碼中的URL轉換成HTML形式並以靜態分析方法來提取; 二是定位JavaScript頁面導航的代碼而且劫持輸入導航方法及對象的變量以提取變量中的URL。這充分下降了客戶端腳本給爬蟲帶來的障礙,從而更好 地提取網頁中的URL。

  關鍵詞: 網絡爬蟲; 瀏覽器引擎; WebKit; JavaScript    1004?373X(2013)18?0062?03   0 引 言   隨着各類形式的互聯網應用不斷出現,互聯 網正在顯著改變着人類的生活方式,互聯網應用已經成爲了一部分人類生活中不可或缺的一部分。互聯網規模的不斷擴大,互聯網上的信息也呈幾何倍數增加。如何 快速準確地找到所須要的信息就成了一個難題,而網絡爬蟲正是解決這個問題的關鍵。在網絡爬蟲的衆多應用場景中,最典型的例子就是搜索引擎。而在備受關注的 Web應用安全領域,網絡爬蟲也是不可或缺的一部分。   網絡爬蟲是一個按照必定邏輯掃描或者「爬 行」網頁的程序或者腳本。工做流程通常是根據設定的初始URL(統一資源定位符)從網絡上獲取相應的內容,從這些內容中抽取出須要的信息以及URL,隨後 以新抽取的URL爲基礎重複以前的工做。網絡爬蟲的目的並非單純的「爬行」,而是爲更高層次的目的所服務。好比搜索引擎所使用的爬蟲在爬行的過程當中會根 據關鍵字協助搜索引擎創建索引,而黑盒Web應用漏洞掃描工具所使用的爬蟲在工做時會將發現的Web應用入口記錄並提交給漏洞檢測模塊進行檢測。因此網絡 爬蟲的工做效果將直接決定這些工做的效果。   爲了解決JavaScript執行問題,本文提出了一種基於WebKit的網絡爬蟲。在網絡爬蟲中引入瀏覽器引擎,使得網絡爬蟲能夠執行JavaScript並對網頁進行渲染,獲取網頁在瀏覽器上呈現給用戶的結果,從而在以後的分析中提取到更多的URL。   1 WebKit分析   瀏覽器引擎,是瀏覽器的 核心部分,也稱瀏覽器內核,負責對網頁語法的解釋(如HTML,JavaScript)並渲染網頁。主流的瀏覽器引擎包括 Trident,Gecko,Presto以及WebKit。Trident是微軟Internet Explorer的瀏覽器引擎的名稱,主要使用者有IE和世界之窗瀏覽器。Gecko是由Mozilla基金會開發的瀏覽器引擎的名字,主要表明是 Firefox。Presto是一個由Opera Software開發的瀏覽器引擎,供Opera 7.0及以上使用。Webkit是一款開源的瀏覽器引擎[9],目前使用WebKit引擎的瀏覽器主要有蘋果Safari、谷歌Chrome、遨遊瀏覽器 以及360極速瀏覽器。

  使用WebKit引擎的瀏覽器都是以速度著稱的瀏覽器,這說明了WebKit相對與其餘瀏覽器引擎的最大優點是速度。這正是選擇在網絡爬蟲中使用 WebKit的緣由。由於網絡爬蟲抓取網頁的速度是制約網絡爬蟲速度的瓶頸。WebKit的核心主要由2個模塊組成:WebCore和 JavaScriptCore,其代碼起源於自由軟件社區KDE的HTML 排版引擎KHTML及JavaScript引擎KJS的代碼。這兩個模塊將完成HTML解析、JavaScript解析以及網頁佈局和渲染三部分工做。   WebCore主要組成部分如表1所示。   2 方案設計   網絡爬蟲整體上分爲4個模塊:網頁獲取模塊、網頁渲染模塊、URL抽取模塊以及URL隊列管理模塊。整體方案設計如圖1所示。網頁獲取模塊的功能是通 過網絡接口向服務器發起請求並獲取服務器的響應,即獲取URL對應文檔的源代碼。網頁渲染模塊的功能是解析源代碼中的HTML和JavaScript,並 運行JavaScript代碼對網頁進行渲染,即獲取瀏覽器呈現給用戶的網頁形式,可是仍然是以HTML的形式存儲的。URL抽取模塊的功能是分析通過渲 染的HTML代碼,從中抽取出新的URL,並將新的URL放入連接隊列中。連接抽取模塊分紅2個子模塊:HTMLParser和JSParser。 HTMLParser經過HTML語法分析和正則表達式提取URL。JSParser則對JavaScript進行進一步的處理[若是隻是簡單的小部分數 據爬取這裏其實也能夠直接模擬執行用戶的動做來獲得這些URL]。這是因爲JavaScript中可能包含引發頁面跳轉的語句,好比window對象的 open方法,location對象的href屬性和replace方法等。這些語

句 當中包含有URL,可是不會引發網頁DOM結構的變化,因此網頁渲染模塊不能使它們顯如今HTML中,還須要進一步分析JavaScript以提取這些 URL。URL隊列管理模塊的功能是管理URL隊列,負責決定下一個爬行的URL,並決定哪些新發現的URL須要放入隊列中。

  3 運行測試   4 結 語   本文設計並實現了一種基於WebKit瀏 覽器引擎的網絡爬蟲,較好地實現了網頁中的JavaScript代碼對網頁的渲染,從而提高了網絡爬蟲的URL提取能力,能夠有效提升搜索引擎和Web應 用漏洞掃描程序的覆蓋率。目前在處理用戶觸發的JavaScript代碼(如onclick事件)方面還有所欠缺,這將是下一步的研究目標。   參考文獻    Wikipedia. Web crawler [EB/OL]. [2013?05?30]. http://en.wikipedia.org/wiki/Web_crawler.    University of Toronto. HTML and XHTML document type definitions [EB/OL]. [2013?04?23]. http://

相關文章
相關標籤/搜索