蜘蛛池知识

蜘蛛池入口頁的 robots.txt:別把想請的蜘蛛挡在门外

robots.txt 是爬虫進入站点时最先讀的文件之一,寫错几個字符就可能把入口頁的抓取路径整段切断。本文梳理 User-agent 分组、Allow 與 Disallow 的匹配逻辑,列出全站屏蔽、通配符誤用、狀態碼異常等常见坑,並给出一份可直接照着走的检查清單。

蜘蛛池知识

蜘蛛池入口頁的 robots.txt:別把想請的蜘蛛挡在门外

robots.txt 是爬虫訪問一個站点时最先請求的文件之一。對蜘蛛池来说,入口頁本身就是為了让蜘蛛發現連結,如果這份文件寫错,等于在门口挂了一块“不欢迎”的牌子。它不复杂,但几個字符的差別就可能把想請的蜘蛛挡在外面,或者把不该放行的路径全部敞開。

蜘蛛先讀 robots.txt,再决定抓什么

主流搜尋引擎爬虫在抓取一個域名前,會先請求 /robots.txt。文件里按 User-agent 分组,每组下面寫 Allow 和 Disallow 規則。同一個 UA 有多條規則匹配同一路径时,一般按“最長匹配優先”判断,長度相同时 Allow 優先。不寫 User-agent 或者用 *,表示對所有爬虫生效。

需要注意,robots.txt 只是一種约定,不是訪問控制。它挡不住恶意采集,也不决定頁面是否被索引——想让頁面彻底不出現,還得配合 noindex 或狀態碼處理。

三種常见寫法與它們的後果

全站 Disallow

測試环境遗留的 Disallow: / 被带到正式入口頁上,是最常见的低級错誤。蜘蛛仍然可能訪問首頁拿到文件,但讀到規則後就不再深入抓連結,入口頁里的外鏈自然拿不到發現机會。

屏蔽參數與後台路径

入口頁如果带篩選參數、分頁參數,或者站内有搜尋、登入、後台這類路径,用 Disallow 把它們排除掉是合理的。這样可以把有限的抓取配額留给真正想被發現的頁面。

声明 Sitemap

在文件末尾寫上 Sitemap: 並给出完整 URL,相当于给蜘蛛多一條發現路径。它不是必须的,但對收錄慢的站点算是一個低成本的补充。

几個容易踩的坑

  • 通配符用反了:* 匹配任意字符,$ 表示结尾。寫 Disallow: /*? 想屏蔽參數,结果可能把带問号的正常頁面一起挡住。
  • 忘记 Allow 兜底:寫了一大段 Disallow 又想在中間放行某個目錄,必须顯式寫 Allow,否則不會自動開放。
  • 路径寫错层級:robots.txt 只對同級及以下目錄生效,放在子目錄里對整站無效。
  • 返回狀態異常:返回 404 通常被视為無限制;返回 5xx 时蜘蛛一般會暫停抓取,反复 5xx 可能压低抓取频率。
  • UA 名字寫错:不同爬虫的 UA 标识不同,名字寫错規則不會生效,需要按爬虫分別設定。
  • 把它当收錄開關:屏蔽抓取不等于刪除已收錄頁面,這两件事经常被混為一谈。

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

  1. 直接在浏览器訪問 /robots.txt,確認返回 200 且内容是最新版,不是舊缓存或 CDN 上的舊文件。
  2. 通讀一遍,找出有没有 Disallow: / 這類全站屏蔽的残留。
  3. 確認想被發現的目錄、入口頁所在路径没有被誤挡。
  4. 確認參數頁、後台、搜尋结果頁等低價值路径已被排除。
  5. 检查通配符和结尾符号是否符合本意。
  6. 如果啟用了 Sitemap 声明,確認地址可訪問、内容可解析。
  7. 改動後观察一段時間日誌,看蜘蛛請求量和抓取路径是否按预期變化。

別把它当成收錄開關

robots.txt 影响的是“能不能抓”,而抓取只是收錄鏈條里的一环。抓到了不代表一定收錄,收錄了也不代表有排名。把入口頁的連結结构、内容质量和更新节奏一起處理好,比反复修改 robots.txt 更實际。改完记得留一份版本记錄,出問题时能快速回滚。

提醒:任何規則調整後都建议先小范围驗證,再全站應用,避免一次改動把入口頁的抓取路径全部切断。