robots

robots

robots是網站跟爬蟲間的協定,用簡單直接的txt格式文本方式告訴對應的爬蟲被允許的許可權,也就是說robots.txt是搜尋引擎中訪問網站的時候要查看的第一個檔案。當一個搜尋蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機器人就會按照該檔案中的內容來確定訪問的範圍;如果該檔案不存在,所有的搜尋蜘蛛將能夠訪問網站上所有沒有被口令保護的頁面。

基本介紹

  • 外文名:robots.txt
  • 類型:文本文檔
  • 使用對象:搜尋引擎
  • 作用:確定蜘蛛搜尋範圍
robots簡介,使用誤區,使用技巧,robots.txt檔案的格式,robots.txt語法教程,robot.txt在SEO中的作用,非標準擴展協定,常見Robots名字,Robots META標籤的寫法,禁止抓取圖片,禁止快照,百度robots中的user-agent,

robots簡介

搜尋引擎通過一種程式robot(又稱spider),自動訪問網際網路上的網頁並獲取網頁信息。
您可以在您的網站中創建一個純文本檔案robots.txt,在這個檔案中聲明該網站中不想被robot訪問的部分,這樣,該網站的部分或全部內容就可以不被搜尋引擎收錄了,或者指定搜尋引擎只收錄指定的內容。
robots.txt(統一小寫)是一種存放於網站根目錄下的ASCII編碼的文本檔案,它通常告訴網路搜尋引擎的漫遊器(又稱網路蜘蛛),此網站中的哪些內容是不能被搜尋引擎的漫遊器獲取的,哪些是可以被(漫遊器)獲取的。 因為一些系統中的URL是大小寫敏感的,所以robots.txt的檔案名稱應統一為小寫。robots.txt應放置於網站的根目錄下。如果想單獨定義搜尋引擎的漫遊器訪問子目錄時的行為,那么可以將自定的設定合併到根目錄下的robots.txt,或者使用robots元數據。
Robots.txt協定並不是一個規範,而只是約定俗成的,所以並不能保證網站的隱私。注意Robots.txt是用字元串比較來確定是否獲取URL,所以目錄末尾有和沒有斜槓“/”這兩種表示是不同的URL,也不能用"Disallow: *.gif"這樣的通配符。
其他的影響搜尋引擎的行為的方法包括使用robots元數據:
<meta name="robots" content="noindex,nofollow" />
這個協定也不是一個規範,而只是約定俗成的,通常搜尋引擎會識別這個元數據,不索引這個頁面,以及這個頁面的鏈出頁面
robots.txt檔案放在哪裡?
robots.txt檔案應該放在網站根目錄下。舉例來說,當robots訪問一個網站時,首先會檢查該網站中是否存在這個檔案,如果機器人找到這個檔案,它就會根據這個檔案的內容,來確定它訪問許可權的範圍。

使用誤區

誤區一:我的網站上的所有檔案都需要蜘蛛抓取,那我就沒必要在添加robots.txt檔案了。反正如果該檔案不存在,所有的搜尋蜘蛛將默認能夠訪問網站上所有沒有被口令保護的頁面。
每當用戶試圖訪問某個不存在的URL時,伺服器都會在日誌中記錄404錯誤(無法找到檔案)。每當搜尋蜘蛛來尋找並不存在的robots.txt檔案時,伺服器也將在日誌中記錄一條404錯誤,所以你應該做網站中添加一個robots.txt。
誤區二:在robots.txt檔案中設定所有的檔案都可以被搜尋蜘蛛抓取,這樣可以增加網站的收錄率。
網站中的程式腳本、樣式表等檔案即使被蜘蛛收錄,也不會增加網站的收錄率,還只會浪費伺服器資源。因此必須在robots.txt檔案里設定不要讓搜尋蜘蛛索引這些檔案。
具體哪些檔案需要排除, 在robots.txt使用技巧一文中有詳細介紹。
誤區三:搜尋蜘蛛抓取網頁太浪費伺服器資源,在robots.txt檔案設定所有的搜尋蜘蛛都不能抓取全部的網頁。
如果這樣的話,會導致整個網站不能被搜尋引擎收錄。

使用技巧

