核对抓取限制,核心是让搜索引擎爬虫在访问你的博客时,能够拿到页面内容而不是被拒绝。最直接的做法是依次检查 robots.txt、页面 meta 标签、HTTP 响应头、服务器防火墙与 CDN 规则,再用抓取测试工具或日志确认爬虫实际得到的状态码。判断标准是:目标页面返回 200,正文可读,robots 规则没有误封,且日志中爬虫请求不是 403、429 或 5xx。
抓取限制不是单一开关,可能来自几个位置,排查时要逐层排除:
Disallow 禁止某目录或整站,影响的是合规爬虫的抓取意愿。<meta name="robots" content="noindex, nofollow"> 主要影响索引和链接跟踪,不直接等于禁止抓取,但常与抓取问题一起出现。X-Robots-Tag 可以按状态码或文件类型施加 noindex、noarchive 等限制。这几层的后果不同:robots.txt 禁止抓取,爬虫可能完全不请求;返回 403,爬虫请求了但被拒绝;返回 200 但正文由 JavaScript 渲染,爬虫可能拿到空壳。先定位是哪一种,再决定改哪里。
下面这套步骤适合博客已经上线、但怀疑某些文章不被抓取的情况。按顺序做,每一步都记录结果:
你的域名/robots.txt,确认没有 Disallow: / 这类整站规则,也没有误封文章目录。若使用子目录博客,检查规则是否只针对该目录。noindex 和 nofollow,确认没有意外的 meta 限制。同时看响应头里是否出现 X-Robots-Tag。curl -I https://你的域名/文章路径。重点看是否返回 200,是否出现 403、429、503。假设某篇博客文章在日志里只有 403,没有 200,而 robots.txt 和 meta 都正常,那么限制更可能来自防火墙或 CDN 的机器人规则,而不是 robots 协议。这就是“可能原因”和“已经定位的原因”的区别:日志证据把范围缩小到了服务器层。
核对清楚后,处理方式取决于限制类型和你的实际需求:
选择时问自己两个问题:这个页面是否希望被搜索用户看到?限制是否误伤了正常访问?如果答案分别是“是”和“是”,就应优先解除限制,而不是继续加规则。
解除抓取限制后,不要只看一两天的数据就下结论。搜索需求会随季节和热点变化,数据采集本身也有延迟和抽样差异。比较时尽量固定同一批 URL、同一时间段长度,并记录改动日期。可以观察抓取次数、状态码分布和索引数量的趋势,而不是单日绝对值。若改动后状态码从 403 变为 200,但抓取量没有立刻上升,这不一定代表失败,可能只是爬虫调度尚未跟上。
下一步,选一篇你怀疑被抓取限制影响的博客文章,按上面的顺序检查 robots.txt、meta、响应头和日志,把每一层的结果写成一行记录,再决定改哪一层。