robots.txt是什麼
robots.txt 是一個用來告知爬蟲在網站上爬取時的規範,告知爬蟲,網站中哪些網址哪些部分的網站可以被爬取,而哪些不可以爬取。
基本上robots.txt必須放置在網站的根目錄下,例如https://jikensitu.com/robots.txt這樣子的路徑,且名稱不像是sitemap一樣可以隨意更改,若放在修改位置或名稱,則無法正確使用該功能。
robots.txt撰寫方法
robots.txt中有幾個要件可以填寫,常見的有「User-agent」「allow」「Disallow」「sitemap」「Crawl-delay」,以下將分別介紹功能。
robots.txt常見5個指令
「User-agent」:宣告後續的規則適用於哪一個爬蟲。我們可以利用這個宣告,分別指定不同的爬蟲,允許/不允許爬取特定了連結。
如果要宣告Google新聞爬蟲遵照某些規則時,則填寫範例->User-agent:Googlebot News
「allow」:宣告剛剛指定的爬蟲可以爬取那些連結,填寫時必須以”路徑”的方式填寫,
如果要告知爬蟲允許爬取特定連結時,則填寫範例->allow:/seo-knowledge
「Disallow」:宣告剛剛指定的爬蟲禁止爬取那些連結,填寫時必須以”路徑”的方式填寫,
如果要告知爬蟲禁止爬取特定連結時,則填寫範例->disallow:/seo-knowledge
「sitemap」:告知爬蟲網站的sitemap位置在哪裡。因部分網站的sitemap名稱不像大眾撰寫一樣,因此將sitemap網址放置在此處,可以有助爬蟲可以快速找到。
實際撰寫範例->sitemap:https://jikensitu.com/sitemap_index.xml
「Crawl-delay」:可以延遲爬蟲每次爬取頁面後需要暫停的時間。該功能對於伺服器沒辦法短時間乘載爬蟲大量爬取頁面時,可以有效減緩爬蟲爬取的數量,並降低伺服器的負擔
若要暫停3秒,實際撰寫範例->crawl-delay:3
robots.txt撰寫範例
User-agent: *
Disallow: /private
Disallow: /login
User-agent: googlebot-news
Disallow: *
allow:/news
allow:/promotion
crawl-delay:0.2
user-agent: Bingbot
Disallow:/*?query=
sitemap:https://test.com/sitemap_index.xml
sitemap:https://test.com/sitemap_news.xml
首先我們必須了解,robots.txt的規則是從上往下讀取,因此每項爬取規則會藉由”user-agent”分開,且會根據「規則運算式」規則讀取。
而從以上範例我們可以讀出幾項規則:
●所有的爬蟲都禁止爬取含有 /private及 /login 的連結
●”googlebot-news”爬蟲除了/news及/promotion連結,其他的連結都不可以爬取
●只有”googlebot-news”爬取頁面時必須延遲0.2秒
●該網站的sitemap在https://test.com/sitemap_index.xml及https://test.com/sitemap_news.xml
●”Bingbot”爬蟲禁止爬取帶有query參數的網址
常見搜爬蟲名稱及user-agent
需要建立爬蟲蟲規則時,必須先知道對方爬蟲的名稱是什麼,以下整理了幾個市面常見的搜尋引擎爬蟲及SEO軟體爬蟲名稱:
Google:https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers?hl=zh-tw
Bing:https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0
ahrefs:https://ahrefs.com/robot
SEMrush:https://www.semrush.com/bot/
openai:https://platform.openai.com/docs/gptbot
robots.txt使用場合
◆禁止爬取含有私人訊息頁面
雖然大多數含有私人訊息的頁面,如會員資料頁面等等,都會需要經過登入才能顯示,而爬蟲也幾乎沒有路徑可以抵達,但為了資料的隱密性,仍然許多電商平台會禁止爬蟲爬取登入頁面、購物車、會員資料等頁面。
◆減少參數造成的重複頁面
雖著網站的進步,許多功能以現在的搜尋引擎來看可能較為老舊,尤其網站在使用參數網址時,很有可能會因為建置設定的關係,導致網站產生大量重複頁面。在Goolge Search Console的收錄警告要處理嗎?完整解析8種常見回報與什麼是Canonical?運用標準網址解決重複分頁!提到了關於重複頁面所產生的問題及解決方法,但參數導致的重複頁面仍然會消耗網站的爬取預算。
因此利用robots.txt禁止爬蟲爬取特定參數的頁面,也成為了解決重複頁面的解決方式之一。但使用前需要詳盡確認該參數的功能,以免到時候禁止爬蟲爬取了重要的頁面,或是減少了內容連結的效益。
◆降低短時間內爬蟲爬取過量資料
某些網站曾遇過,明明使用者人數並明有特別多或是高峰期,但經常會發生伺服器超載的問題,這可能就是因為爬蟲短時間內爬取網站內太多資料,導致伺服器成載過量。
若可以在主機端查明是藉由哪些來源的爬蟲爬取,則可以利用disallow或crawl-delay等等的指令,限定爬蟲不會一次性爬取過量資料。
◆防止特定爬蟲爬取網站資料
曾也有客戶提出一個要求,他不希望她的資料會被ahrefs、SEMrush等SEO工具爬取資料,藉此避免其他競爭對手知道網站的狀況。而在過往也曾有人提出發想,為了避免自家資料被chatGPT使用,而想辦法讓openAI無法爬取它們網站的資料。
面對以上的狀況,可以就可以利用user-agent指定特定爬蟲後,並再用disallow規則,禁止該爬蟲爬取所有的網址。
但robots.txt的規則也僅限於”提醒”的作用,面對利用爬蟲盜用內容的網站,robots.txt則可能沒有太有效的作用,因此若要防止這類的爬蟲,則必須限制更多保護措施才可行。
檢驗robots.txt撰寫正確
撰寫robots.txt時必須要非常的小心,雖然它可以幫助我們完成上述的要求,但正也是因為他強大的功能,在SEO業界中也常遇到讓人哭笑不得的錯誤笑話。
(曾經有人過了整整一個月都沒有任何曝光,結果發現是因為robots.txt錯誤撰寫的關係,禁止整個網站被爬取)
為了避免這類問題,建議各位在正式上線前,先使用TechnicalSEO.com測試自己撰寫的規則是否正確。
如同上圖,將撰寫好的規則貼在上面後,填上URL及User Agent(爬蟲名稱)後按下測試,在右下方就可以知道爬蟲可不可以爬取你所填寫的URL。
看完了這麼多,我想你對robots.txt設置已經有了一定的了解,如果喜歡我的文章,或是未來想要了解更多關於SEO的消息,請關注我的網站,我會努力將各種知識分享給各位:)
Last Updated on 16 6 月, 2024 by 己見室