1. 每當用戶試圖訪問某個不存在的URL時,伺服器都會在日誌中記錄404錯誤(無法找到檔案)。每當搜尋蜘蛛來尋找並不存在的robots.txt檔案時,伺服器也將在日誌中記錄一條404錯誤,所以你應該在網站中添加一個robots.txt。
2. 網站管理員必須使蜘蛛程式遠離某些伺服器上的目錄——保證伺服器性能。比如:大多數網站伺服器都有程式儲存在“cgi-bin”目錄下,因此在robots.txt檔案中加入“Disallow: /cgi-bin”是個好主意,這樣能夠避免將所有程式檔案被蜘蛛索引,可以節省伺服器資源。一般網站中不需要蜘蛛抓取的檔案有:後台管理檔案、程式腳本、附屬檔案、資料庫檔案、編碼檔案、樣式表檔案、模板檔案、導航圖片和背景圖片等等。
下面是VeryCMS里的robots.txt檔案:
User-agent: *
Disallow: /admin/ 後台管理檔案
Disallow: /require/ 程式檔案
Disallow: /attachment/ 附屬檔案
Disallow: /images/ 圖片
Disallow: /data/ 資料庫檔案
Disallow: /template/ 模板檔案
Disallow: /css/ 樣式表檔案
Disallow: /lang/ 編碼檔案
Disallow: /script/ 腳本檔案
3. 如果你的網站是動態網頁,並且你為這些動態網頁創建了靜態副本,以供搜尋蜘蛛更容易抓取。那么你需要在robots.txt檔案里設定避免動態網頁被蜘蛛索引,以保證這些網頁不會被視為含重複內容。
4. robots.txt檔案里還可以直接包括在sitemap檔案的連結。就像這樣:
Sitemap: http://www.***.com/sitemap.xml
目前對此表示支持的搜尋引擎公司有Google, Yahoo, Ask and MSN。而中文搜尋引擎公司,顯然不在這個圈子內。這樣做的好處就是,站長不用到每個搜尋引擎的站長工具或者相似的站長部分,去提交自己的sitemap檔案,搜尋引擎的蜘蛛自己就會抓取robots.txt檔案,讀取其中的sitemap路徑,接著抓取其中相連結的網頁。
5. 合理使用robots.txt檔案還能避免訪問時出錯。比如,不能讓搜尋者直接進入購物車頁面。因為沒有理由使購物車被收錄,所以你可以在robots.txt檔案里設定來阻止搜尋者直接進入購物車頁面。

robots.txt檔案的格式

"robots.txt"檔案包含一條或更多的記錄,這些記錄通過空行分開(以CR,CR/NL, or NL作為結束符),每一條記錄的格式如下所示:
"<field>:<optionalspace><value><optionalspace>"。
在該檔案中可以使用#進行註解,具體使用方法和UNIX中的慣例一樣。該檔案中的記錄通常以一行或多行User-agent開始,後面加上若干Disallow行,詳細情況如下:
User-agent:
該項的值用於描述搜尋引擎robot的名字,在"robots.txt"檔案中,如果有多條User-agent記錄說明有多個robot會受到該協定的限制,對該檔案來說,至少要有一條User-agent記錄。如果該項的值設為*,則該協定對任何機器人均有效,在"robots.txt"檔案中,"User-agent:*"這樣的記錄只能有一條。
Disallow:
該項的值用於描述不希望被訪問到的一個URL,這個URL可以是一條完整的路徑,也可以是部分的,任何以Disallow開頭的URL均不會被robot訪問到。例如"Disallow:/help"對/help.html 和/help/index.html都不允許搜尋引擎訪問,而"Disallow:/help/"則允許robot訪問/help.html,而不能訪問/help/index.html。任何一條Disallow記錄為空,說明該網站的所有部分都允許被訪問,在"/robots.txt"檔案中,至少要有一條Disallow記錄。如果"/robots.txt"是一個空檔案,則對於所有的搜尋引擎robot,該網站都是開放的。
Allow:
該項的值用於描述希望被訪問的一組URL,與Disallow項相似,這個值可以是一條完整的路徑,也可以是路徑的前綴,以Allow項的值開頭的URL是允許robot訪問的。例如"Allow:/hibaidu"允許robot訪問/hibaidu.htm、/hibaiducom.html、/hibaidu/com.html。一個網站的所有URL默認是Allow的,所以Allow通常與Disallow搭配使用,實現允許訪問一部分網頁同時禁止訪問其它所有URL的功能。
需要特別注意的是Disallow與Allow行的順序是有意義的,robot會根據第一個匹配成功的Allow或Disallow行確定是否訪問某個URL。
使用"*"和"$":
robots支持使用通配符"*"和"$"來模糊匹配url:
"$" 匹配行結束符。
"*" 匹配0或多個任意字元。

robots.txt語法教程

用幾個最常見的情況,直接舉例說明:
1. 允許所有SE收錄本站:robots.txt為空就可以,什麼都不要寫。
2. 禁止所有SE收錄網站的某些目錄:
User-agent: *
Disallow: /目錄名1/
Disallow: /目錄名2/
Disallow: /目錄名3/
3. 禁止某個SE收錄本站,例如禁止百度:
User-agent: Baiduspider
Disallow: /
4. 禁止所有SE收錄本站:
User-agent: *
Disallow: /
5. 加入sitemap.xml路徑,例如:

robot.txt在SEO中的作用

