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