什么是搜索引擎的Robots協(xié)議?Robots協(xié)議的寫法及使用說明

2015-03-25    分類: 網(wǎng)站建設(shè)

什么是Robots協(xié)議:

  Robots協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標準”(Robots Exclusion Protocol),網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。

  Robots協(xié)議也稱為爬蟲協(xié)議、爬蟲規(guī)則、機器人協(xié)議,是網(wǎng)站國際互聯(lián)網(wǎng)界通行的道德規(guī)范,其目的是保護網(wǎng)站數(shù)據(jù)和敏感信息、確保用戶個人信息和隱私不被侵犯?!耙?guī)則”中將搜索引擎抓取網(wǎng)站內(nèi)容的范圍做了約定,包括網(wǎng)站是否希望被搜索引擎抓取,哪些內(nèi)容不允許被抓取,而網(wǎng)絡(luò)爬蟲可以據(jù)此自動抓取或者不抓取該網(wǎng)頁內(nèi)容。如果將網(wǎng)站視為酒店里的一個房間,robots.txt就是主人在房間門口懸掛的“請勿打擾”或“歡迎打掃”的提示牌。這個文件告訴來訪的搜索引擎哪些房間可以進入和參觀,哪些不對搜索引擎開放。

Robots協(xié)議的詳解:

  Robots協(xié)議是Web站點和搜索引擎爬蟲交互的一種方式,Robots.txt是存放在站點根目錄下的一個純文本文件。該文件可以指定搜索引擎爬蟲只抓取指定的內(nèi)容,或者是禁止搜索引擎爬蟲抓取網(wǎng)站的部分或全部內(nèi)容。當一個搜索引擎爬蟲訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索引擎爬蟲就會按照該文件中的內(nèi)容來確定訪問的范圍;如果該文件不存在,那么搜索引擎爬蟲就沿著鏈接抓取。

  另外,robots.txt必須放置在一個站點的根目錄下,而且文件名必須全部小寫。如果搜索引擎爬蟲要訪問的網(wǎng)站地址是http://www.w3.org/,那么robots.txt文件必須能夠通過http://www.w3.org/robots.txt打開并看到里面的內(nèi)容。

  # robots.txt for http://www.w3.org

  #

  #$Id:robots.txt.v 1.482007/10/1605:3l:15 gerald Exp$

  #

  #Forusebysearch.w3.org

  User-agent:W3C-gsa

  Disallow:/Out-Of-DateUser-agent:W3T_SE

  Disallow:/Out-Of-Date-

  User-agent:MozillaJ4.0(compatible;MSIE6.0;WindowsNT;MSSearch4.0Robot)

  Disallow:

  #W3CLinkchecker

  User-agent:W3C-checklink

  Disallow:

  #excludesomeaccess-controlledareas

  User-agent:*

  Disallow:/Team

  Disallow;/Project

  Disallow:/Web

  Disallow:/Systems

  Disallow:/History

  Disallow:/0ut-Of-Date

  Disallow:/People/all/

  Disallow:/2005/11/Translations/Query

  Disallow:/2000/06/webdata/xslt

  Disallow:/2000/09/webdata/xslt

  Disallow:/2005/08/online-xslt/xslt

  Disallow:/Search/Mail/Public/

  Disallow:/2006/02/chartergen

  具體使用格式如下:

  (1)User.agent:用于描述搜索引擎爬蟲的名字。在Robots.txt文件中,如果有多條User-agent記錄,說明有多個搜索引擎爬蟲會受到該協(xié)議的限制,對該文件來說,至少要有一條User-agent記錄。如果該項的值設(shè)為木,則該協(xié)議對任何搜索引擎爬蟲均有效,在Robots.txt文件中,“User-agent:*這樣的記錄只能有一條。

  (2)Disallow:用于描述不希望被訪問到的一個URL。這個URL可以是一條完整的路徑,也可以是部分路徑,任何以Disallow開頭的URL均不會被Robot訪問到。

  搜索引擎爬蟲必須要遵守Robots協(xié)議并執(zhí)行Web站點的要求。因此搜索引擎爬蟲需要有一個分析Robots協(xié)議的模塊,并嚴格按照Robots協(xié)議的規(guī)定抓取Web主機允許訪問的目錄和網(wǎng)頁。

  當然,Robots.txt只是一個協(xié)議,如果搜索引擎爬蟲的設(shè)計者不遵循這個協(xié)議,網(wǎng)站管理員也無法阻止搜索引擎爬蟲對于某些頁面的訪問,但一般的搜索引擎爬蟲都會遵循這些協(xié)議,而且網(wǎng)站管理員還可以通過其他方式來拒絕網(wǎng)絡(luò)蜘蛛對某些網(wǎng)頁的抓取。

  搜索引擎爬蟲在下載網(wǎng)頁的時候,會去識別網(wǎng)頁的HTML代碼,在其代碼部分會有META標識。通過這些標識,可以告訴搜索引擎爬蟲本網(wǎng)頁是否需要被抓取,還可以告訴搜索引擎爬蟲本網(wǎng)頁中的鏈接是否需要被繼續(xù)跟蹤。例如:表示本網(wǎng)頁不需要被抓取,但是網(wǎng)頁內(nèi)的鏈接需要被跟蹤。

  現(xiàn)在一般的網(wǎng)站都希望搜索引擎能更全面地抓取自己網(wǎng)站的網(wǎng)頁,因為這樣可以讓更多的訪問者能通過搜索引擎找到此網(wǎng)站。為了讓本網(wǎng)站的網(wǎng)頁更全面地被抓取到,網(wǎng)站管理員可以建立一個網(wǎng)站地圖,即SiteMap。許多搜索引擎爬蟲會把sitemap.htm文件作為一個網(wǎng)站網(wǎng)頁爬取的入口,網(wǎng)站管理員可以把網(wǎng)站內(nèi)部所有網(wǎng)頁的鏈接放在這個文件里面,那么搜索引擎爬蟲可以很方便地把整個網(wǎng)站抓取下來,避免遺漏某些網(wǎng)頁,也會減小對網(wǎng)站服務(wù)器的負擔。

