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