Ajax應用的新“爬蟲”機制

來源:互聯網
上載者:User

伴隨著以Ajax驅動為代表的所謂Web 2.0應用的大規模流行,一系列巨大的新挑戰也開始加速降臨到目前搜尋引擎的頭上,一個新“爬蟲”機制的建立已迫在眉睫。究其原因,我嘗試用簡單的語言分析如下:

  • Ajax應用顛覆了以往基於純HTTP請求/響應協議的“爬蟲”機制,即預設所有的頁面資源都是直接由超級連結所觸發並指向的,現有的“爬蟲”只需類比使用者的超級連結請求並解析對應的響應頁面,然後再分析頁面內容、語義以及衍生的超級連結,以此進行“耙梳”。
  • 所謂Ajax,即Asychronous Javascript and XML,與以往應用的最大不同之處在於將超級連結驅動的請求/響應更多地改用了Javascript驅動的非同步請求/響應。而對於現有的“爬蟲”一般來說,它們對Javascript是缺乏語義理解的,它們很難再去類比觸發Javascript的非同步呼叫並解析返回的非同步回調邏輯和內容。
  • 對於傳統的Web應用“爬蟲”來說,它們預設每個頁面的DOM結構是相對靜態不變的,而這個前提條件在新的Ajax應用中再次被顛覆,對於使用者的操作,Javascript會對DOM結構進行大量地變動,甚至頁面所有的內容都是通過Javascript直接從伺服器端讀取並動態繪製出來的。

  對於以上的變化和新挑戰,Shreeraj Shah在Infosec Writers上發表了一篇名為“Crawling Ajax-driven Web 2.0 Applications”的論文。

  在文中,作者指出傳統的“爬蟲”引擎大都是協議驅動的,而新的“爬蟲”引擎需要的是事件驅動。在新的引擎中,要做到事件驅動,需要考慮以下三大關鍵問題:

  1. Javascript的互動分析和解釋
  2. DOM事件的處理和解釋分發
  3. 動態DOM內容語義的抽取

  另外,作者使用了rbNarcissus, Watir和Ruby語言和工具對這些問題和可能的解決方案進行了示範。有興趣的可以去細細品讀,再此就不一一介紹了。

  在新一代或者說下一代Web應用中,這個“爬蟲”機制的問題除了在Ajax中存在之外,在其他的Flash/Flex以及WPF/E, XUL應用等也是普遍存在的。而前對於Flash/Flex來說,問題可能更為嚴重,因為所有的Actionscript代碼是編譯執行的,這個在效率提高的同時,又無疑帶給了“爬蟲”們更為不可思議的持續挑戰!

Tag標籤: ajax 爬蟲

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.