好事成双的寓意

降龍網站建設教你玩轉robots協議

2019-08-16        152

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。


AM 09:00 ~ 12:00

PM 14:00 ~ 18:00

Tel 010-50933590

Hp 18910140161

設計優勢

獨立的設計團隊 帶給您全新的視覺體驗

功能開發

強大的技術實力,完成您想要的任何功能

售后服務

完善的售后服務,解決您在使用過程中遇到的問題

好事成双的寓意 4683835322455393567358275472959965352374850068530982717206550156982116639243462134849657752374167 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();