一直以來Google的搜索爬蟲就具有閱讀JavaScript代碼的功能,但是多年以來我們一直都不清楚Google的爬蟲是否真正理解了其正在抓取的東西或者說它僅僅只是在易於理解的數據結構中對各種鏈接進行呆板的檢索。本周五,一位Google的發言人向《福布斯》確認Google所作的遠遠超過對js代碼的簡單分析。這位發言人表示:“Google能夠分析並理解某些JavaScript”。
Google的表述讓我們意識到其爬蟲所作的工作也許不僅僅只是獲得對頁面的相關鏈接,還能夠像人一樣與各類程序發生互動——發現Bing這類搜索引擎所不能發現的網絡世界。而這意味著,Google重新定義了搜索引擎。在Google的搜索結果裡面只有很少的js代碼,而且Google也將這種js代碼的解釋功能做了很多保留。比如在Google站點搜索(Google‘s Site Search)的文檔顯示其不能夠索引帶有js代碼的內容。一本關於索引的入門教材這樣寫道:它(Google爬蟲)“不能夠處理帶有富媒體的內容或者是動態網頁”。仔細檢查服務器日志中的記錄我們便可以發現Google現在索引那些並不是直接包含在js代碼裡面的鏈接,Google的爬蟲只有確定自己能夠運行部分代碼的時候才能明白整段代碼到底是什麼意思。
Mark Drummond,一家獨立搜索引擎公司Wowd的首席執行官(我們在今年之前的雜志中采訪過他)在一封郵件中告訴我們理解js代碼“是一個非常深刻、難度極大和一場經典的計算科學難題。”他解釋道Google的努力在於它能夠發現js代碼在網頁中是否存在停止運行的情況。他表示“停止運行的問題是無法判定的”,他說迄今為止還沒有已知的算法能夠在任何程序的任何時間點告訴我們該程序是否陷入了死循環,而且數學上已經證明了這一點。Drummond自己的公司通過人工的方式檢索其索引並標明是否有可能簡化這個復雜的問題,同時判斷一個網絡程序是否向另外的程序發起了數據請求。也許,這正是Google現在在做的事情。
另一位同Google接近的搜索引擎人士也認同Drummond關於理解js代碼復雜性的看法。他認為用一個程序去分析另一個程序是很困難的事情,執行js代碼幾乎是現階段能夠做到的極限了。
而Google在六月發布的改進版搜索算法(即Caffeine)似乎開始能夠理解部分js代碼了。如果這是真的,那麼Google的工程師已經教會了其爬蟲如何執行部分js代碼。這真是一大突破!