2015-03-25 分類: 網(wǎng)站建設(shè)
什么是Robots協(xié)議:
Robots協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”(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)容。當(dāng)一個搜索引擎爬蟲訪問一個站點時,它會首先檢查該站點根目錄下是否存在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é)議的模塊,并嚴(yán)格按照Robots協(xié)議的規(guī)定抓取Web主機允許訪問的目錄和網(wǎng)頁。
當(dāng)然,Robots.txt只是一個協(xié)議,如果搜索引擎爬蟲的設(shè)計者不遵循這個協(xié)議,網(wǎng)站管理員也無法阻止搜索引擎爬蟲對于某些頁面的訪問,但一般的搜索引擎爬蟲都會遵循這些協(xié)議,而且網(wǎng)站管理員還可以通過其他方式來拒絕網(wǎng)絡(luò)蜘蛛對某些網(wǎng)頁的抓取。
搜索引擎爬蟲在下載網(wǎng)頁的時候,會去識別網(wǎng)頁的HTML代碼,在其代碼部分會有META標(biāo)識。通過這些標(biāo)識,可以告訴搜索引擎爬蟲本網(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ù)器的負(fù)擔(dān)。
Robots協(xié)議的約束力:
“Robots的約束力固然僅限于自律,無強制性,但這不等于說它背后反映的精神,沒有法律基礎(chǔ)?!敝袊鐣茖W(xué)院信息化研究中心秘書長姜奇平表示,美國的電子隱私權(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ù)。
了解了上面的流程就能發(fā)現(xiàn):對爬蟲來說網(wǎng)站非常被動,只有老老實實被抓取的份。
所以,對于網(wǎng)站的管理者來說,就存在這樣的需求:
某些路徑下是個人隱私或者網(wǎng)站管理使用,不想被搜索引擎抓取,比如說日本愛情動作片;
不喜歡某個搜索引擎,不愿意被他抓取,最有名的就是之前淘寶不希望被百度抓??;
小網(wǎng)站使用的是公用的虛擬主機,流量有限或者需要付費,希望搜索引擎抓的溫柔點;
某些網(wǎng)頁是動態(tài)生成的,沒有直接的鏈接指向,但是希望內(nèi)容被搜索引擎抓取和索引。
網(wǎng)站內(nèi)容的所有者是網(wǎng)站管理員,搜索引擎應(yīng)該尊重所有者的意愿,為了滿足以上等等,就需要提供一種網(wǎng)站和爬蟲進行溝通的途徑,給網(wǎng)站管理員表達自己意愿的機會。有需求就有供應(yī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é)合兩個真實的范例來學(xué)習(xí)一下。先看這個例子:
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: /
這個稍微復(fù)雜點,京東有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標(biāo)簽,目前支持的并不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網(wǎng)頁快照。例如:
META NAME="googlebot" CONTENT="index,follow,noarchive"
表示抓取該站點中頁面并沿著頁面中鏈接抓取,但是不在GOOLGE上保留該頁面的網(wǎng)頁快照。
Robots.txt使用上應(yīng)注意的一些問題:
1、每當(dāng)用戶試圖訪問某個不存在的URL時,服務(wù)器都會在日志中記錄404錯誤(無法找到文件)。每當(dāng)搜索蜘蛛來尋找并不存在的robots.txt文件時,服務(wù)器也將在日志中記錄一條404錯誤,所以你應(yīng)該在網(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)容需要解析。通常爬蟲的做法是先抓取一次,解析后緩存下來,而且是相當(dāng)長的時間。假設(shè)網(wǎng)站管理員更新了robots.txt,修改了某些規(guī)則,但是對爬蟲來說并不會立刻生效,只有當(dāng)爬蟲下次抓取robots.txt之后才能看到最新的內(nèi)容。尷尬的是,爬蟲下次抓取robots.txt的時間并不是由網(wǎng)站管理員控制的。當(dā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)站的商品信息被爬取可能會被競爭對手利用,過多的爬蟲還會占用帶寬資源、甚至導(dǎo)致網(wǎng)站宕機。
反惡意爬蟲是一件漫長而艱巨的任務(wù),如果依靠自身實力難以解決,可以借助業(yè)務(wù)風(fēng)險分析平臺來反惡意爬蟲,根據(jù)自己的需求來定制功能。
新聞標(biāo)題:什么是搜索引擎的Robots協(xié)議?Robots協(xié)議的寫法及使用說明
文章URL:http://jinyejixie.com/news7/34157.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站制作、服務(wù)器托管、軟件開發(fā)、標(biāo)簽優(yōu)化、Google
聲明:本網(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)
猜你還喜歡下面的內(nèi)容