舊觀念
在我的既有觀念中,搜索引擎的網(wǎng)頁爬蟲/蜘蛛/機(jī)器人(Crawler/Spider/Robot)只抓取頁面的 HTML 代碼,對(duì)于內(nèi)部或外部的 JS 與 CSS 代碼是一律無視的。所以我們也經(jīng)常會(huì)說,Ajax 不利于搜索引擎的抓取,不利于 SEO。
因?yàn)樵谖覀兛磥?,搜索引擎爬蟲畢竟不是功能強(qiáng)大的瀏覽器,它無法運(yùn)行 JS,也無法渲染 CSS。那些五彩繽紛的頁面,在爬蟲眼中不過是純粹的文本流(或包含了結(jié)構(gòu)標(biāo)記的文本信息流)而已。
然而,近期看到的兩則關(guān)于 Google 的新聞,徹底顛覆了我對(duì)搜索引擎爬蟲的認(rèn)知。
新聞一
一段來自 Google 資深工程師 Matt Cutts 的視頻震驚了我。Matt 告誡我們,不僅文本與背景同色、字體大小設(shè)置為 0、用 CSS 隱藏文字等等這些伎倆已經(jīng)是小兒科了,而且 Google 現(xiàn)在還可以識(shí)別通過 JS 來隱藏文字的作弊方法。
在視頻中,一段隱晦的 JS 代碼將某元素的 .style.display
屬性設(shè)置為 'none'
,試圖隱藏那些只打算提供給搜索引擎、而不展示給用戶的文字。Matt 表示,這種作弊方式現(xiàn)在已經(jīng)瞞不了 Google 了。
新聞二
新聞二更加恐怖,據(jù)說 Google 可以抓取 Ajax 內(nèi)容!該文表示,給 URL 的 hash 部分加上特定的標(biāo)識(shí)符(即 domain.com/#abc
改為 domain.com/#!abc
),會(huì)讓 Googlebot 領(lǐng)悟到該 URL 是一個(gè) Ajax 頁面(而非頁面中的錨點(diǎn)),并進(jìn)行抓取。
你可能對(duì) Google 的這一技術(shù)改進(jìn)沒多少興趣,但你肯定注意到了問題的本質(zhì):Googlebot 可以抓取 Ajax 內(nèi)容,也就是說,Googlebot 完全有能力運(yùn)行頁面中的 JS,而且功能完善!
爬蟲與瀏覽器
如果這兩則新聞都是真的,那么,從某種意義上說,爬蟲的行為和能力已經(jīng)與瀏覽器越來越接近了。這也意味著,搜索引擎爬蟲將抓取更多的內(nèi)容(包括 JS 和 CSS 文件),網(wǎng)站的流量負(fù)載將會(huì)加大。
另一方面,爬蟲在抓取頁面的過程中也將產(chǎn)生更多的資源消耗——畢意僅僅處理文本信息的資源開銷要遠(yuǎn)遠(yuǎn)小于完整地渲染頁面和運(yùn)行客戶端程序。
因此,我目前仍然對(duì)這兩則新聞半信半疑。難道這是 Google 放出的煙幕彈?或者是好事者炮制的假新聞?如果 Googlebot 真的已經(jīng)具備了運(yùn)行 JS 或渲染 CSS 的能力,那么為了將資源開銷控制在合理的范圍內(nèi),或許 Google 會(huì)在內(nèi)部啟用黑/白名單機(jī)制?
站長們
如果擔(dān)心爬蟲對(duì)主機(jī)流量的侵蝕,或許可以考慮在 robots.txt
文件中禁止爬蟲對(duì) *.js
和 *.css
文件的抓取。不過暫不確定這樣做是否存在不良的副作用。
或許也有人會(huì)擔(dān)心,正常的頁面布局有時(shí)候也需要使用一些隱藏文字的手段,比如 【CSS 圖代文】、【隱藏模塊的 hx 標(biāo)識(shí)信息】等等。這樣會(huì)不會(huì)被 Google 判定為作弊呢?
我相信對(duì)于像 Google 這樣“聰明”的搜索引擎來說,它即然有能力讓爬蟲運(yùn)行 JS 和 CSS,它也必然有能力來判斷什么是作弊、什么是正常的布局需要。所以我覺得站長們大可不必驚慌,平常該怎樣就怎樣,身正不怕影斜,規(guī)則總是用來約束那些“不法之徒”的。
所以,對(duì)于某些 SEOer 來說,這似乎是個(gè)壞消息。如果他們還在考慮是否還有新的作弊方案,那么我覺得意義不大。很顯然,SEO 作弊手段的生存空間將越來越小,與此同時(shí),網(wǎng)站自身內(nèi)容的價(jià)值才是 SEO 的真實(shí)基礎(chǔ)。