robots協定(robots.txt)

robots協定

robots.txt一般指本詞條

Robots協定(也稱為爬蟲協定、機器人協定等)的全稱是“網路爬蟲排除標準”(Robots Exclusion Protocol),網站通過Robots協定告訴搜尋引擎哪些頁面可以抓取,哪些頁面不能抓取。

簡介,原則,功能,檔案寫法,檔案用法,其它屬性,標籤,注意事項,位置,產生,影響,搜尋引擎,淘寶封殺,京東封殺,違反事例,BE違規抓取eBay,360搜尋無視robots協定,百度起訴360,

簡介

robots.txt檔案是一個文本檔案,使用任何一個常見的文本編輯器,比如Windows系統自帶的Notepad,就可以創建和編輯它。robots.txt是一個協定,而不是一個命令。robots.txt是搜尋引擎中訪問網站的時候要查看的第一個檔案。robots.txt檔案告訴蜘蛛程式在伺服器上什麼檔案是可以被查看的。
當一個搜尋蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機器人就會按照該檔案中的內容來確定訪問的範圍;如果該檔案不存在,所有的搜尋蜘蛛將能夠訪問網站上所有沒有被口令保護的頁面。百度官方建議,僅當您的網站包含不希望被搜尋引擎收錄的內容時,才需要使用robots.txt檔案。如果您希望搜尋引擎收錄網站上所有內容,請勿建立robots.txt檔案。
如果將網站視為酒店裡的一個房間,robots.txt就是主人在房間門口懸掛的“請勿打擾”或“歡迎打掃”的提示牌。這個檔案告訴來訪的搜尋引擎哪些房間可以進入和參觀,哪些房間因為存放貴重物品,或可能涉及住戶及訪客的隱私而不對搜尋引擎開放。但robots.txt不是命令,也不是防火牆,如同守門人無法阻止竊賊等惡意闖入者。

原則

Robots協定是國際網際網路界通行的道德規範,基於以下原則建立:
robots協定原理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. 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,後來的googlebing,以及中國的百度,搜搜搜狗等公司也相繼採用並嚴格遵循。
Robot,又稱Spider,是搜尋引擎自動獲取網頁信息的電腦程式的通稱。Robots協定的核心思想就是要求Robot程式不要去檢索那些站長們不希望被直接搜尋到的內容。將約束Robot程式的具體方法規範成格式代碼,就成了Robots協定。一般來說,網站是通過Robots.txt檔案來實現Robots協定。
自有搜尋引擎之日起,Robots協定已是一種目前為止最有效的方式,用自律維持著網站與搜尋引擎之間的平衡,讓兩者之間的利益不致過度傾斜。它就像一個鐘擺,讓網際網路上的搜尋與被搜尋和諧相處。
維基百科上描述的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協定:
360甘冒行業道德風險 撕毀Robots自律協定360甘冒行業道德風險 撕毀Robots自律協定
2012年8月29日,上線不到十日即輕鬆登上國內第二大搜尋引擎寶座的奇虎360搜尋遭遇滑鐵盧,在百度一項打擊違規抓取和匿名訪問的措施上線後,360搜尋通過山寨加綁架用戶的模式被徹底揭穿,這個故事也正是對所謂“搜尋引擎技術無用論”的當頭棒喝。
“360綜合搜尋已超出Robots協定的‘底線’,不僅未經授權大量抓取百度、google內容,還記錄國內知名網遊的後台訂單、優惠碼等,甚至一些用戶的電子信箱、帳號、密碼也被360通過瀏覽器悄然記錄在案”。2012年8月28日業內一位有10年搜尋工程師經驗的專業人士表示。
奇虎360搜尋8月16 日上線,已連續遭到業界“違規”的警告。不僅UI設計,搜尋結果直接剽竊、篡改百度、google等搜尋引擎,還不顧國際通行的Robots協定,抓取百度、google等搜尋引擎的內容,很多商業網站和個人信息的私密內容也被抓取泄密。據悉,這種匿名訪問和違規抓取其他網站內容的行為,不僅嚴重違反了行業底線,也傷害到了用戶的體驗。在國外,這種行為甚至會受到法律方面的制裁。“這已經嚴重觸碰了Robots協定的底線!這些讓如百度這樣踏踏實實做技術的公司進行反擊行動,是必然的!”
這位搜尋工程師告訴記者,所謂Robots協定,通俗的講就是網站會通過robots.txt協定來自主控制是否願意被搜尋引擎收錄,或者指定搜尋引擎只收錄指定的內容。而搜尋引擎會按照每個網站主給與自己的許可權來進行抓取。這就好比,一個正常的人去到別人家裡,需要先敲門,得到許可以後才能進入客廳。除非有主人的進一步許可和邀請,否則你不能擅自進入內室,或者在別人家裡四處溜達。當然,強盜或者小偷例外。
對於奇虎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。

相關詞條

熱門詞條

聯絡我們