在進行網站最佳化的時候,經常會使用robots檔案把一些內容不想讓蜘蛛抓取,以前寫過一篇網站最佳化robots.txt檔案的運用 現在寫這篇文章在補充一點點知識!什麼是robots.txt檔案
搜尋引擎通過一種爬蟲spider程式(又稱搜尋蜘蛛、robot、搜尋機器人等),自動蒐集網際網路上的網頁並獲取相關信息。
鑒於網路安全與隱私的考慮,搜尋引擎遵循robots.txt協定。通過根目錄中創建的純文本檔案robots.txt,網站可以聲明不想被robots訪問的部分。每個網站都可以自主控制網站是否願意被搜尋引擎收錄,或者指定搜尋引擎只收錄指定的內容。當一個搜尋引擎的爬蟲訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果該檔案不存在,那么爬蟲就沿著連結抓取,如果存在,爬蟲就會按照該檔案中的內容來確定訪問的範圍。
robots.txt必須放置在一個站點的根目錄下,而且檔案名稱必須全部小寫。robots.txt檔案的格式
User-agent: 定義搜尋引擎的類型
Disallow: 定義禁止搜尋引擎收錄的地址
Allow: 定義允許搜尋引擎收錄的地址
我們常用的搜尋引擎類型有:
google蜘蛛:googlebot
百度蜘蛛:baiduspider
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver
msn蜘蛛:msnbot
altavista蜘蛛:scooter
lycos蜘蛛:lycos_spider_(t-rex)
alltheweb蜘蛛:fast-webcrawler
inktomi蜘蛛: slurprobots.txt檔案的寫法
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所有檔案
User-agent: * 這裡的*代表的所有的搜尋引擎種類,*是一個通配符
Allow: /cgi-bin/ 這裡定義是允許爬尋cgi-bin目錄下面的目錄
Allow: /tmp 這裡定義是允許爬尋tmp的整個目錄
Allow: .htm$ 僅允許訪問以".htm"為後綴的URL。
Allow: .gif$ 允許抓取網頁和gif格式圖片robots.txt檔案用法舉例
例1. 禁止所有搜尋引擎訪問網站的任何部分
User-agent: *
Disallow: /
實例分析:淘寶網的 Robots.txt檔案
User-agent: Baiduspider
Disallow: /
很顯然淘寶不允許百度的機器人訪問其網站下其所有的目錄。
例2. 允許所有的robot訪問 (或者也可以建一個空檔案 “/robots.txt” file)
User-agent: *
Disallow:
例3. 禁止某個搜尋引擎的訪問
User-agent: BadBot
Disallow: /
例4. 允許某個搜尋引擎的訪問
User-agent: baiduspider
Disallow: User-agent: *Disallow: /
例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
Disallow:/folder1/
Allow:/folder1/myfile.html
這些條目將攔截 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 Meta標籤
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的規則,而對於RobotsMETA標籤,目前支持的並不多,但是正在逐漸增加,如著名搜尋引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。

非標準擴展協定

Crawl-delay 指令:幾大抓取工具支持Crawl-delay參數,設定為多少秒,以等待同伺服器之間連續請求,如:
User-agent:
*Crawl-delay:10

常見Robots名字

名稱 搜尋引擎
google蜘蛛: googlebot
百度蜘蛛:baiduspider
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver
msn蜘蛛:msnbot
altavista蜘蛛:scooter
lycos蜘蛛: lycos_spider_(t-rex)
alltheweb蜘蛛: fast-webcrawler/
inktomi蜘蛛: slurp
一個線上寫robots.txt的工具。
最後需要注意,robots.txt檔案名稱必須是小寫,而且放在網站根目錄

Robots META標籤的寫法

Robots META標籤中沒有大小寫之分,name=”Robots”表示所有的搜尋引擎,可以針對某個具體搜尋引擎寫為name=”BaiduSpider”。 content部分有四個指令選項:index、noindex、follow、nofollow,指令間以“,”分隔。
INDEX 指令告訴搜尋機器人抓取該頁面;
FOLLOW 指令表示搜尋機器人可以沿著該頁面上的連結繼續抓取下去;
Robots Meta標籤的預設值是INDEX和FOLLOW,只有inktomi除外,對於它,預設值是INDEX,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”>
目前看來,絕大多數的搜尋引擎機器人都遵守robots.txt的規則,而對於Robots META標籤,目前支持的並不多,但是正在逐漸增加,如著名搜尋引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。例如:
<META NAME=”googlebot” CONTENT=”index,follow,noarchive”>
表示抓取該站點中頁面並沿著頁面中連結抓取,但是不在GOOLGE上保留該頁面的網頁快照。

禁止抓取圖片

User-agent: *
Disallow: .jpg$
jpg可以代替為gif,png 等等...

禁止快照

要防止所有搜尋引擎顯示您網站的快照,請將此元標記置入網頁的 <HEAD> 部分:
<meta name="robots" content="noarchive">
要允許其他搜尋引擎顯示快照,但僅防止搜尋引擎顯示,請使用以下標記:
<meta name="Baiduspider" content="noarchive">

百度robots中的user-agent

百度各個產品使用不同的user-agent:
無線搜尋
Baiduspider-mobile
圖片搜尋
Baiduspider-image
視頻搜尋
Baiduspider-video
新聞搜尋
Baiduspider-news
百度搜藏
Baiduspider-favo
百度聯盟
Baiduspider-cpro
商務搜尋
Baiduspider-ads
網頁以及其他搜尋
Baiduspider

相關詞條

熱門詞條

聯絡我們