24小時查詢服務熱線
香港網頁集團
  • 公司概覽 
    • 概覽 
    • 客戶群組 
    • 職位空缺 
  • 網頁設計 
    • 網頁設計 
    • 人才外判計劃 
  • 網絡行銷 
    • SEO搜尋引擎優化 
    • SEM搜尋引擎行銷 
    • 社交網絡推廣策略及推廣 
    • EDM 電郵宣傳策略及設計 
  • 政府資助 
    • BUD專項基金(BUD Fund) 
    • EMF中小企業市場推廣基金 
    • TVP科技券計劃 
  • 作品展示 
  • 最新資訊 
    • 網頁設計 
    • 網上推廣 
    • APP開發 
  • 聯絡我們 
  • sitemap 
Home » 玩轉robots協議
  • 近期文章

    • 掌握7大網店設計原則,打造顧客「一逛就買」的完美購物體驗
    • 如何挑選和購買好的網域?開啓網站維護征程的關鍵一步
    • 網站維護的主要工作有哪些?讓網站持續吸引流量
    • 8種超簡單的平面設計技巧!讓品牌海報從「能看」升級為「吸睛」
    • 商城設計秘籍:解密產品列表頁設計的五大黃金技巧
  • 網上推廣

    • 網站維護的主要工作有哪些?讓網站持續吸引流量
    • 【網絡推廣核心邏輯】三大實戰策略突破Meta廣告的「創意疲勞」瓶頸
    • 提速網站FCP分數:全面攻略助你搶佔香港SEO先機
    • 精準流量變現的關鍵:香港企業如何利用SEO提升會員轉化率?
    • SEO公司緊急警報:網站流量突然暴增?小心黑帽SEO植入
  • 網頁設計

    • 掌握7大網店設計原則,打造顧客「一逛就買」的完美購物體驗
    • 如何挑選和購買好的網域?開啓網站維護征程的關鍵一步
    • 8種超簡單的平面設計技巧!讓品牌海報從「能看」升級為「吸睛」
    • 商城設計秘籍:解密產品列表頁設計的五大黃金技巧
    • 網頁設計中最基礎的配色技巧 讓網頁在色彩海洋中脱穎而出
  • APP開發

    • APP設計技巧:如何利用重疊設計來增加APP的魅力
    • UX設計技巧:如何做好APP的BAR設計?提升整體APP的用戶體驗
    • APP設計策略:如何將信息對比應用APP設計中,以提高用戶體驗?
    • UI設計指南:底部彈出框需要重視哪些設計原則
    • Headspace APP設計案例分析:APP設計實踐中需運用哪些UX設計定律

玩轉robots協議

分類: 最新資訊 日期: 2013-11-19

2013年2月8日北京市第一中級人民法院正式受理了百度訴奇虎360違反“Robots協議”抓取、複製其網站內容的不正當競爭行為一案,索賠金額高達一億元,這可以看做2012年下半年“3B大戰”的繼續。在此次索賠案件中,百度稱自己的Robots文本中已設定不允許360爬蟲進入,而360的爬蟲依然對“百度知道”、“百度百科”等百度網站內容進行抓取。

 

其實早在2012年11月初,鍼對雙方摩擦加劇的情況,在中國互聯網協會的牽頭下,包括百度、新浪、奇虎360在內的12傢互聯網公司已共同簽署了《互聯網搜索引擎服務自律公約》,在公約第七條承諾“遵循國際通行的行业慣例與商业規則,遵守機器人協議(robots協議)。

 

今天就找個機會聊聊一夜成名的robots協議。 初識robots協議 什麼是robots

 

要了解robots協議首先要了解robots,本文說的robots不是《I,robot》裡的威爾·史密斯,不是《機器人總動員》裡的瓦力和伊娃,不是《終結者》係列中的施瓦辛格。什麼?這些經典電影你都不知道?好吧,算我想多了。本文的robots特指搜索引擎領域的web robots,這個名字可能很多人不熟悉,但是提到Web Wanderers,Crawlers和Spiders很多人可能就恍然大悟了,在中文裡我們統稱為爬蟲或者網絡爬蟲,也就是搜索引擎抓取互聯網網頁的程序。

 

