蜘蛛池知识

蜘蛛池的 robots.txt 與 meta robots:哪些寫法會把蜘蛛挡在门外

robots.txt 和 meta robots 是蜘蛛池里最容易被忽略的两處配置。本文梳理全站屏蔽、Crawl-delay 過大、通配符誤伤、noindex 残留在模板等常见問题,並给出一份可逐條核對的检查清單,帮助排查蜘蛛抓不到入口頁的原因。

蜘蛛池知识

蜘蛛池的 robots.txt 與 meta robots:哪些寫法會把蜘蛛挡在门外

搭蜘蛛池的时候,大多數人把精力放在入口頁數量、IP 分布、連結深度上,却很少回头看一眼 robots.txt。這個文件只有几十個字节,位置固定在站点根目錄,一旦寫错,前面做的铺垫可能全部作废——蜘蛛连门都進不来,後面的事就無從谈起。

先理清 robots.txt 能做什么

robots.txt 是给爬虫看的排除規則,不是收錄開關,也不是權重信号。它只能表達“哪些路径不希望被爬”,既不能强制蜘蛛来抓,也不能让蜘蛛更频繁地来。把它当成投放工具,是最常见的誤解。

蜘蛛池入口頁的基本诉求是能被發現、能被抓取,所以這里的原則通常是尽量少限制,而不是层层设卡。

六類容易踩的配置問题

1. 全站 Disallow

測試环境随手寫下 Disallow: /,上线後忘了删,是最高频的事故。蜘蛛請求一次就會离開,而且短時間内不會再来確認。排查时先直接訪問 /robots.txt,看是否返回 200 且带有屏蔽規則。

2. Crawl-delay 數值過大

Crawl-delay 只是给爬虫的建议值,但部分爬虫會遵守。设成 10 甚至 60,等于告诉蜘蛛“慢点来”。在入口頁數量多、抓取窗口有限的情况下,能被抓到的頁面會明顯减少。服務器没有压力时,這個字段通常可以直接删掉。

3. 通配符與路径寫法出错

Disallow: /tmp 會连 /templates、/tmp-page 一起挡掉;Disallow: /*? 在不同爬虫的實現里匹配范围也可能比预期大。寫得越宽,誤伤越多。改完後要用搜尋引擎提供的 robots 測試工具,或者本地模拟抓取,確認實际匹配结果。

4. Sitemap 地址寫错或漏寫

Sitemap 行本身不决定抓取,但它是發現入口頁的一條低成本路径。地址寫错、协议不對、sitemap 本身返回 404,都會让這條路径失效。寫完顺手点開驗證一次,花不了多少時間。

5. meta robots 遗留在模板里

比 robots.txt 更隐蔽的是頁面里的 meta robots,以及 HTTP 响應头里的 X-Robots-Tag。模板從別處拷来时带着 noindex, nofollow,或者 CDN、反向代理层加了统一的响應头,頁面肉眼看得见,蜘蛛却把它排除。這两個地方都要查,不能只看 HTML 源碼。

6. 跳轉鏈路上出現 noindex

入口頁做 301 跳到目标頁,如果目标頁带着 noindex,蜘蛛跟過去等于白跑一趟。跳轉鏈上的每一跳,都值得检查响應头和頁面头部。

一份可以照着走的自查清單

  • 直接訪問根目錄 /robots.txt,確認狀態碼是 200,不是 404 或 403;
  • 通讀規則,確認没有 Disallow: / 這類全站屏蔽;
  • 逐個核對 Disallow 路径,避免前缀誤伤;
  • 检查 Crawl-delay,没有明确需要就刪除;
  • 確認 Sitemap 地址可訪問且内容有效;
  • 随机抽几個入口頁,查看源代碼里的 meta robots;
  • 用 curl -I 或抓包工具看响應头里有没有 X-Robots-Tag;
  • 翻訪問日誌,看蜘蛛是否請求過 /robots.txt,以及返回碼是什么。

發現問题後怎么改

修改不要一次性全動。先解决明确报错的項,比如全站屏蔽、sitemap 404;再處理影响范围不好判断的項,比如通配符和 Crawl-delay。每改一次,隔几天看日誌里蜘蛛對入口頁的請求量有没有變化,再决定下一步。

robots.txt 只能“少挡”,不能“多引”。真正影响蜘蛛是否来訪的,還是入口頁本身的可訪問性、内容质量和外鏈线索。

最後提醒一句:不同搜尋引擎對 robots.txt 的解析细节並不完全一致,對通配符和 Crawl-delay 的支持程度也有差別。規則寫得简單直接,往往比寫得精巧更不容易出問题。