robots協議




簡介
robots.txt文件是一個文本文件,使用任何一個常見的文本編輯器,比如Windows系統自帶的Notepad,就可以創建和編輯它[1] 。robots.txt是一個協議,而不是一個命令。robots.txt是搜索引擎中訪問網站的時候要查看的第一個文件。robots.txt文件告訴蜘蛛程序在服務器上什么文件是可以被查看的。
當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機器人就會按照該文件中的內容來確定訪問的范圍;如果該文件不存在,所有的搜索蜘蛛將能夠訪問網站上所有沒有被口令保護的頁面。百度官方建議,僅當您的網站包含不希望被搜索引擎收錄的內容時,才需要使用robots.txt文件。如果您希望搜索引擎收錄網站上所有內容,請勿建立robots.txt文件。
如果將網站視為酒店里的一個房間,robots.txt就是主人在房間門口懸掛的“請勿打擾”或“歡迎打掃”的提示牌。這個文件告訴來訪的搜索引擎哪些房間可以進入和參觀,哪些房間因為存放貴重物品,或可能涉及住戶及訪客的隱私而不對搜索引擎開放。但robots.txt不是命令,也不是防火墻,如同守門人無法阻止竊賊等惡意闖入者。
原則
Robots協議是國際互聯網界通行的道德規范,基于以下原則建立:
1、搜索技術應服務于人類,同時尊重信息提供者的意愿,并維護其隱私權;
2、網站有義務保護其使用者的個人信息和隱私不被侵犯。
功能
Robots協議用來告知搜索引擎哪些頁面能被抓取,哪些頁面不能被抓取;可以屏蔽一些網站中比較大的文件,如:圖片,音樂,視頻等,節省服務器帶寬;可以屏蔽站點的一些死鏈接。方便搜索引擎抓取網站內容;設置網站地圖連接,方便引導蜘蛛爬取頁面。
文件寫法
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格式圖片
Sitemap: 網站地圖 告訴爬蟲這個頁面是網站地圖
文件用法
例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
Allow: /folder1/myfile.html
Disallow: /folder1/
這些條目將攔截 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: /*?$ 一行將允許包含任何以 ? 結尾的網址(具體而言,它將允許包含所有以您的域名開頭、后接任意字符串,然后是問號 (?),問號之后沒有任何字符的網址)。
盡管robots.txt已經存在很多年了,但是各大搜索引擎對它的解讀都有細微差別。Google與百度都分別在自己的站長工具中提供了robots工具。如果您編寫了robots.txt文件,建議您在這兩個工具中都進行測試,因為這兩者的解析實現確實有細微差別[1] 。
其它屬性
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.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標簽限制搜索引擎機器人(ROBOTS)抓取站點內容的辦法只是一種規則,需要搜索引擎機器人的配合才行,并不是每個ROBOTS都遵守的。目前看來,絕大多數的搜索引擎機器人都遵守robots.txt的規則,而對于Robots META標簽,支持的并不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。
位置
robots.txt文件應該放置在網站根目錄下。舉例來說,當spider訪問一個網站時,首先會檢查該網站中是否存在robots.txt這個文件,如果 Spider找到這個文件,它就會根據這個文件的內容,來確定它訪問權限的范圍。
wordpress的robots位置
沒有在wordpress網站根節目上傳過robots.txt,當搜尋引擎和用戶拜訪某個文件時,wordpress程序會主動生成一個robots.txt給搜尋引擎和用戶;若是我們上傳編寫的robots.txt到網站根節目,用戶和搜尋引擎蛛蛛拜訪的就是我們上傳的文件,wordpress就不會再產生那個文件了。只有服務器找不到robots的時候wordpress才會生成這個文件。
產生
robots.txt并不是某一個公司制定的,而是早在20世紀93、94年就早已出現,當時還沒有Google。真實Robots協議的起源,是在互聯網從業人員的公開郵件組里面討論并且誕生的。即便是今天,互聯網領域的相關問題也仍然是在一些專門的郵件組中討論,并產生(主要是在美國)。
1994年6月30日,在經過搜索引擎人員以及被搜索引擎抓取的網站站長共同討論后,正式發布了一份行業規范,即robots.txt協議。在此之前,相關人員一直在起草這份文檔,并在世界互聯網技術郵件組發布后,這一協議被幾乎所有的搜索引擎采用,包括最早的altavista,infoseek,后來的google,bing,以及中國的百度,搜搜,搜狗等公司也相繼采用并嚴格遵循。
Robot,又稱Spider,是搜索引擎自動獲取網頁信息的電腦程序的通稱。Robots協議的核心思想就是要求Robot程序不要去檢索那些站長們不希望被直接搜索到的內容。將約束Robot程序的具體方法規范成格式代碼,就成了Robots協議。一般來說,網站是通過Robots.txt文件來實現Robots協議。
自有搜索引擎之日起,Robots協議已是一種目前為止最有效的方式,用自律維持著網站與搜索引擎之間的平衡,讓兩者之間的利益不致過度傾斜。它就像一個鐘擺,讓互聯網上的搜索與被搜索和諧相處。
影響
Robots協議是網站出于安全和隱私考慮,防止搜索引擎抓取敏感信息而設置的。搜索引擎的原理是通過一種爬蟲spider程序,自動搜集互聯網上的網頁并獲取相關信息。而鑒于網絡安全與隱私的考慮,每個網站都會設置自己的Robots協議,來明示搜索引擎,哪些內容是愿意和允許被搜索引擎收錄的,哪些則不允許。搜索引擎則會按照Robots協議給予的權限進行抓取。
Robots協議代表了一種契約精神,互聯網企業只有遵守這一規則,才能保證網站及用戶的隱私數據不被侵犯。違背Robots協議將帶來巨大安全隱憂——此前,曾經發生過這樣一個真實的案例:國內某公司員工郭某給別人發了封求職的電子郵件,該Email存儲在某郵件服務公司的服務器上。因為該網站沒有設置robots協議,導致該Email被搜索引擎抓取并被網民搜索到,為郭某的工作生活帶來極大困擾。
如今,在中國國內互聯網行業,正規的大型企業也都將Robots協議當做一項行業標準,國內使用Robots協議最典型的案例,就是淘寶網拒絕百度搜索、京東拒絕一淘搜索。不過,絕大多數中小網站都需要依靠搜索引擎來增加流量,因此通常并不排斥搜索引擎,也很少使用Robots協議。
北京市漢卓律師事務所首席律師趙虎表示,Robots協議是維護互聯網世界隱私安全的重要規則。如果這種規則被破壞,對整個行業就是滅頂之災。
搜索引擎
百度對robots.txt是有反應的,但比較慢,在減少禁止目錄抓取的同時也減少了正常目錄的抓取。
原因應該是入口減少了,正常目錄收錄需要后面再慢慢增加。
Google對robots.txt反應很到位,禁止目錄馬上消失了,部分正常目錄收錄馬上上升了。/comment/目錄收錄也下降了,還是受到了一些老目標減少的影響。
搜狗抓取呈現普遍增加的均勢,部分禁止目錄收錄下降了。
總結一下:Google似乎最懂站長的意思,百度等其它搜索引擎只是被動的受入口數量影響了。
淘寶封殺
2008年9月8日,淘寶網宣布封殺百度爬蟲,百度忍痛遵守爬蟲協議。因為一旦破壞協議,用戶的隱私和利益就無法得到保障,搜索網站就談不到人性關懷。
京東封殺
2011年10月25日,京東商城正式將一淘網的搜索爬蟲屏蔽,以防止一淘網對其的內容抓取。
違反事例
BE違規抓取eBay
在12年前,美國加州北部的聯邦地方法院就在著名的eBayVS. Bidder's Edge案中(NO.C-99-21200RMW,2000 U.S Dist. LEXI 7282),引用robots協議對案件進行裁定。 Bidder's Edge(簡稱BE)成立于1997年,是專門提供拍賣信息的聚合網站。12年前,BE利用“蜘蛛”抓取來自eBay等各個大型拍賣網站的商品信息,放在自己的網站上供用戶瀏覽,并獲得可觀的網站流量。
對于eBay來說,來自BE蜘蛛每天超過十萬次的訪問,給自己的服務器帶來了巨大的壓力。而雖然eBay早已設置了robots協議禁止BE蜘蛛的抓取,但BE卻無視這個要求——原因很簡單,據估算,BE網站69%的拍賣信息都來自eBay, 如果停止抓取eBay內容,這意味著BE將損失至少三分之一的用戶。
數次溝通交涉未果后,2000年2月,忍無可忍的eBay終于一紙訴狀,將BE告上聯邦法庭,要求禁止BE的違規抓取行為。3個月后,受理此案的美國聯邦法官Ronald M. Whyte在經過多方調查取證后做出裁定,認定BE侵權成立,禁止了BE在未經eBay允許的情況下,通過任何自動查詢程序、網絡蜘蛛等設置抓取eBay的拍賣內容。
在當時的庭審中,雙方爭議的焦點主要集中在“網站是否有權設置robots協議屏蔽其他網站蜘蛛的抓取”。被告BE認為,eBay的網站內容屬于網民自創,因此是公共資源,eBay無權設立robots協議進行限制。然而,法院對這一說辭卻并不認同。在法官看來:“eBay 的網站內容屬于私有財產,eBay有權通過robots協議對其進行限制。”違規抓取的行為無異于“對于動產的非法侵入”。
也正是出于這一判斷,即使當年BE還只是搜索了eBay計算機系統里的一小部分數據,其違反robots協議的抓取行為,仍然被判為侵犯了eBay將別人排除在其計算機系統以外的基本財產權。
作為美國歷史上第一個保護互聯網信息內容的法律裁定,eBay與BE的這起糾紛,成為網絡侵權案的標志性案例,并在當時引發了美國互聯網產業乃至社會的廣泛討論。SearchEngine Watch的知名專欄作家DannySullivan 曾專門在文章中指出,robots協議是規范搜索引擎爬蟲行為的極少數約定之一,理應遵守,它不僅僅讓整個互聯網的開放性變成可能,最終也讓整個互聯網用戶受益。
360搜索無視robots協議
2012年8月,360綜合搜索被指違反robots協議:
2012年8月29日,上線不到十日即輕松登上國內第二大搜索引擎寶座的奇虎360搜索遭遇滑鐵盧,在百度一項打擊違規抓取和匿名訪問的措施上線后,360搜索通過山寨加綁架用戶的模式被徹底揭穿,這個故事也正是對所謂“搜索引擎技術無用論”的當頭棒喝。
“360綜合搜索已超出Robots協議的‘底線’,不僅未經授權大量抓取百度、google內容,還記錄國內知名網游的后臺訂單、優惠碼等,甚至一些用戶的電子郵箱、帳號、密碼也被360通過瀏覽器悄然記錄在案”。2012年8月28日業內一位有10年搜索工程師經驗的專業人士表示。[2]
奇虎360搜索8月16 日上線,已連續遭到業界“違規”的警告。不僅UI設計,搜索結果直接剽竊、篡改百度、google等搜索引擎,還不顧國際通行的Robots協議,抓取百度、google等搜索引擎的內容,很多商業網站和個人信息的私密內容也被抓取泄密。據悉,這種匿名訪問和違規抓取其他網站內容的行為,不僅嚴重違反了行業底線,也傷害到了用戶的體驗。在國外,這種行為甚至會受到法律方面的制裁。“這已經嚴重觸碰了Robots協議的底線!這些讓如百度這樣踏踏實實做技術的公司進行反擊行動,是必然的!”
這位搜索工程師告訴記者,所謂Robots協議,通俗的講就是網站會通過robots.txt協議來自主控制是否愿意被搜索引擎收錄,或者指定搜索引擎只收錄指定的內容。而搜索引擎會按照每個網站主給與自己的權限來進行抓取。這就好比,一個正常的人去到別人家里,需要先敲門,得到許可以后才能進入客廳。除非有主人的進一步許可和邀請,否則你不能擅自進入內室,或者在別人家里四處溜達。當然,強盜或者小偷例外。[3]
對于奇虎360綜合搜索被爆出無視國際通行的robots協議,抓取百度、Google等搜索引擎內容,導致眾多網站出于安全和隱私考慮不允許搜索引擎抓取的內網信息被泄露一事,資深互聯網觀察家洪波指出,做搜索就要遵守搜索行業公認的游戲規則,無視規則,肆意違反規則才是真正的不正當競爭,這種行為不能從法律和政府監管上及時制止,將引發行業大亂。
百度并沒有禁止所有爬蟲抓取問答、知道和貼吧的內容,百度只是禁止了不規矩的、存在潛在安全風險的爬蟲,這恰是保護市場秩序,保護用戶隱私的合理舉措。2008年淘寶也曾禁止百度爬蟲,而百度則嚴格遵守robots協議,停止抓取淘寶網內容,并沒有以淘寶不正當競爭為借口違反robots協議。
中國工程院院士高文:Robots協議是搜索引擎在抓取網站信息時要遵守的一個規則,是國際互聯網界通行的道德規范。網站主人通過Robots協議明示自動抓取程序,服務器上什么內容可以被抓取,什么內容不可以被抓取。這是保證互聯網行業健康發展的自律準則,盡管不是強制命令,但業界都應該遵守。中國互聯網企業要想在國際舞臺受到更多關注、得到更大的發展,沒有理由不遵守這個游戲規則。如果不遵守,不僅損害了違規企業自身的形象,也損害了中國互聯網行業的整體聲譽,得不償失。
浙江大學計算機學院院長莊越挺:互聯網網站頁面,如同廣闊農村中的一個菜園,各有其主。一般而言,訪客進去逛逛無可厚非,但是如果主人在邊界立下界碑:未經允許不得入內,這就意味著主人的意愿成為外界是否獲準入園參觀的標準。Robots協議就是這樣一塊界碑,它雖然不具法律效應,但是人們都普遍遵循。未經允許入園就參觀不僅違反了游戲規則,也有違道德標準。同樣的道理,違反Robots協議,等同于違背了搜索引擎的行業規范,以這種方式獲取資源是一種不道德的競爭。
哈爾濱工業大學教授劉挺:Robots協議是互聯網中網站為搜索引擎所制定的內容抓取規則,體現了業界同行之間的相互信任。如果不遵循Robots協議,將會破其業界信任,使得網站的內容不愿意被抓取的內容被搜索引擎索引,最終傷害用戶的利益。而清華大學計算機系教授馬少平則指出,如果不遵守Robots協議,肆意抓取網站的內容,網站的信息被任意泄漏,將對互聯網的良性發展產生巨大的破壞作用。
百度起訴360
百度訴奇虎360違反“Robots協議”抓取、復制其網站內容侵權一案,2013年10月16日上午在北京市第一中級人民法院開庭審理。百度方面認為,360搜索在未獲得百度公司允許的情況下,違反業內公認的Robots協議,抓取百度旗下百度知道、百度百科、百度貼吧等網站的內容,已經構成了不正當競爭,并向奇虎索賠1億元。
百度公關部郭彪向媒體表示,Robots協議是網站信息和網民隱私保護的國際通行規范之一,理應得到全球互聯網公司的共同遵守。不尊重Robots協議將可能導致網民隱私大規模泄露。
郭彪表示,更嚴重的是,奇虎360還利用360瀏覽器等客戶端,強行抓取網民的瀏覽數據和信息到搜索服務器,完全無視Robots協議。這一做法目前已經導致大量企業內網信息被泄露。2012年年底,百度工程師通過一個名為“鬼節捉鬼”的測試,證明了360瀏覽器存在私自上傳“孤島頁面”等隱私內容到360搜索的行為。
360方面則認為,360搜索索引這些內容頁面并不涉嫌侵犯百度的權益,實際上還為百度帶來了大量的用戶和流量,百度應該感謝360。 [2]