Crawl-delay
Crawl-delay 是 robots.txt 中用來控制爬蟲抓取頻率的指令。了解哪些搜尋引擎支援 crawl-delay、如何正確設定、以及 Google 不支援時的替代方案。
定義
Crawl-delay 是 robots.txt 中的一個非標準指令,用來建議搜尋引擎爬蟲在連續請求之間等待指定的秒數,以降低對伺服器的負載。語法為「Crawl-delay: N」,其中 N 是秒數。重要須知:Googlebot 完全不支援此指令!Bing、Yandex、Yahoo(部分)等爬蟲支援。對於 Google,你需要使用 Search Console 的抓取速率設定,或透過改善伺服器效能讓 Google 自動調整。使用 crawl-delay 時要謹慎,過長的延遲可能嚴重影響網站的索引速度。
為什麼重要
- 降低非 Google 爬蟲(Bing、Yandex)對伺服器的抓取壓力
- 保護小型或共享主機伺服器免於爬蟲流量過載
- 在伺服器資源有限時,確保真實使用者體驗優先
- 防止激進的爬蟲消耗過多頻寬和 CPU 資源
- 為資料庫密集型頁面提供緩衝時間
- 在流量高峰期暫時減緩爬蟲抓取
- 配合 WAF/Rate Limiting 建立完整的爬蟲管理策略
怎麼做(實作重點)
- 先確認目標爬蟲是否支援:Googlebot 不支援、Bingbot 支援、Yandex 支援
- 在 robots.txt 中針對特定 User-agent 設定:User-agent: Bingbot \n Crawl-delay: 10
- 數值建議:1-10 秒較合理,超過 30 秒可能嚴重影響索引
- 對 Google:改用 Search Console > 設定 > 抓取速率,或升級伺服器
- 監控伺服器日誌觀察爬蟲行為是否改變
- 配合快取策略(CDN、頁面快取)減少伺服器負載
- 不要對所有 User-agent 設定 crawl-delay,只針對有問題的爬蟲
範例
text
# robots.txt 範例:針對不同爬蟲設定不同延遲
# Googlebot 不支援 crawl-delay,不需要設定
User-agent: Googlebot
Allow: /
# Bingbot 支援 crawl-delay
User-agent: Bingbot
Crawl-delay: 5
Allow: /
# Yandex 支援 crawl-delay
User-agent: Yandex
Crawl-delay: 10
Allow: /
# 其他爬蟲的預設設定
User-agent: *
Crawl-delay: 2
Allow: /
Sitemap: https://example.com/sitemap.xmltext
# 錯誤示範:不要這樣做!
# ❌ 錯誤 1:對 Googlebot 設定(無效)
User-agent: Googlebot
Crawl-delay: 30
# ❌ 錯誤 2:延遲過長(嚴重影響索引)
User-agent: *
Crawl-delay: 60
# ❌ 錯誤 3:用 crawl-delay 取代正確的 Disallow
# 如果某路徑不想被抓,應該用 Disallow 而非延遲相關連結
常見問題
關於這個詞彙的常見問答。