Robots協(xié)議的約束力:

  “Robots的約束力固然僅限于自律,無強制性,但這不等于說它背后反映的精神,沒有法律基礎(chǔ)?!敝袊鐣茖W院信息化研究中心秘書長姜奇平表示,美國的電子隱私權(quán)法就規(guī)定“將決定權(quán)交給消費者,讓其切實有效地授權(quán)或者拒絕他人采集和使用其個人信息”,可見遵守規(guī)則就是要遵守公平競爭,不是沒有強制力就可以不公平競爭。

  例子

  允許所有的機器人:

  User-agent: *

  Disallow:

  另一寫法

  User-agent: *

  Allow:/

  僅允許特定的機器人:(name_spider用真實名字代替)

  User-agent: name_spider

  Allow:

  攔截所有的機器人:

  User-agent: *

  Disallow: /

  禁止所有機器人訪問特定目錄:

  User-agent: *

  Disallow: /cgi-bin/

  Disallow: /images/

  Disallow: /tmp/

  Disallow: /private/

  僅禁止壞爬蟲訪問特定目錄(BadBot用真實的名字代替):

  User-agent: BadBot

  Disallow: /private/

  禁止所有機器人訪問特定文件類型:

  User-agent: *

  Disallow: /*.php$

  Disallow: /*.js$

  Disallow: /*.inc$

  Disallow: /*.css$

為什么需要Robots協(xié)議:

  互聯(lián)網(wǎng)上的網(wǎng)頁是通過超級鏈接互相關(guān)聯(lián)起來的,從而形成了網(wǎng)頁的網(wǎng)狀結(jié)構(gòu)。爬蟲的工作方式就像蜘蛛在網(wǎng)上沿著鏈接爬來爬去,最基本的流程可以簡化如下:

  喂給爬蟲一堆url,我們稱之為種子(seeds);

  爬蟲抓取seeds,解析html網(wǎng)頁,抽取其中的超級鏈接;

  爬蟲接著抓取這些新發(fā)現(xiàn)的鏈接指向的網(wǎng)頁。

  步驟2和步驟3循環(huán)往復。

  了解了上面的流程就能發(fā)現(xiàn):對爬蟲來說網(wǎng)站非常被動,只有老老實實被抓取的份。

  所以,對于網(wǎng)站的管理者來說,就存在這樣的需求:

  某些路徑下是個人隱私或者網(wǎng)站管理使用,不想被搜索引擎抓取,比如說日本愛情動作片;

  不喜歡某個搜索引擎,不愿意被他抓取,最有名的就是之前淘寶不希望被百度抓??;

  小網(wǎng)站使用的是公用的虛擬主機,流量有限或者需要付費,希望搜索引擎抓的溫柔點;

  某些網(wǎng)頁是動態(tài)生成的,沒有直接的鏈接指向,但是希望內(nèi)容被搜索引擎抓取和索引。

  網(wǎng)站內(nèi)容的所有者是網(wǎng)站管理員,搜索引擎應該尊重所有者的意愿,為了滿足以上等等,就需要提供一種網(wǎng)站和爬蟲進行溝通的途徑,給網(wǎng)站管理員表達自己意愿的機會。有需求就有供應,robots協(xié)議就此誕生。

Robots協(xié)議的寫法:

  既然網(wǎng)絡(luò)爬蟲在爬取一個網(wǎng)站之前,要先獲取到這個文件,然后解析到其中的規(guī)則,那么,Robots就必須要有一套通用的語法規(guī)則。

  最簡單的robots.txt只有兩條規(guī)則:

  User-agent:指定對哪些爬蟲生效

  Disallow:指定要屏蔽的網(wǎng)址

  先說User-agent,爬蟲抓取時會聲明自己的身份,這就是User-agent,沒錯,就是http協(xié)議里的User-agent。robots.txt利用User-agent來區(qū)分各個引擎的爬蟲,比如說google網(wǎng)頁搜索爬蟲的User-agent為Googlebot。

  可能有讀者要問了,我怎么知道爬蟲的User-agent是什么?你還可以查相關(guān)搜索引擎的資料得到官方的數(shù)據(jù),比如說百度的爬蟲列表是這樣的:

  Disallow 行列出的是要攔截的網(wǎng)頁,以正斜線 (/) 開頭,可以列出特定的網(wǎng)址或模式。要屏蔽整個網(wǎng)站,使用正斜線即可;要屏蔽某一目錄以及其中的所有內(nèi)容,在目錄名后添加正斜線;要屏蔽某個具體的網(wǎng)頁,就指出這個網(wǎng)頁。

  下面我們來看一些Robots的具體寫法:

  允許所有的robot訪問

  User-agent: *

  Disallow:

  或者也可以建一個空文件 "/robots.txt" file。

  禁止爬蟲訪問所有目錄

  User-agent: *

  Disallow: /

  禁止爬蟲訪問某些目錄

  User-agent: *

  Disallow: /a/

  Disallow: /b/

  Disallow: /c/

  禁止某些爬蟲訪問

  User-agent: BadBot

  Disallow: /

  只允許某個爬蟲訪問

  User-agent: MangCrawler

  Disallow:

  User-agent: *

  Disallow: /

  我們再來結(jié)合兩個真實的范例來學習一下。先看這個例子:

  User-agent: Baiduspider

  Disallow: /

  User-agent: baiduspider

  Disallow: /

  這個是淘寶網(wǎng)的Robots協(xié)議內(nèi)容,相信你已經(jīng)看出來了,淘寶網(wǎng)禁止百度的爬蟲訪問。

  再來看一個例子:

  User-agent: *

  Disallow: /?*

  Disallow: /pop/*.html

  User-agent: EtaoSpider

  Disallow: /

  這個稍微復雜點,京東有2個目錄不希望所有的爬蟲來抓。同時,京東完全屏蔽了一淘網(wǎng)的蜘蛛(EtaoSpider是一淘網(wǎng)的蜘蛛)。

Robots.txt以外的內(nèi)容:

  除了Robots.txt以外,還可以使用Robots Meta來向搜索引擎?zhèn)鬟f信息,先看示例如下:

  META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"

  content部分有四個選項:index、noindex、follow、nofollow,指令間用“,”分隔。

  共有四種組合:

  META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"

  META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW"

  META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW"

  META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"

  其中:

  META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"可以寫成META NAME="ROBOTS" CONTENT="ALL"

  META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"可以寫成META NAME="ROBOTS" CONTENT="NONE"

  目前看來,絕大多數(shù)的搜索引擎機器人都遵守robots.txt的規(guī)則,而對于Robots META標簽,目前支持的并不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網(wǎng)頁快照。例如:

  META NAME="googlebot" CONTENT="index,follow,noarchive"

  表示抓取該站點中頁面并沿著頁面中鏈接抓取,但是不在GOOLGE上保留該頁面的網(wǎng)頁快照。

Robots.txt使用上應注意的一些問題:

  1、每當用戶試圖訪問某個不存在的URL時,服務(wù)器都會在日志中記錄404錯誤(無法找到文件)。每當搜索蜘蛛來尋找并不存在的robots.txt文件時,服務(wù)器也將在日志中記錄一條404錯誤,所以你應該在網(wǎng)站中添加一個robots.txt。

  2、如果后臺和前臺在一個域名下,不希望爬蟲抓取后臺程序的,可以在Robots.txt明確不讓爬蟲抓取的目錄。但這會不會被某些惡意分子一下子就能夠知道后臺目錄呢?

  3、國內(nèi)常見搜索機器人的名字

防君子不防小人:

  Robots協(xié)議不是什么技術(shù)壁壘,而只是一種互相尊重的協(xié)議,好比私家花園的門口掛著“閑人免進”,尊重者繞道而行,不尊重者依然可以推門而入。目前,Robots協(xié)議在實際使用中,還存在一些問題。

  緩存

  robots.txt本身也是需要抓取的,出于效率考慮,一般爬蟲不會每次抓取網(wǎng)站網(wǎng)頁前都抓一下robots.txt,加上robots.txt更新不頻繁,內(nèi)容需要解析。通常爬蟲的做法是先抓取一次,解析后緩存下來,而且是相當長的時間。假設(shè)網(wǎng)站管理員更新了robots.txt,修改了某些規(guī)則,但是對爬蟲來說并不會立刻生效,只有當爬蟲下次抓取robots.txt之后才能看到最新的內(nèi)容。尷尬的是,爬蟲下次抓取robots.txt的時間并不是由網(wǎng)站管理員控制的。當然,有些搜索引擎提供了web 工具可以讓網(wǎng)站管理員通知搜索引擎那個url發(fā)生了變化,建議重新抓取。注意,此處是建議,即使你通知了搜索引擎,搜索引擎何時抓取仍然是不確定的,只是比完全不通知要好點。至于好多少,那就看搜索引擎的良心和技術(shù)能力了。

  ignore

  不知是無意還是有意,反正有些爬蟲不太遵守或者完全忽略robots.txt,不排除開發(fā)人員能力的問題,比如說根本不知道robots.txt。另外,本身robots.txt不是一種強制措施,如果網(wǎng)站有數(shù)據(jù)需要保密,必需采取技術(shù)措施,比如說:用戶驗證,加密,ip攔截,訪問頻率控制等。

  惡意爬蟲

  在互聯(lián)網(wǎng)世界中,每天都有不計其數(shù)的爬蟲在日夜不息地爬取數(shù)據(jù),其中惡意爬蟲的數(shù)量甚至高于非惡意爬蟲。遵守Robots協(xié)議的爬蟲才是好爬蟲,但是并不是每個爬蟲都會主動遵守Robots協(xié)議。

  惡意爬蟲可以帶來很多潛在威脅,比如電商網(wǎng)站的商品信息被爬取可能會被競爭對手利用,過多的爬蟲還會占用帶寬資源、甚至導致網(wǎng)站宕機。

  反惡意爬蟲是一件漫長而艱巨的任務(wù),如果依靠自身實力難以解決,可以借助業(yè)務(wù)風險分析平臺來反惡意爬蟲,根據(jù)自己的需求來定制功能。

網(wǎng)站欄目:什么是搜索引擎的Robots協(xié)議?Robots協(xié)議的寫法及使用說明
路徑分享:http://www.muchs.cn/news/34157.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、ChatGPT、關(guān)鍵詞優(yōu)化網(wǎng)站排名、網(wǎng)站收錄、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司