蜘蛛池知识

蜘蛛池入口頁的 robots.txt:哪些規則该放開,哪些是誤伤

robots.txt 是蜘蛛池里最容易被忽略的文件之一。本文說明它對抓取和收錄的實际作用邊界,梳理 Disallow 范围過大、誤屏蔽 CSS/JS、文件本身返回異常這三類常见誤伤,並给出该放開哪些目錄、上线前後如何自查、改動时怎样留好回滚余地。

蜘蛛池知识

蜘蛛池入口頁的 robots.txt:哪些規則该放開,哪些是誤伤

入口頁是蜘蛛池里最容易被反复检查的部分,但 robots.txt 常常被忽略。很多入口頁抓取異常,並不是服務器慢或者連結不够,而是一行 Disallow 把蜘蛛挡在了门外。下面整理 robots.txt 在蜘蛛池场景下容易踩的坑,以及相對稳妥的寫法。

先明确 robots.txt 管不了什么

robots.txt 只是一份建议文件。主流搜尋引擎的蜘蛛會參考它,但不會因為寫了它就必然怎样:它不控制收錄,也不保證頁面被索引或被展示。反過来,寫了 Disallow 也不等于頁面绝對不會被抓到——外部連結指向的 URL 有时仍會被訪問(只是通常不會展示摘要)。把它当成可控的引導和限速工具,而不是開關。

還要分清一件事:蜘蛛池入口頁的目标通常是让蜘蛛顺利進来並沿着連結繼續走。任何减少可抓 URL 數量的配置,都要先想清楚是不是真的要這么做。

三類最常见的誤伤

1. Disallow 范围寫得太大

Disallow: / 是最粗暴也最容易誤伤的寫法。有些入口頁為了临时避免被采集而加上,结果忘了删,整站蜘蛛流量就断了。另一個高频問题是參數通配:Disallow: /*? 會把所有带查询參數的入口頁一起挡掉,而不少入口頁 URL 恰恰带參數。

2. 顺手屏蔽了静態资源

Disallow: /css/ 和 Disallow: /js/ 這類規則,在只想屏蔽图片热鏈的时候很常见。如果蜘蛛需要讀取样式和脚本才能判断頁面结构,這些規則會影响它對頁面的理解。對入口頁来说,把 CSS、JS 放開通常比屏蔽更合适。

3. robots.txt 本身返回異常

如果 robots.txt 返回 500 或超时,不同蜘蛛的處理策略不一样:有的會短暂暫停抓取,有的會按全部允许繼續。這種不确定性對蜘蛛池不友好。至少保證它稳定返回 200 和纯文本,不要让它走動態逻辑或依赖資料库。

频率相關指令:能寫,但別指望太多

crawl-delay 只有部分搜尋引擎支持,單位是秒,寫 10 就等于把抓取間隔拉長到 10 秒。對想扩大 URL 發現量的蜘蛛池来说,這個值通常不该設定,或者只设一個很小的值。真正控制抓取节奏的手段是服務器响應速度和日誌观察,而不是靠這一行。

Request-rate 之類寫法支持度更低,寫上去意义有限。

该放開的部分

  • 入口頁本身所在的目錄,不要用通配符一網打尽。
  • CSS、JS、字体等渲染所需资源。
  • sitemap 文件所在的路径。
  • 詳情頁、列表頁等希望被繼續爬取的連結目标。

如果确實有不想被抓的目錄,比如後台、測試环境、临时導出文件,單獨列出来,越具体越好,不要用宽泛的前缀。

上线前後的检查步骤

  1. 直接訪問 https://域名/robots.txt,確認狀態碼 200、Content-Type 為 text/plain。
  2. 逐行讀一遍 Disallow,把每條規則和實际目錄對一遍,删掉已经失效的临时規則。
  3. 用搜尋引擎官方的 robots.txt 測試工具跑一遍入口頁 URL,看结果是允许還是被屏蔽。
  4. 在日誌里观察几天,看主流蜘蛛的抓取量有没有突然下降,下降往往和最近的規則改動有關。
  5. 確認 sitemap 地址寫在 robots.txt 里,並且该地址返回正常。

几点使用建议

robots.txt 的改動影响面很大,改之前先备份舊版本,出問题能立刻回滚。另外不同搜尋引擎對同一份文件的解析细节有差异,尤其是通配符 * 和 $ 的處理,所以規則越简單越好,能用具体路径就別用通配符。

判断一條規則该不该加,先問一句:加上之後,我希望被發現的 URL 會不會變少?如果會,先想清楚理由再動手。

最後提醒一点,robots.txt 解决不了内容质量問题。它能做的是不挡路、不乱限速,剩下的還是要回到入口頁本身的结构、响應速度和内容上。