2015-03-25 分類: 網(wǎng)站建設(shè)
什么是Robots協(xié)議:
Robots協(xié)議(也稱為爬蟲協(xié)議、機(jī)器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol),網(wǎng)站通過(guò)Robots協(xié)議告訴搜索引擎哪些頁(yè)面可以抓取,哪些頁(yè)面不能抓取。
Robots協(xié)議也稱為爬蟲協(xié)議、爬蟲規(guī)則、機(jī)器人協(xié)議,是網(wǎng)站國(guó)際互聯(lián)網(wǎng)界通行的道德規(guī)范,其目的是保護(hù)網(wǎng)站數(shù)據(jù)和敏感信息、確保用戶個(gè)人信息和隱私不被侵犯?!耙?guī)則”中將搜索引擎抓取網(wǎng)站內(nèi)容的范圍做了約定,包括網(wǎng)站是否希望被搜索引擎抓取,哪些內(nèi)容不允許被抓取,而網(wǎng)絡(luò)爬蟲可以據(jù)此自動(dòng)抓取或者不抓取該網(wǎng)頁(yè)內(nèi)容。如果將網(wǎng)站視為酒店里的一個(gè)房間,robots.txt就是主人在房間門口懸掛的“請(qǐng)勿打擾”或“歡迎打掃”的提示牌。這個(gè)文件告訴來(lái)訪的搜索引擎哪些房間可以進(jìn)入和參觀,哪些不對(duì)搜索引擎開放。
Robots協(xié)議的詳解:
Robots協(xié)議是Web站點(diǎn)和搜索引擎爬蟲交互的一種方式,Robots.txt是存放在站點(diǎn)根目錄下的一個(gè)純文本文件。該文件可以指定搜索引擎爬蟲只抓取指定的內(nèi)容,或者是禁止搜索引擎爬蟲抓取網(wǎng)站的部分或全部?jī)?nèi)容。當(dāng)一個(gè)搜索引擎爬蟲訪問(wèn)一個(gè)站點(diǎn)時(shí),它會(huì)首先檢查該站點(diǎn)根目錄下是否存在robots.txt,如果存在,搜索引擎爬蟲就會(huì)按照該文件中的內(nèi)容來(lái)確定訪問(wèn)的范圍;如果該文件不存在,那么搜索引擎爬蟲就沿著鏈接抓取。
另外,robots.txt必須放置在一個(gè)站點(diǎn)的根目錄下,而且文件名必須全部小寫。如果搜索引擎爬蟲要訪問(wèn)的網(wǎng)站地址是http://www.w3.org/,那么robots.txt文件必須能夠通過(guò)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記錄,說(shuō)明有多個(gè)搜索引擎爬蟲會(huì)受到該協(xié)議的限制,對(duì)該文件來(lái)說(shuō),至少要有一條User-agent記錄。如果該項(xiàng)的值設(shè)為木,則該協(xié)議對(duì)任何搜索引擎爬蟲均有效,在Robots.txt文件中,“User-agent:*這樣的記錄只能有一條。
(2)Disallow:用于描述不希望被訪問(wèn)到的一個(gè)URL。這個(gè)URL可以是一條完整的路徑,也可以是部分路徑,任何以Disallow開頭的URL均不會(huì)被Robot訪問(wèn)到。
搜索引擎爬蟲必須要遵守Robots協(xié)議并執(zhí)行Web站點(diǎn)的要求。因此搜索引擎爬蟲需要有一個(gè)分析Robots協(xié)議的模塊,并嚴(yán)格按照Robots協(xié)議的規(guī)定抓取Web主機(jī)允許訪問(wèn)的目錄和網(wǎng)頁(yè)。
當(dāng)然,Robots.txt只是一個(gè)協(xié)議,如果搜索引擎爬蟲的設(shè)計(jì)者不遵循這個(gè)協(xié)議,網(wǎng)站管理員也無(wú)法阻止搜索引擎爬蟲對(duì)于某些頁(yè)面的訪問(wèn),但一般的搜索引擎爬蟲都會(huì)遵循這些協(xié)議,而且網(wǎng)站管理員還可以通過(guò)其他方式來(lái)拒絕網(wǎng)絡(luò)蜘蛛對(duì)某些網(wǎng)頁(yè)的抓取。
搜索引擎爬蟲在下載網(wǎng)頁(yè)的時(shí)候,會(huì)去識(shí)別網(wǎng)頁(yè)的HTML代碼,在其代碼部分會(huì)有META標(biāo)識(shí)。通過(guò)這些標(biāo)識(shí),可以告訴搜索引擎爬蟲本網(wǎng)頁(yè)是否需要被抓取,還可以告訴搜索引擎爬蟲本網(wǎng)頁(yè)中的鏈接是否需要被繼續(xù)跟蹤。例如:表示本網(wǎng)頁(yè)不需要被抓取,但是網(wǎng)頁(yè)內(nèi)的鏈接需要被跟蹤。
現(xiàn)在一般的網(wǎng)站都希望搜索引擎能更全面地抓取自己網(wǎng)站的網(wǎng)頁(yè),因?yàn)檫@樣可以讓更多的訪問(wèn)者能通過(guò)搜索引擎找到此網(wǎng)站。為了讓本網(wǎng)站的網(wǎng)頁(yè)更全面地被抓取到,網(wǎng)站管理員可以建立一個(gè)網(wǎng)站地圖,即SiteMap。許多搜索引擎爬蟲會(huì)把sitemap.htm文件作為一個(gè)網(wǎng)站網(wǎng)頁(yè)爬取的入口,網(wǎng)站管理員可以把網(wǎng)站內(nèi)部所有網(wǎng)頁(yè)的鏈接放在這個(gè)文件里面,那么搜索引擎爬蟲可以很方便地把整個(gè)網(wǎng)站抓取下來(lái),避免遺漏某些網(wǎng)頁(yè),也會(huì)減小對(duì)網(wǎng)站服務(wù)器的負(fù)擔(dān)。
Robots協(xié)議的約束力:
“Robots的約束力固然僅限于自律,無(wú)強(qiáng)制性,但這不等于說(shuō)它背后反映的精神,沒(méi)有法律基礎(chǔ)?!敝袊?guó)社會(huì)科學(xué)院信息化研究中心秘書長(zhǎng)姜奇平表示,美國(guó)的電子隱私權(quán)法就規(guī)定“將決定權(quán)交給消費(fèi)者,讓其切實(shí)有效地授權(quán)或者拒絕他人采集和使用其個(gè)人信息”,可見遵守規(guī)則就是要遵守公平競(jìng)爭(zhēng),不是沒(méi)有強(qiáng)制力就可以不公平競(jìng)爭(zhēng)。
例子
允許所有的機(jī)器人:
User-agent: *
Disallow:
另一寫法
User-agent: *
Allow:/
僅允許特定的機(jī)器人:(name_spider用真實(shí)名字代替)
User-agent: name_spider
Allow:
攔截所有的機(jī)器人:
User-agent: *
Disallow: /
禁止所有機(jī)器人訪問(wèn)特定目錄:
User-agent: *
Disallow: /cgi-bin/
Disallow: /images/
Disallow: /tmp/
Disallow: /private/
僅禁止壞爬蟲訪問(wèn)特定目錄(BadBot用真實(shí)的名字代替):
User-agent: BadBot
Disallow: /private/
禁止所有機(jī)器人訪問(wèn)特定文件類型:
User-agent: *
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
為什么需要Robots協(xié)議:
互聯(lián)網(wǎng)上的網(wǎng)頁(yè)是通過(guò)超級(jí)鏈接互相關(guān)聯(lián)起來(lái)的,從而形成了網(wǎng)頁(yè)的網(wǎng)狀結(jié)構(gòu)。爬蟲的工作方式就像蜘蛛在網(wǎng)上沿著鏈接爬來(lái)爬去,最基本的流程可以簡(jiǎn)化如下:
喂給爬蟲一堆url,我們稱之為種子(seeds);
爬蟲抓取seeds,解析html網(wǎng)頁(yè),抽取其中的超級(jí)鏈接;
爬蟲接著抓取這些新發(fā)現(xiàn)的鏈接指向的網(wǎng)頁(yè)。
步驟2和步驟3循環(huán)往復(fù)。
了解了上面的流程就能發(fā)現(xiàn):對(duì)爬蟲來(lái)說(shuō)網(wǎng)站非常被動(dòng),只有老老實(shí)實(shí)被抓取的份。
所以,對(duì)于網(wǎng)站的管理者來(lái)說(shuō),就存在這樣的需求:
某些路徑下是個(gè)人隱私或者網(wǎng)站管理使用,不想被搜索引擎抓取,比如說(shuō)日本愛情動(dòng)作片;
不喜歡某個(gè)搜索引擎,不愿意被他抓取,最有名的就是之前淘寶不希望被百度抓取;
小網(wǎng)站使用的是公用的虛擬主機(jī),流量有限或者需要付費(fèi),希望搜索引擎抓的溫柔點(diǎn);
某些網(wǎng)頁(yè)是動(dòng)態(tài)生成的,沒(méi)有直接的鏈接指向,但是希望內(nèi)容被搜索引擎抓取和索引。
網(wǎng)站內(nèi)容的所有者是網(wǎng)站管理員,搜索引擎應(yīng)該尊重所有者的意愿,為了滿足以上等等,就需要提供一種網(wǎng)站和爬蟲進(jìn)行溝通的途徑,給網(wǎng)站管理員表達(dá)自己意愿的機(jī)會(huì)。有需求就有供應(yīng),robots協(xié)議就此誕生。
Robots協(xié)議的寫法:
既然網(wǎng)絡(luò)爬蟲在爬取一個(gè)網(wǎng)站之前,要先獲取到這個(gè)文件,然后解析到其中的規(guī)則,那么,Robots就必須要有一套通用的語(yǔ)法規(guī)則。
最簡(jiǎn)單的robots.txt只有兩條規(guī)則:
User-agent:指定對(duì)哪些爬蟲生效
Disallow:指定要屏蔽的網(wǎng)址
先說(shuō)User-agent,爬蟲抓取時(shí)會(huì)聲明自己的身份,這就是User-agent,沒(méi)錯(cuò),就是http協(xié)議里的User-agent。robots.txt利用User-agent來(lái)區(qū)分各個(gè)引擎的爬蟲,比如說(shuō)google網(wǎng)頁(yè)搜索爬蟲的User-agent為Googlebot。
可能有讀者要問(wèn)了,我怎么知道爬蟲的User-agent是什么?你還可以查相關(guān)搜索引擎的資料得到官方的數(shù)據(jù),比如說(shuō)百度的爬蟲列表是這樣的:
Disallow 行列出的是要攔截的網(wǎng)頁(yè),以正斜線 (/) 開頭,可以列出特定的網(wǎng)址或模式。要屏蔽整個(gè)網(wǎng)站,使用正斜線即可;要屏蔽某一目錄以及其中的所有內(nèi)容,在目錄名后添加正斜線;要屏蔽某個(gè)具體的網(wǎng)頁(yè),就指出這個(gè)網(wǎng)頁(yè)。
下面我們來(lái)看一些Robots的具體寫法:
允許所有的robot訪問(wèn)
User-agent: *
Disallow:
或者也可以建一個(gè)空文件 "/robots.txt" file。
禁止爬蟲訪問(wèn)所有目錄
User-agent: *
Disallow: /
禁止爬蟲訪問(wèn)某些目錄
User-agent: *
Disallow: /a/
Disallow: /b/
Disallow: /c/
禁止某些爬蟲訪問(wèn)
User-agent: BadBot
Disallow: /
只允許某個(gè)爬蟲訪問(wèn)
User-agent: MangCrawler
Disallow:
User-agent: *
Disallow: /
我們?cè)賮?lái)結(jié)合兩個(gè)真實(shí)的范例來(lái)學(xué)習(xí)一下。先看這個(gè)例子:
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
這個(gè)是淘寶網(wǎng)的Robots協(xié)議內(nèi)容,相信你已經(jīng)看出來(lái)了,淘寶網(wǎng)禁止百度的爬蟲訪問(wèn)。
再來(lái)看一個(gè)例子:
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
User-agent: EtaoSpider
Disallow: /
這個(gè)稍微復(fù)雜點(diǎn),京東有2個(gè)目錄不希望所有的爬蟲來(lái)抓。同時(shí),京東完全屏蔽了一淘網(wǎng)的蜘蛛(EtaoSpider是一淘網(wǎng)的蜘蛛)。
Robots.txt以外的內(nèi)容:
除了Robots.txt以外,還可以使用Robots Meta來(lái)向搜索引擎?zhèn)鬟f信息,先看示例如下:
META NAME="ROBOTS" CONTENT="INDEX,FOLLOW"
content部分有四個(gè)選項(xiàng):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"
目前看來(lái),絕大多數(shù)的搜索引擎機(jī)器人都遵守robots.txt的規(guī)則,而對(duì)于Robots META標(biāo)簽,目前支持的并不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個(gè)指令“archive”,可以限制GOOGLE是否保留網(wǎng)頁(yè)快照。例如:
META NAME="googlebot" CONTENT="index,follow,noarchive"
表示抓取該站點(diǎn)中頁(yè)面并沿著頁(yè)面中鏈接抓取,但是不在GOOLGE上保留該頁(yè)面的網(wǎng)頁(yè)快照。
Robots.txt使用上應(yīng)注意的一些問(wèn)題:
1、每當(dāng)用戶試圖訪問(wèn)某個(gè)不存在的URL時(shí),服務(wù)器都會(huì)在日志中記錄404錯(cuò)誤(無(wú)法找到文件)。每當(dāng)搜索蜘蛛來(lái)尋找并不存在的robots.txt文件時(shí),服務(wù)器也將在日志中記錄一條404錯(cuò)誤,所以你應(yīng)該在網(wǎng)站中添加一個(gè)robots.txt。
2、如果后臺(tái)和前臺(tái)在一個(gè)域名下,不希望爬蟲抓取后臺(tái)程序的,可以在Robots.txt明確不讓爬蟲抓取的目錄。但這會(huì)不會(huì)被某些惡意分子一下子就能夠知道后臺(tái)目錄呢?
3、國(guó)內(nèi)常見搜索機(jī)器人的名字
防君子不防小人:
Robots協(xié)議不是什么技術(shù)壁壘,而只是一種互相尊重的協(xié)議,好比私家花園的門口掛著“閑人免進(jìn)”,尊重者繞道而行,不尊重者依然可以推門而入。目前,Robots協(xié)議在實(shí)際使用中,還存在一些問(wèn)題。
緩存
robots.txt本身也是需要抓取的,出于效率考慮,一般爬蟲不會(huì)每次抓取網(wǎng)站網(wǎng)頁(yè)前都抓一下robots.txt,加上robots.txt更新不頻繁,內(nèi)容需要解析。通常爬蟲的做法是先抓取一次,解析后緩存下來(lái),而且是相當(dāng)長(zhǎng)的時(shí)間。假設(shè)網(wǎng)站管理員更新了robots.txt,修改了某些規(guī)則,但是對(duì)爬蟲來(lái)說(shuō)并不會(huì)立刻生效,只有當(dāng)爬蟲下次抓取robots.txt之后才能看到最新的內(nèi)容。尷尬的是,爬蟲下次抓取robots.txt的時(shí)間并不是由網(wǎng)站管理員控制的。當(dāng)然,有些搜索引擎提供了web 工具可以讓網(wǎng)站管理員通知搜索引擎那個(gè)url發(fā)生了變化,建議重新抓取。注意,此處是建議,即使你通知了搜索引擎,搜索引擎何時(shí)抓取仍然是不確定的,只是比完全不通知要好點(diǎn)。至于好多少,那就看搜索引擎的良心和技術(shù)能力了。
ignore
不知是無(wú)意還是有意,反正有些爬蟲不太遵守或者完全忽略robots.txt,不排除開發(fā)人員能力的問(wèn)題,比如說(shuō)根本不知道robots.txt。另外,本身robots.txt不是一種強(qiáng)制措施,如果網(wǎng)站有數(shù)據(jù)需要保密,必需采取技術(shù)措施,比如說(shuō):用戶驗(yàn)證,加密,ip攔截,訪問(wèn)頻率控制等。
惡意爬蟲
在互聯(lián)網(wǎng)世界中,每天都有不計(jì)其數(shù)的爬蟲在日夜不息地爬取數(shù)據(jù),其中惡意爬蟲的數(shù)量甚至高于非惡意爬蟲。遵守Robots協(xié)議的爬蟲才是好爬蟲,但是并不是每個(gè)爬蟲都會(huì)主動(dòng)遵守Robots協(xié)議。
惡意爬蟲可以帶來(lái)很多潛在威脅,比如電商網(wǎng)站的商品信息被爬取可能會(huì)被競(jìng)爭(zhēng)對(duì)手利用,過(guò)多的爬蟲還會(huì)占用帶寬資源、甚至導(dǎo)致網(wǎng)站宕機(jī)。
反惡意爬蟲是一件漫長(zhǎng)而艱巨的任務(wù),如果依靠自身實(shí)力難以解決,可以借助業(yè)務(wù)風(fēng)險(xiǎn)分析平臺(tái)來(lái)反惡意爬蟲,根據(jù)自己的需求來(lái)定制功能。
網(wǎng)站欄目:什么是搜索引擎的Robots協(xié)議?Robots協(xié)議的寫法及使用說(shuō)明
路徑分享:http://www.rwnh.cn/news/34157.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、ChatGPT、關(guān)鍵詞優(yōu)化、網(wǎng)站排名、網(wǎng)站收錄、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容