簡介
Robots協議也就是robots.txt文本文件,當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt。如果存在,搜索爬蟲就會按照該文件中的内容來确定訪問的範圍;如果robots.txt文件不存在,搜索爬蟲将會抓取網站上所有沒有被口令保護的頁面。
商業網站大多會在robots.txt中提供SITeMap文件鍊接地址,為搜素引擎指路,方便爬蟲更好地抓取網站内容。此外,網站也可以使用robots.txt屏蔽網站中一些比較大的文件,如:視頻、圖片等,節省服務器帶寬,也可以屏蔽網站的一些死鍊接。
簡單而言,“robots協議”就是搜索引擎在抓取網站内容時,雙方約定的一個規則。其中包括網站是否希望被搜索引擎抓取,希望或不希望被哪些搜索引擎抓取,以及哪些内容不允許被抓取。它有些類似于人類社會的“日内瓦公約”,但在法律上卻不具備那樣的約束效力,因此作為搜索引擎之間互相限制和不正當競争的工具。
協議原則
Robots協議是國際互聯網界通行的道德規範,基于以下原則建立:
1、搜索技術應服務于人類,尊重信息提供者的意願,并維護其隐私權;
2、網站有義務保護其使用者的個人信息和隐私不被侵犯。
文件寫法
User-agent: * 這裡的*代表的所有的搜索引擎種類,*是一個通配符
Disallow: /admin/ 這裡定義是禁止爬尋admin目錄下面的目錄
Disallow: /require/ 這裡定義是禁止爬尋require目錄下面的目錄
Disallow: /ABC/ 這裡定義是禁止爬尋ABC目錄下面的目錄
Disallow: /cgi-bin/*.htm 禁止訪問/cgi-bin/目錄下的所有以".htm"為後綴的URL(包含子目錄)。
Disallow: /*?* 禁止訪問網站中所有的動态頁面
Disallow: /.jpg$ 禁止抓取網頁所有的.jpg格式的圖片
Disallow:/ab/adc.html 禁止爬取ab文件夾下面的adc.html文件。
Allow: /cgi-bin/這裡定義是允許爬尋cgi-bin目錄下面的目錄
Allow: /tmp 這裡定義是允許爬尋tmp的整個目錄
Allow: .htm$ 僅允許訪問以".htm"為後綴的URL。
Allow: .gif$ 允許抓取網頁和gif格式圖片
文件用法
例1,禁止所有搜索引擎訪問網站的任何部分
User-agent: *
Disallow: /
實例分析:淘寶網的Robots.txt文件
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
很顯然淘寶不允許百度的機器人訪問其網站下其所有的目錄。
例2.允許所有的robot訪問(或者也可以建一個空文件 “/robots.txt” file)
User-agent: *
Allow:
例3.禁止某個搜索引擎的訪問
User-agent: BadBot
Disallow: /
例4.允許某個搜索引擎的訪問
User-agent: Baiduspider
allow:/
例5.一個簡單例子
在這個例子中,該網站有三個目錄對搜索引擎的訪問做了限制,即搜索引擎不會訪問這三個目錄。
需要注意的是對每一個目錄必須分開聲明,而不要寫成“Disallow: /cgi-bin/ /tmp/”。
User-agent:後的*具有特殊的含義,代表“any robot”,所以在該文件中不能有“Disallow: /tmp/*” or “Disallow:*.gif”這樣的記錄出現。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
Robot特殊參數:
允許Googlebot:
如果您要攔截除Googlebot以外的所有漫遊器不能訪問您的網頁,可以使用下列語法:
User-agent:
Disallow: /
User-agent: Googlebot
Disallow:
Googlebot跟随指向它自己的行,而不是指向所有漫遊器的行。
“Allow”擴展名:
Googlebot可識别稱為“Allow”的robots.txt标準擴展名。其他搜索引擎的漫遊器可能無法識别此擴展名,因此請使用您感興趣的其他搜索引擎進行查找。“Allow”行的作用原理完全與“Disallow”行一樣。隻需列出您要允許的目錄或頁面即可。
您也可以同時使用“Disallow”和“Allow”。例如,要攔截子目錄中某個頁面之外的其他所有頁面,可以使用下列條目:
User-agent: Googlebot
Disallow: /folder1/
Allow: /folder1/myfile.html
這些條目将攔截 folder1 目錄内除 myfile.html 之外的所有頁面。
如果您要攔截 Googlebot 并允許 Google 的另一個漫遊器(如 Googlebot-Mobile),可使用”Allow”規則允許該漫遊器的訪問。例如:
User-agent: Googlebot
Disallow: /
User-agent: Googlebot-Mobile
Allow:
使用*号匹配字符序列:
您可使用星号(*)來匹配字符序列。例如,要攔截對所有以private開頭的子目錄的訪問,可使用下列條目:User-Agent: Googlebot
Disallow: /private*/
要攔截對所有包含問号(?)的網址的訪問,可使用下列條目:
User-agent: *
Disallow: /*?*
使用$匹配網址的結束字符
您可使用$字符指定與網址的結束字符進行匹配。例如,要攔截以 .asp 結尾的網址,可使用下列條目:User-agent: Googlebot
Disallow: /*.asp$
您可将此模式匹配與 Allow 指令配合使用。例如,如果 ? 表示一個會話 ID,您可排除所有包含該 ID 的網址,确保 Googlebot 不會抓取重複的網頁。但是,以 ? 結尾的網址可能是您要包含的網頁版本。在此情況下,可對 robots.txt 文件進行如下設置:
User-agent: *
Allow: /*?$
Disallow: /*?
Disallow: / *?
一行将攔截包含 ? 的網址(具體而言,它将攔截所有以您的域名開頭、後接任意字符串,然後是問号 (?),而後又是任意字符串的網址)。
Allow: /*?$ 一行将允許包含任何以 ? 結尾的網址(具體而言,它将允許包含所有以您的域名開頭、後接任意字符串,然後是問号 (?),問号之後沒有任何字符的網址)。
其它屬性
1. Robot-version: 用來指定robot協議的版本号
例子: Robot-version: Version 2.0
2.Crawl-delay:雅虎YST一個特定的擴展名,可以通過它對我們的抓取程序設定一個較低的抓取請求頻率。您可以加入Crawl-delay:xx指示,其中,“XX”是指在crawler程序兩次進入站點時,以秒為單位的最低延時。
3. Visit-time:隻有在visit-time指定的時間段裡,robot才可以訪問指定的URL,否則不可訪問.
例子: Visit-time: 0100-1300 #允許在淩晨1:00到13:00訪問
4. Request-rate: 用來限制URL的讀取頻率
例子: Request-rate: 40/1m 0100 - 0759 在1:00到07:59之間,以每分鐘40次的頻率進行訪問
Request-rate: 12/1m 0800 - 1300 在8:00到13:00之間,以每分鐘12次的頻率進行訪問
Robots Meta标簽
Robots.txt文件主要是限制整個站點或者目錄的搜索引擎訪問情況,而Robots Meta标簽則主要是針對一個個具體的頁面。和其他的META标簽(如使用的語言、頁面的描述、關鍵詞等)一樣,Robots Meta标簽也是放在頁面中,專門用來告訴搜索引擎ROBOTS如何抓取該頁的内容。
Robots Meta标簽中沒有大小寫之分,name=”Robots”表示所有的搜索引擎,可以針對某個具體搜索引擎寫為name=”BaiduSpider”。content部分有四個指令選項:index、noindex、follow、nofollow,指令間以“,”分隔。index指令告訴搜索機器人抓取該頁面;
follow指令表示搜索機器人可以沿着該頁面上的鍊接繼續抓取下去;
Robots Meta标簽的缺省值是index和follow,隻有inktomi除外,對于它,缺省值是index、nofollow。
标簽介紹
Robots.txt文件主要是限制整個站點或者目錄的搜索引擎訪問情況,而Robots Meta标簽則主要是針對一個個具體的頁面。和其他的META标簽(如使用的語言、頁面的描述、關鍵詞等)一樣,Robots Meta标簽也是放在頁面中,專門用來告訴搜索引擎ROBOTS如何抓取該頁的内容。
Robots Meta标簽中沒有大小寫之分,name=”Robots”表示所有的搜索引擎,可以針對某個具體搜索引擎寫為name=”BaiduSpider”。content部分有四個指令選項:index、noindex、follow、nofollow,指令間以“,”分隔。
index指令告訴搜索機器人抓取該頁面;
follow指令表示搜索機器人可以沿着該頁面上的鍊接繼續抓取下去;
Robots Meta标簽的缺省值是index和follow,隻有inktomi除外,對于它,缺省值是index、nofollow。
常用搜索引擎類型
google蜘蛛:googlebot
百度蜘蛛:baiduspider
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver
msn蜘蛛:MSNBot
altavista蜘蛛:scooter
lycos蜘蛛:lycos_spider_(t-rex)
alltheweb蜘蛛:fast-webcrawler
曆史發展
發展
Robots協議正是針對搜索引擎爬蟲的這些弊端而設計的約束措施。1994年,Robots協議由荷蘭籍網絡工程師Martijn Koster首次提出,Martijn Koster也因此被譽為“Robots之父”。之後直到2008年6月,Yahoo、Google和MSNLive Search共同通過非官方途徑宣布采納該标準,各大搜索引擎公司開始對Robots協議進行商業研究,各種公司标準的Robots協議開始産生。
對于網站來說,設置Robots協議主要有三個目的,首先是保護網站内部信息不被搜索引擎爬蟲抓取;其次是引導爬蟲不要抓取對用戶沒有價值的信息;最後是為了保護中小網站的流量平衡,避免爬蟲快速抓取給網站服務器帶來過大壓力。
但通常來說,用戶在利用搜索引擎檢索到内容網站時,對内容網站并不構成傷害,反而會為内容網站帶來更多用戶。絕大多數網站非但不會使用Robots協議禁止搜索引擎抓取,反而希望自己的網站内容能夠更快、更全面地被搜索引擎收錄,并展現在搜索結果的前列,由此也催生出搜索引擎競價排名、SEO(搜索結果優化)等商業模式。
影響
在互聯網發展早期,搜索引擎還沒有為網站帶來明顯的商業價值,搜索引擎爬蟲也沒有受到網站的普遍歡迎,主要有如下原因:
一、快速抓取導緻網站過載,影響網站正常運行;
二、重複抓取相同的文件,抓取層級很深的虛拟樹狀目錄,浪費服務器資源;
三、抓取網站管理後台等内部敏感信息,或抓取臨時文件等對用戶沒有價值的信息;
四、抓取會對投票等CGI腳本造成負面影響,可能出現虛假的投票結果。
Robots協議的誤區:
Robots協議雖然名為“協議”,但隻是行業慣用的說法,它并非真正意義上的協議,也不受任何機構保護。
“Robots之父”MartijnKoster對Robots協議的性質進行了如下闡述:Robots協議是一個未經标準組織備案的非官方标準,它也不屬于任何商業組織。本協議不受任何機構保護,所有現有和未來的機器人不一定使用本協議。Robots協議是Robot創作者們向互聯網社區提供的用來保護互聯網服務器免受騷擾的一個通用工具。
早在1997年,MartijnKoster曾向IETF(互聯網工程任務組)提交申請,試圖把Robots協議作為該組織規範,但被IETF拒絕。之後,國際電信聯盟(ITU)、萬維網聯盟(W3C)的規範也同樣拒絕采納Robots協議。歐美電信專家擔心,由于Robots協議包含排斥性條款,搜索巨鳄可能會利用Robots協議的條款,迫使某些熱門網站與其簽署排他性協議,從而将後起競争者擋在門外,維護壟斷。
兩個原則
1、搜索技術應服務于人類,尊重信息提供者的意願,并維護其隐私權;
2、網站有義務保護其使用者的個人信息和隐私不被侵犯。
Robots協議目的是為了限制谷歌,但最終卻幫助Google和百度這樣的壟斷企業遏制了後起的競争者。因為,Google當年在制定這個協議時,特意留下了後門,即:協議中不僅包括是否允許搜索引擎進行搜索的内容,還包括允許誰和不允許誰進行搜索内容。Google和百度在實現了壟斷地位之後,就利用這些排斥性規則擋住了後來的進入者。
互聯網搜索引擎服務自律公約
在2012年11月1日,中國互聯網協會在北京舉行《互聯網搜索引擎服務自律公約》簽約儀式。據中國互聯網協會胡啟恒理事長介紹,“本次公約的制定充分體現了互聯網的精神,一方面,公約對非法律條文規定、國際互聯網界擁有共識的Robost協議給予了的充分的尊重和肯定。另一方面,互聯網是生而自治的,在日後随着互聯網技術應用的不斷發展,還會有許多新興問題出現,同時也希望業界能夠基于誠信、自主自治的互聯網精神來解決互聯網的争議,共同讨論和解決出現的問題。”
《互聯網搜索引擎服務自律公約》明确規定,“互聯網站所有者設置Robots協議應遵循公平、開放和促進信息自由流動的原則,限制搜索引擎抓取應有行業公認合理的正當理由,不利用Robots協議進行不正當競争行為,積極營造鼓勵創新、公平公正的良性競争環境。”
百度、即刻搜索、盤古搜索、奇虎360、盛大文學、搜狗、騰訊、網易、新浪、宜搜、易查無限、中搜等12家發起單位在現場共同簽署了《互聯網搜索引擎服務自律公約》,表示将自覺遵守自律公約各項規定,不斷提升服務水平,努力改善用戶體驗,積極為搜索引擎服務行業的健康發展貢獻力量。
搜索引擎
百度對robots.txt是有反應的,但比較慢,在減少禁止目錄抓取的同時也減少了正常目錄的抓取。
原因應該是入口減少了,正常目錄收錄需要後面再慢慢增加。
Google對robots.txt反應很到位,禁止目錄馬上消失了,部分正常目錄收錄馬上上升了。/comment/目錄收錄也下降了,還是受到了一些老目标減少的影響。
搜狗抓取呈現普遍增加的均勢,部分禁止目錄收錄下降了。
總結一下:Google似乎最懂站長的意思,百度等其它搜索引擎隻是被動的受入口數量影響了。
淘寶封殺
2008年9月8日,淘寶網宣布封殺百度爬蟲,百度忍痛遵守爬蟲協議。因為一旦破壞協議,用戶的隐私和利益就無法得到保障,搜索網站就談不到人性關懷。
京東封殺
2011年10月25日,京東商城正式将一淘網的搜索爬蟲屏蔽,以防止一淘網對其的内容抓取。
違規案例
BE違規抓取eBay
在12年前,美國加州北部的聯邦地方法院就在著名的eBayVS.Bidder'sEdge案中(NO.C-9921200RMW,2000U.SDist.LEXI7282),引用robots協議對案件進行裁定。Bidder'sEdge(簡稱BE)成立于1997年,是專門提供拍賣信息的聚合網站。12年前,BE利用“蜘蛛”抓取來自eBay等各個大型拍賣網站的商品信息,放在自己的網站上供用戶浏覽,并獲得可觀的網站流量。
對于eBay來說,來自BE蜘蛛每天超過十萬次的訪問,給自己的服務器帶來了巨大的壓力。而雖然eBay早已設置了robots協議禁止BE蜘蛛的抓取,但BE卻無視這個要求——原因很簡單,據估算,BE網站69%的拍賣信息都來自eBay,如果停止抓取eBay内容,這意味着BE将損失至少三分之一的用戶。
數次溝通交涉未果後,2000年2月,忍無可忍的eBay終于一紙訴狀,将BE告上聯邦法庭,要求禁止BE的違規抓取行為。3個月後,受理此案的美國聯邦法官RonaldM.Whyte在經過多方調查取證後做出裁定,認定BE侵權成立,禁止了BE在未經eBay允許的情況下,通過任何自動查詢程序、網絡蜘蛛等設置抓取eBay的拍賣内容。
案件意義
作為美國曆史上第一個保護互聯網信息内容的法律裁定,eBay與BE的這起糾紛,成為網絡侵權案的标志性案例,并在當時引發了美國互聯網産業乃至社會的廣泛讨論。SearchEngineWatch的知名專欄作家DannySullivan曾專門在文章中指出,robots協議是規範搜索引擎爬蟲行為的極少數約定之一,理應遵守,它不僅僅讓整個互聯網的開放性變成可能,最終也讓整個互聯網用戶受益。
百度起訴360侵權
百度訴奇虎360違反“Robots協議”抓取、複制其網站内容侵權一案,2013年10月16日上午在北京市第一中級人民法院開庭審理。
百度代理律師在庭上表示,360的行為違背了國際通行的行業規則、不顧百度的權利聲明和技術措施,非法抓取、複制百度網站内容,嚴重侵害了百度的合法權益,構成了不正當競争,因此向其提起訴訟并索賠1億元。
而奇虎360認為,百度知道、貼吧、文庫、百科等站點的内容實際上由網友提供,相關權利屬于網友,360索引這些頁面的内容并不涉及侵權;而且Robots協議不是法規、不是标準,不存在違反與不違反的問題。
案件進展
據悉,法院未當庭宣判,此案還在進一步審理當中。
案件意義
業内人士預計,本案的訴訟結果将對中國搜索引擎服務市場的競争秩序、對搜索引擎技術的發展,乃至所有的中國網民、所有中國互聯網用戶,在未來可以使用的搜索引擎的服務産生重大的影響。