這是一個存在多年的問題,經(jīng)常出現(xiàn),但從來沒有一個標準的解決方案:搜索引擎爬蟲(特別是百度)抓取JS、CSS、JSON文件,而機器人屏幕仍然抓取。
這引出幾個問題:
1、 crawler如何獲取JS和CSS?2、爬蟲程序能執(zhí)行JS嗎?3、crawler的JS對SEO有什么影響?
針對以上問題,我想談談自己的看法:
首先,crawler抓取CSS判斷頁面元素的重要性,保證快照顯示的完整性;抓取JS查找新鏈接,判斷是否存在欺騙
其次,JS將被執(zhí)行,但不確定是否所有JS都將被執(zhí)行。正如互聯(lián)網(wǎng)上許多人所說,“搜索引擎將直接忽略JS和iframe,只捕獲純文本信息”。這在實際情況下是站不住腳的。如果搜索引擎對JS和iframe來說不是鳥,那么那些戴著黑帽子的學生不高興死嗎?請閱讀前兩篇關于黑帽子的文章,你會明白的
第三,我不知道。在某些情況下,它可能會占用抓取配額,但我經(jīng)歷了幾個蜘蛛抓取JS的站點,流量沒有異常。
說到這里,我現(xiàn)在的工作站上半年就經(jīng)歷過這種情況。百度瘋狂地抓取JSON,機器人屏蔽了各種低效。但交通并未出現(xiàn)下降等異常情況。我不在乎基本的,根據(jù)我的心理承受能力,但對JSON的抓取率的檢查確實讓我的菊花變緊了,接近40%。是的,你沒有錯,40%。假設百度每天抓取100萬個頁面,40萬都是JSON。
然后發(fā)現(xiàn)百度在日志中的抓取總量與百度站長工具的抓取頻率不匹配。經(jīng)過多次檢查,發(fā)現(xiàn)日志抓取總量=百度工具抓取頻率+日志JSON抓取總量。也就是說,對于百度給出的抓取頻率數(shù)據(jù),不包含抓取JSON的部分,相當于有獎抓取。從這個角度來看,應該不會對SEO產(chǎn)生影響,也不存在占用抓取配額的問題。但是,抓取比例總是很痛苦的,所以我們決定解決這個問題。
故障排除后,發(fā)現(xiàn)有些頁面包含一個功能:請求頁面時,判斷訪問用戶是否先登錄;如果用戶登錄,則返回該用戶歷史訪問過的其他產(chǎn)品;如果用戶未登錄,則返回指定內(nèi)容。返回的內(nèi)容被轉換成一個JSON文件(沒錯,百度瘋狂抓取的文件),然后傳輸?shù)角岸薐S。JS解析JSON文件,在前端接口解析JSON后顯示數(shù)據(jù)。
使用異步加載。從業(yè)務邏輯的角度來看,對于這個頁面的任何訪問者來說,如果不執(zhí)行這個JS,就相當于沒有加載頁面。
JSON path是用JS明文寫的,百度是否已經(jīng)識別出JSON的路徑,還是執(zhí)行了JS,還不得而知。不管怎樣,只要我們掌握了包含這個函數(shù)的頁面,我們就會獲取相應的JSON文件。
綜上所述,有兩個預先確定的解決方案:一是直接刪除與此函數(shù)對應的JS;二是不返回此JS,直接面對搜索引擎訪問。所以蜘蛛看不見,也抓不到。