搭建蜘蛛池时,大家更關心域名、IP、入口頁數量,robots.txt 往往是最後才想起来的一步。但這個小文件决定了蜘蛛在入口頁能走多遠——寫错了,前面的投入很可能被限制在很小的范围里。
robots.txt 在蜘蛛池里到底管什么
robots.txt 是放在站点根目錄下的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些不建议抓。它本身不是訪問控制,抓不抓最终還是看爬虫自己的選擇:主流搜尋引擎會遵守,但並不是所有抓取行為都會買帳。
在蜘蛛池场景里,它主要影响两件事:一是蜘蛛進入入口頁後會不會顺着連結繼續往下走;二是抓取配額會不會被大量無意义路径消耗掉。
入口頁常用的几種放行策略
- 全站放行:Disallow 留空,适合入口頁本身就是連結集合、需要蜘蛛尽可能多遍歷的结构。
- 只放行必要目錄:把後台、站内搜尋结果頁、參數拼接頁挡掉,减少抓取浪費。
- 限制低價值動態路径:带大量參數的 URL 容易被判定為重复内容,可以在規則里做限制。
- 保留 Sitemap 声明:用一行 Sitemap 指向站点地图,方便蜘蛛發現入口頁。
meta robots 與 X-Robots-Tag 的区別
robots.txt 只能控制能不能抓,管不了抓了之後要不要收錄。如果入口頁本身不希望被收錄,又希望蜘蛛繼續沿着連結往下走,用 meta robots 的 noindex, follow 更合适。對于图片、PDF 這類没法寫 meta 标簽的资源,可以用 HTTP 响應头里的 X-Robots-Tag 達到類似效果。
要注意的是,noindex 必须让蜘蛛抓到頁面本身才會生效。如果 robots.txt 里已经把這條路径 Disallow 了,蜘蛛抓不到頁面,noindex 就永遠不會被看到。
几個容易踩的坑
- Disallow 寫得太宽,用斜杠或過短的前缀誤伤入口頁,蜘蛛進来後無路可走。
- 路径大小寫不一致。robots.txt 里的路径区分大小寫,入口頁用大寫而規則寫成小寫,等于没挡。
- 用 robots.txt 挡掉 CSS、JS 文件,導致蜘蛛看到的是残缺頁面,判断容易出現偏差。
- 多個域名共用一份 robots.txt 却没做区分,規則和實际目錄结构對不上。
- 文件返回異常狀態碼。robots.txt 不存在时蜘蛛通常按全站可抓處理,但如果返回 5xx,部分爬虫會暂缓抓取,反而影响效率。
落地时的几点建议
- 先在浏览器直接訪問 /robots.txt,確認返回正常且内容是你以為的那一份。
- 改動後观察抓取日誌,看被挡路径的訪問量是不是真的降下来了,別只改不看。
- 入口頁希望被爬但不希望被收錄时,優先用 noindex, follow,而不是直接 Disallow。
- 把 robots.txt 的變更和入口頁上线节奏對齐,避免新入口刚铺好就被舊規則挡住。
- 規則尽量寫得具体,少用大范围通配,方便以後排查問题。
robots.txt 不是用来堆抓取量的工具,它的價值在于把抓取引導到该去的地方。規則越清晰,日誌越好讀,問题也越容易定位。
最後提醒一句:robots.txt 只是抓取层的一道指示,不保證收錄,也不保證排名。把它当成基础设施的一部分,上线前检查一遍,比事後翻日誌划算得多。