2013年2月8日北京市第一中級人民法院正式受理了百度訴奇虎360違反“Robots協議”抓取、復制其網站內容的不正當競爭行為一案,索賠金額高達一億元,這可以看做2012年下半年“3B大戰”的繼續。在此次索賠案件中,百度稱自己的Robots文本中已設定不允許360爬蟲進入,而360的爬蟲依然對“百度知道”、“百度百科”等百度網站內容進行抓取。
其 實早在2012年11月初,針對雙方摩擦加劇的情況,在中國互聯網協會的牽頭下,包括百度、新浪、奇虎360在內的12家互聯網公司已共同簽署了《互聯網 搜索引擎服務自律公約》,在公約第七條承諾“遵循國際通行的行業慣例與商業規則,遵守機器人協議(robots協議)。
今天就找個機會聊聊一夜成名的robots協議。
初識robots協議
什么是robots
要 了解robots協議首先要了解robots,本文說的robots不是《I,robot》里的威爾·史密斯,不是《機器人總動員》里的瓦力和伊娃,不是 《終結者》系列中的施瓦辛格。什么?這些經典電影你都不知道?好吧,算我想多了。本文的robots特指搜索引擎領域的web robots,這個名字可能很多人不熟悉,但是提到Web Wanderers,Crawlers和Spiders很多人可能就恍然大悟了,在中文里我們統稱為爬蟲或者網絡爬蟲,也就是搜索引擎抓取互聯網網頁的程序。
同學們都知道網頁是通過超級鏈接互相關聯起來的,從而形成了網頁的網狀結構。爬蟲的工作方式就像蜘蛛在網上沿著鏈接爬來爬去,最基本的流程可以簡化如下:
1.喂給爬蟲一堆url,我們稱之為種子(seeds)2.爬蟲抓取seeds,解析html網頁,抽取其中的超級鏈接3.爬蟲接著抓取這些新發現的鏈接指向的網頁
2,3循環往復
什么是robots協議
了解了上面的流程就能看到對爬蟲來說網站非常被動,只有老老實實被抓取的份。存在這樣的需求:
1.某些路徑下是個人隱私或者網站管理使用,不想被搜索引擎抓取,比如說日本愛情動作片2.不喜歡某個搜索引擎,不愿意被他抓取,最有名的就是之前淘寶不希望被百度抓取3.小網站使用的是公用的虛擬主機,流量有限或者需要付費,希望搜索引擎抓的溫柔點4.某些網頁是動態生成的,沒有直接的鏈接指向,但是希望內容被搜索引擎抓取和索引網 站內容的所有者是網站管理員,搜索引擎應該尊重所有者的意愿,為了滿足以上等等,就需要提供一種網站和爬蟲進行溝通的途徑,給網站管理員表達自己意愿的機 會。有需求就有供應,robots協議就此誕生。Robots協議,學名叫:The Robots Exclusion Protocol,就搜索引擎抓取網站內容的范圍作了約定,包括網站是否希望被搜索引擎抓取,哪些內容不允許被抓取,把這些內容放到一個純文本文件 robots.txt里,然后放到站點的根目錄下。爬蟲抓取網站內容前會先抓取robots.txt,據此“自覺地”抓取或者不抓取該網頁內容,其目的是 保護網站數據和敏感信息、確保用戶個人信息和隱私不被侵犯。
需要注意的是robots協議并非是規范,只是行業內一個約定俗成的協議。什么意思呢?Robots協議不是什么技術壁壘,而只是一種互相尊重的協議,好比私家花園的門口掛著“閑人免進”,尊重者繞道而行,不尊重者依然可以推門而入,比如說360。
說了這么多,看幾個有名的例子感覺一下先:
例子1:淘寶
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
程序猿,你懂的。這不就是淘寶不想讓百度抓取嘛例子2:京東
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
User-agent: EtaoSpider
Disallow: /
這個也不復雜,京東有2個目錄不希望所有搜索引擎來抓。同時,對etao完全屏蔽。
基本玩法
robots.txt的位置
說簡單也簡單,robots.txt放到一個站點的根目錄下即可。說復雜也有點小復雜,一個robots.txt只能控制相同協議,相同端口,相同站點的網頁抓取策略。什么意思呢?看個例子最清楚:
百度網頁搜索
百度知道
這兩個robots.txt的內容是不同的,也就是說百度網頁搜索和百度知道的抓取策略可以由自己獨立的robots.txt來控制,井水不犯河水。
robots.txt的內容