验证修复后的响应,关键不是看页面能不能打开,而是确认爬虫实际拿到的状态码、响应头和正文内容,与你修复前设定的目标一致。很多项目改完 robots.txt、meta robots 或服务器规则后,只用浏览器访问一次就宣布完成,这恰恰是最容易漏掉问题的地方。
200 只说明服务器愿意把资源交给这次请求。它不说明这个资源是否被 robots.txt 挡住,不说明响应头里有没有 noindex,也不说明正文是不是被替换成了登录页或验证页。搜索引擎爬虫控制涉及多个层级,任何一个层级没对齐,修复都可能无效。
更隐蔽的情况是:浏览器带 Cookie 访问返回正常页面,爬虫不带 Cookie 访问却拿到 302 跳转或 403。你验证的是浏览器响应,不是爬虫响应,两者不能互相替代。
最直接的执行步骤是用命令行工具模拟一次不带登录态的请求,观察完整响应。例如在终端执行:
curl -I -A "Mozilla/5.0 (compatible; ExampleBot/1.0)" https://example.com/page
这里把 User-Agent 换成你关注的那类爬虫标识,但不要假装它是某个真实搜索引擎的官方爬虫,除非你确实在按官方文档核对。重点看三处:
X-Robots-Tag。它的作用与页面内的 meta robots 类似,但优先级和适用范围不同,容易在只改 HTML 时被忽略。Content-Type 是否与页面类型一致。把 HTML 返回成 text/plain,爬虫可能不按页面解析。如果响应头显示 noindex,而你的修复目标是允许收录,那么这次修复没有生效。如果目标是移除索引,也要注意:robots.txt 的抓取限制不等于可靠的索引移除,被限制抓取的页面仍可能因外部链接出现在结果中。
同一个现象往往有多种解释,验证时要逐项排除,不要看到异常就下结论。例如页面返回 403,可能是服务器防火墙拦截了该 User-Agent,可能是 CDN 规则命中,也可能是源站权限配置问题。只有分别用不同 User-Agent、直连源站、绕过 CDN 测试后,才能判断是哪一层造成的。
再比如页面没有被收录,不能直接归因于 robots.txt。站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名。需要分别核对:抓取是否被允许、页面是否返回可索引状态、内容是否与目标查询相关、是否有其他页面重复。
针对已有项目的修复,建议固定下面这套顺序,每次改完都跑一遍:
X-Robots-Tag 是否冲突。适用条件是:你已经明确这次修复要解决的是抓取限制、索引指令还是状态码问题。如果目标本身没定义清楚,验证就无从谈起。判断结果是:所有检查项都与目标一致,才算修复完成;只要有一项冲突,就按该项继续排查。
robots.txt 的通用约定被广泛支持,但具体指令、响应头处理方式和抓取工具的支持范围并不完全相同。不要用一次测试的结果推断所有搜索引擎的行为。涉及具体搜索引擎时,应查阅其官方文档中关于抓取和索引控制的说明,再按上面的方法分别验证。
下一步,把你这次修复涉及的 URL 整理成一张表,逐条记录状态码、robots 规则、索引指令和正文抽样结果,作为后续复查的依据。