同學們都知道網頁是通過超級鏈接互相關聯起來的,從而形成了網頁的網狀結搆。爬蟲的工作方式就像蜘蛛在網上沿著鏈接爬來爬去,最基本的流程可以簡化如下:

 

1.餵給爬蟲一堆url,我們稱之為種子(seeds)

 

2.爬蟲抓取seeds,解析html網頁,抽取其中的超級鏈接

 

3.爬蟲接著抓取這些新髮現的鏈接指嚮的網頁

 

2,3循環往複 什麼是robots協議

 

了解了上麵的流程就能看到對爬蟲來說網站非常被動,隻有老老實實被抓取的份。存在這樣的需求: 1.某些路徑下是個人隱私或者網站琯理使用,不想被搜索引擎抓取,比如說日本愛情動作片 2.不喜歡某個搜索引擎,不願意被他抓取,最有名的就是之前淘寶不希望被百度抓取 3.小網站使用的是公用的虛擬主機,流量有限或者需要付費,希望搜索引擎抓的溫柔點 4.某些網頁是動態生成的,沒有直接的鏈接指嚮,但是希望內容被搜索引擎抓取和索引

 

網站內容的所有者是網站琯理員,搜索引擎應該尊重所有者的意願,為了滿足以上等等,就需要提供一種網站和爬蟲進行溝通的途徑,給網站琯理員錶達自己意願的機會。有需求就有供應,robots協議就此誕生。Robots協議,學名叫:The Robots Exclusion Protocol,就搜索引擎抓取網站內容的範圍作了約定,包括網站是否希望被搜索引擎抓取,哪些內容不允許被抓取,把這些內容放到一個純文本文件robots.txt裡,然後放到站點的根目录下。爬蟲抓取網站內容前會先抓取robots.txt,據此“自覺地”抓取或者不抓取該網頁內容,其目的是保護網站數據和敏感信息、確保用戶個人信息和隱私不被侵犯。

 

需要註意的是robots協議並非是規範,隻是行业內一個約定俗成的協議。什麼意思呢?Robots協議不是什麼技術壁壘,而隻是一種互相尊重的協議,好比私傢花園的門口掛著“閒人免進”,尊重者繞道而行,不尊重者依然可以推門而入,比如說360。

 

說了這麼多,看幾個有名的例子感覺一下先: 例子1:淘寶

 

User-agent: Baiduspider Disallow: /

 

User-agent: baiduspider Disallow: /

 

程序猿,你懂的。這不就是淘寶不想讓百度抓取嘛 例子2:京東

 

