蜘蛛进入一个站点时,通常会先请求 robots.txt,再根据规则决定哪些路径可以抓。它看起来只是一份屏蔽清单,实际也影响蜘蛛把抓取时间花在哪里。规则写得太粗,可能把列表页、详情页、静态资源甚至 sitemap 挡在门外,URL 发现路径随之变窄。
放行与拦截:常见规则的实际效果
先确认默认放行
多数站点不需要全站禁止。如果只想挡后台、搜索结果、购物车等,可以用 Disallow 指定路径,其余保持可抓。全站 Disallow 会让蜘蛛只能看到 robots.txt 本身,后续的 URL 发现和抓取基本停止。
别误伤抓取路径上的页面
列表页、分页、标签页和详情页之间的内链,是蜘蛛发现新 URL 的主要通道。把 /page/、/tag/、/category/ 整体禁止,可能让蜘蛛走不到深层页面。真正需要挡的往往是低价值参数组合,而不是整类路径。
sitemap 与静态资源要放行
Sitemap 文件本身、CSS、JS 和图片如果被 robots 挡住,会影响蜘蛛读取页面结构和渲染。尤其是依赖 JavaScript 的页面,CSS/JS 被禁可能导致蜘蛛看不到其中的链接。
抓取延迟与频率控制
crawl-delay 字段的影响因蜘蛛而异,并不是所有蜘蛛都遵守。设置过大可能降低抓取频率,让新 URL 发现变慢;设置过小又未必能真正保护服务器。更稳的做法是优化服务器响应,同时用访问日志观察抓取峰值,而不是只依赖 crawl-delay。
规则维护与排查顺序
- 先确认 robots.txt 能正常返回 200,避免 5xx 或超时让蜘蛛进入等待。
- 检查 Disallow 路径是否误伤了列表页、分页、sitemap 和静态资源。
- 用日志确认蜘蛛实际抓了哪些路径,是否与预期一致。
- 与 sitemap、内链结构配合,保证重要 URL 至少有一条可抓路径。
robots.txt 是抓取入口的交通规则,不是收录开关。放行该抓的,拦截该省的,路径才走得顺。
如果发现蜘蛛抓取量下降,可以先从 robots.txt 的变更记录查起,再比对 sitemap 和日志中的实际抓取路径。把规则收窄到具体目录,保持重要入口可抓,通常比反复调整抓取频率更有效。