蜘蛛池知识

蜘蛛池入口頁的 robots 與 meta robots:哪些该放開,哪些该收紧

蜘蛛池入口頁常被忽略的一环是 robots 配置。本文讲清 robots.txt 與 meta robots 的作用范围差异,入口頁该放開什么、收紧什么,Crawl-delay、Sitemap 声明、X-Robots-Tag 等细节,以及上线前後的检查清單和几個常见誤区。

蜘蛛池知识

蜘蛛池入口頁的 robots 與 meta robots:哪些该放開,哪些该收紧

搭蜘蛛池时,很多人把精力放在域名、IP、模板上,却忽略了 robots.txt 和頁面里的 meta robots。這两样東西一個在站根,一個在頁面的 head 里,作用都是告诉蜘蛛“能抓什么、不能抓什么”。配错一處,前面铺的入口頁可能全都白做。

两者管的范围不一样

robots.txt 是站点級別的约定,蜘蛛進站前先取一次,决定要不要繼續爬某個目錄或某類 URL。meta robots 是頁面級別的指令,蜘蛛已经把頁面抓下来之後才會讀到,用来决定這個頁面要不要進索引、頁内連結要不要繼續跟。

简單说:robots.txt 管“来不来”,meta robots 管“抓到之後怎么處理”。两者不冲突,但生效顺序不同,也不能互相替代。

入口頁一般怎么配

蜘蛛池入口頁的作用是提供一個可被抓取的跳轉点,所以常規配置是“允许抓取 + 允许索引 + 允许跟随連結”:

  • robots.txt 里不要用 Disallow: / 把整站關掉,入口頁被挡在外面,後面就無從谈起。
  • 避免在入口頁加 noindex。入口頁本身不需要排名,但被索引過、被抓過的頁面,後續蜘蛛回訪的概率通常更高。
  • 頁内指向目标頁的連結不要加 nofollow,否則等于自己把通路掐断。
  • 如果入口頁同站還有後台、登入、測試目錄,單獨 Disallow 掉即可,不必一刀切。

几處容易被忽略的地方

Crawl-delay 與請求频率

部分蜘蛛支持 robots.txt 里的 Crawl-delay。设得過大,蜘蛛回訪一次要等很久,入口頁更新再勤也没意义;设得過小甚至不设,又可能给服務器带来压力。多數情况下,靠服務器日誌观察實际抓取频率,再在服務器层做限速,比只依赖 Crawl-delay 更可靠。

Sitemap 声明的位置

robots.txt 里寫 Sitemap 那一行,是给蜘蛛一個額外的發現入口,不是必须,但成本极低。注意寫完整 URL,且该 Sitemap 要能正常返回 200。

meta robots 與 X-Robots-Tag

除了頁面里的 meta 标簽,HTTP 响應头里的 X-Robots-Tag 也能起同類作用。如果两者同时存在且指令冲突,通常以更嚴格的那個為准。排查入口頁不被抓时,两邊都要看一眼。

屏蔽與放開的邊界

常见的两種极端:一種是把 robots.txt 寫成 Disallow: /,以為“先挡起来更安全”,结果是蜘蛛根本不進;另一種是完全不寫,站点里大量重复參數頁、搜尋结果頁被反复抓,白白消耗抓取预算。

判断标准其實很简單:你希望蜘蛛抓的路径,就別挡;你不希望它浪費時間的路径,就明确挡掉。含糊不清的配置,最後往往由蜘蛛来替你决定。

上线前後可以照着做的检查

  1. 訪問 /robots.txt,確認返回 200,且内容不是程序模板的預設值。
  2. 確認没有 Disallow: / 之類的全站屏蔽。
  3. 随机抽几個入口頁,看 head 里有没有誤加的 noindex、nofollow。
  4. 检查指向目标頁的連結是否可正常跟随,有没有被 JS 事件拦截。
  5. 上线几天後看日誌,確認蜘蛛确實讀到了 robots.txt 並繼續抓取。

几個常见誤区

  • 以為 robots.txt 能保密:它只是约定,不是訪問控制,敏感路径應该用權限或 IP 限制来處理。
  • 用 robots.txt 代替刪除:已被索引的 URL 即使被 Disallow,也可能仍留在索引里,需要配合 noindex 等方式處理。
  • 所有子域共用一份配置:robots.txt 按主机名生效,子域要單獨提供。

把這几處理顺,入口頁至少不會在第一步就被自己挡住。剩下的,才是模板、IP、更新节奏這些更细的活。