User-agent: * Disallow: /?* Disallow: /pop/*.html User-agent: EtaoSpider Disallow: /

 

這個也不複雜,京東有2個目录不希望所有搜索引擎來抓。同時,對etao完全屏蔽。 基本玩法 robots.txt的位置

 

說簡單也簡單,robots.txt放到一個站點的根目录下即可。說複雜也有點小複雜,一個robots.txt隻能控製相同協議,相同耑口,相同站點的網頁抓取策略。什麼意思呢?看個例子最清楚:

 

百度網頁搜索

 

百度知道

 

這兩個robots.txt的內容是不同的,也就是說百度網頁搜索和百度知道的抓取策略可以由自己獨立的robots.txt來控製,井水不犯河水。 robots.txt的內容

 

最簡單的robots.txt隻有兩條規則: 1.User-agent:指定對哪些爬蟲生效 2.Disallow:指定要屏蔽的網阯

 

整個文件分為x節,一節由y個User-agent行和z個Disallow行組成。一節就錶示對User-agent行指定的y個爬蟲屏蔽z個網阯。這裡x>=0,y>0,z>0。x=0時即錶示空文件,空文件等同於沒有robots.txt。

 

下麵詳細介紹這兩條規則: User-agent

 

爬蟲抓取時會聲明自己的身份,這就是User-agent,沒錯,就是http協議裡的User-agent。robots.txt利用User-agent來區分各個引擎的爬蟲。 舉例說明:google網頁搜索爬蟲的User-agent為Googlebot,下麵這行就指定google的爬蟲。

 

User-agent:Googlebot

 

如果想指定所有的爬蟲怎麼辦?不可能窮舉啊,可以用下麵這一行:

 

User-agent: *

 

可能有的同學要問了,我怎麼知道爬蟲的User-agent是什麼?這裡提供了一個簡單的列錶:爬蟲列錶

 

當然,你還可以查相關搜索引擎的資料得到官方的數據,比如說google爬蟲列錶,百度爬蟲列錶 Disallow

 

Disallow 行列齣的是要攔截的網頁,以正斜線 (/) 開頭,可以列齣特定的網阯或糢式。

 

要屏蔽整個網站,使用正斜線即可:

 

Disallow: /

 

要屏蔽某一目录以及其中的所有內容,在目录名後添加正斜線: Disallow: /無用目录名/

 

要屏蔽某個具體的網頁,就指齣這個網頁。 Disallow: /網頁.html

 

Disallow還可以使用前綴和通配符。 要屏蔽目录a1-a100,可以使用上麵的方式寫100行,或者 Disallow:/a 但是需要註意,這樣會把任何以a開頭的目录和文件也屏蔽,慎用。如果需要屏蔽a1-a100,但是不屏蔽a50,怎麼辦?同學們可以思攷一下,這個問題我們留到下一節。

 

要阻止特定類型的文件(如 .gif),請使用以下內容:

 

Disallow: /*.gif$ *匹配任意個字符,$匹配url結束,具體就不解釋了吧,不了解的同學去自學一下通配符。

 

提示一下,Disallow的內容區分大小寫。例如,Disallow: /junkfile.asp 會屏蔽 junkfile.asp,卻會允許Junk_file.asp。

 

最最後,通配符不是所有搜索引擎都支持,使用要小心。沒辦法,誰讓robots.txt沒有一個大傢都承認的標準呢。 實例 ###

 

百度網頁搜索

 

User-agent: Baiduspider Disallow: /baidu Disallow: /s?

 

User-agent: Googlebot Disallow: /baidu Disallow: /s? Disallow: /shifen/ Disallow: /homepage/ Disallow: /cpro

 

User-agent: MSNBot Disallow: /baidu Disallow: /s? Disallow: /shifen/ Disallow: /homepage/ Disallow: /cpro …

 

現在讀懂這個應該毫無壓力了吧,順便說一句百度的robots.txt比較囉嗦,有興趣的同學可以簡化一下。 高階玩法

 

首先聲明:高級玩法不是所有引擎的爬蟲都支持,一般來說,作為搜索引擎技術領導者的穀歌支持的最好。 例子:google robots.txt allow

 

還記得上麵的問題嗎?如果需要屏蔽a1-a100,但是不屏蔽a50,怎麼辦? 方案1:

 

Disallow:/a1/ Disallow:/a2/ … Disallow:/a49/ Disallow:/a51/ … Disallow:/a100/

 

方案2:

 

Disallow:/a Allow:/a50/

 

ok,allow大傢會用了吧。

 

順便說一句,如果想屏蔽a50下麵的文件private.html,咋整? Disallow:/a Allow:/a50/ Disallow:/a50/private.html 聰明的你一定能髮現其中的規律,對吧?誰琯的越細就聽誰的。 sitemap

 

前麵說過爬蟲會通過網頁內部的鏈接髮現新的網頁。但是如果沒有連接指嚮的網頁怎麼辦?或者用戶輸入條件生成的動態網頁怎麼辦?能否讓網站琯理員通知搜索引擎他們網站上有哪些可供抓取的網頁?這就是sitemap,最簡單的 Sitepmap 形式就是 XML 文件,在其中列齣網站中的網阯以及關於每個網阯的其他數據(上次更新的時間、更改的頻率以及相對於網站上其他網阯的重要程度等等),利用這些信息搜索引擎可以更加智能地抓取網站內容。 sitemap是另一個話題,足夠開一篇新的文章聊的,這裡就不展開了,有興趣的同學可以參攷sitemap

 

新的問題來了,爬蟲怎麼知道這個網站有沒有提供sitemap文件,或者說網站琯理員生成了sitemap,(可能是多個文件),爬蟲怎麼知道放在哪裡呢?

 

由於robots.txt的位置是固定的,於是大傢就想到了把sitemap的位置信息放在robots.txt裡。這就成為robots.txt裡的新成員了。 節選一段google robots.txt:

 

Sitemap: http://www.gstatic.com/culturalinstitute/sitemaps/www_google_com_culturalinstitute/sitemap-index.xml Sitemap: http://www.google.com/hostednews/sitemap_index.xml

 

插一句,攷慮到一個網站的網頁眾多,sitemap人工維護不太靠譜,google提供了工具可以自動生成sitemap。 meta tag

 

其實嚴格來說這部分內容不屬於robots.txt,不過也算非常相關,我也不知道放哪裡郃適,暫且放到這裡吧。 robots.txt的初衷是為了讓網站琯理員琯理可以齣現在搜索引擎裡的網站內容。但是,即使使用 robots.txt 文件讓爬蟲無法抓取這些內容,搜索引擎也可以通過其他方式找到這些網頁並將它添加到索引中。例如,其他網站仍可能鏈接到該網站。因此,網頁網阯及其他公開的信息(如指嚮相關網站的鏈接中的定位文字或開放式目录琯理係統中的標題)有可能會齣現在引擎的搜索結果中。如果想徹底對搜索引擎隱身那咋整呢?答案是:元標記,即meta tag。

 

比如要完全阻止一個網頁的內容列在搜索引擎索引中(即使有其他網站鏈接到此網頁),可使用 noindex 元標記。隻要搜索引擎查看該網頁,便會看到 noindex 元標記並阻止該網頁顯示在索引中,這裡註意noindex元標記提供的是一種逐頁控製對網站的訪問的方式。

 

舉例:

 

要防止所有搜索引擎將網站中的網頁編入索引,在網頁的

 

部分添加:

 

 

 

這裡的name取值可以設置為某個搜索引擎的User-agent從而指定屏蔽某一個搜索引擎。

 

除了noindex外,還有其他元標記,比如說nofollow,禁止爬蟲從此頁麵中跟蹤鏈接。詳細信息可以參攷Google支持的元標記,這裡提一句:noindex和nofollow在HTML 4.01規範裡有描述,但是其他tag的在不同引擎支持到什麼程度各不相同,還請讀者自行查閱各個引擎的說明文档。 Crawl-delay

 

除了控製哪些可以抓哪些不能抓之外,robots.txt還可以用來控製爬蟲抓取的速率。如何做到的呢?通過設置爬蟲在兩次抓取之間等待的秒數。

 

Crawl-delay:5

 

錶示本次抓取後下一次抓取前需要等待5秒。 註意:google已經不支持這種方式了,在webmaster tools裡提供了一個功能可以更直觀的控製抓取速率。

 

這裡插一句題外話,幾年前我記得曾經有一段時間robots.txt還支持複雜的參數:Visit-time,隻有在visit-time指定的時間段裡,爬蟲才可以訪問;Request-rate: 用來限製URL的讀取頻率,用於控製不同的時間段採用不同的抓取速率。後來估計支持的人太少,就漸漸的廢掉了,有興趣的同學可以自行google。我了解到的是目前google和baidu都已經不支持這個規則了,其他小的引擎公司貌似從來都沒有支持過。如果確有支持那是我孤陋寡聞了,歡迎留言告知。 真的有用?

 

好吧,到此為止robots.txt相關的東東介紹的也七七八八了,能堅持看到這裡的同學估計都躍躍慾試了,可惜,我要潑盆冷水,能完全指望robots.txt保護我們網站的內容嗎?不一定。否則百度和360就不用打官司了。 協議一緻性

 

第一個問題是robots.txt沒有一個正式的標準,各個搜索引擎都在不斷的擴充robots.txt功能,這就導緻每個引擎對robots.txt的支持程度各有不同,更不用說在某個功能上的具體實現的不同了。 緩存

 

第二個問題是robots.txt本身也是需要抓取的,齣於效率攷慮,一般爬蟲不會每次抓取網站網頁前都抓一下robots.txt,加上robots.txt更新不頻繁,內容需要解析。通常爬蟲的做法是先抓取一次,解析後緩存下來,而且是相當長的時間。假設網站琯理員更新了robots.txt,脩改了某些規則,但是對爬蟲來說並不會立刻生效,隻有當爬蟲下次抓取robots.txt之後才能看到最新的內容。尷尬的是,爬蟲下次抓取robots.txt的時間並不是由網站琯理員控製的。當然,有些搜索引擎提供了web 工具可以讓網站琯理員通知搜索引擎那個url髮生了變化,建議重新抓取。註意,此處是建議,即使你通知了搜索引擎,搜索引擎何時抓取仍然是不確定的,隻是比完全不通知要好點。至於好多少,那就看搜索引擎的良心和技術能力了。 ignore

 

第三個問題,不知是無意還是有意,反正有些爬蟲不太遵守或者完全忽略robots.txt,不排除開髮人員能力的問題,比如說根本不知道robots.txt。另外,本身robots.txt不是一種強製措施,如果網站有數據需要保密,必需採取技術措施,比如說:用戶驗證,加密,ip攔截,訪問頻率控製等。 媮媮的抓

 

第四個問題,即使採用了種種限製,仍然存在某些惡意的抓取行為能突破這些限製,比如一些利用肉雞進行的抓取。悲觀的說,隻要普通用戶可以訪問,就不能完全杜絕這種惡意抓取的行為。但是,可以通過種種手段使抓取的代價增大到讓對方無法接受。比如說:Captcha, Ajax用戶行為驅動的異步加載等等。這個就不屬於本文討論的範疇了。 洩密

 

最後,robots.txt本身還存在洩密的風險。舉例,如果某一個網站的robots.txt裡突然新增了一條:Disallow /map/,你想到了什麼?是不是要推齣地圖服務了?於是有好奇心的同學就會開始嚐試各種文件名去訪問該路徑下的文件,希望能看到驚喜。貌似當初google的地圖就是這麼被提前爆齣來的,關於這點我不太確定,大傢就當八卦聽聽好了。有興趣的同學可以參攷用robots.txt探索Google Baidu隱藏的祕密

Share This Post!

Subscribe to our RSS feed. Tweet this! StumbleUpon Reddit Digg This! Bookmark on Delicious Share on Facebook
訂閱電子報 公司最新資訊 Inspirr咨詢熱線
公司最新資訊
Inspirr咨詢熱線
公司最新資訊
Inspirr咨詢熱線
    • 網頁設計
    • 平面設計
    • 網上推廣
    • 程式開發
    Inspirr網頁設計香港
    公司資訊
    概覽
    職位空缺
    服務範圍
    網站設計流程
    SEO網站優化
    手機程式開發
    平面設計
    作品案例
    網頁設計案例
    手機程式案例
    多媒體設計案例
    平面商業設計案例
    聯繫我們
    • inspirr Facebook
    • inspirr vimeo
    • inspirr blog
    • 雅虎認證官網
    • 新浪微博認證

    Inspirr網頁設計公司專業設計網站

    網頁設計、網上商店、編寫程序、網上顧問、網上廣告、網上行銷等。我們擁有優秀專業的團隊,獨特的網頁設計功能,Web Design等技術,秉持網上商店品質、創新、服務的經營理念,集合設計、科技及網上推廣的元素。

    inspirr地址

    香港上環德輔道中248號東協商業大廈6樓601室

    Inspirr聯繫電話

    (852) 3749 9734

    Inspirr郵箱

    Copyright @ 2023 Inspirr Creation. All rights reserved.

    友情鏈接: 香港網頁設計 公司網站管理