写robots.txt时要核对的日志字段,核心是请求路径、状态码、User-Agent、请求时间、来源IP这五类。因为robots.txt的作用是告诉爬虫哪些路径不要抓,而它是否生效,只能从服务器访问日志里看爬虫有没有真的去请求那些被禁止的路径。如果日志里没有这些字段,就无法判断规则是被遵守了、被忽略了,还是根本没被读到。
请求路径告诉你爬虫访问了哪个URL,状态码告诉你服务器怎么回应。判断robots.txt是否起作用,主要看被禁止的路径是否还在被请求。
200,说明爬虫仍在抓取,规则可能没生效或没被读取。403或404,要看是服务器主动拒绝,还是路径本身已不存在,这两种含义完全不同。5xx属于服务器错误,不能作为robots.txt生效的证据,需要先排查服务端问题。注意,robots.txt只是抓取限制,不等于可靠的索引移除。日志里不再出现某路径的抓取,也不代表它已经从搜索结果中消失。
robots.txt可以针对不同爬虫写不同的User-agent段。日志里的User-Agent字段就是用来对应这些段的。
实际操作时,先按User-Agent过滤出目标爬虫的请求,再看这些请求里有多少落在被禁止的路径上。如果日志里混杂了浏览器和其他爬虫,不区分UA就会得出错误结论。有些爬虫的UA字符串里会附带版本或说明信息,核对时要看完整字符串,而不是只匹配开头几个字符。
请求时间能看出抓取是否集中在某个时段,来源IP能看出请求是否来自同一批地址。
这些字段不能单独下结论,需要和路径、状态码一起看。一项现象可能有多个解释,不要只凭一个字段就断定原因。
时间和人手有限时,建议按下面的顺序走一遍:
200且内容正确。如果复查后请求量没有变化,优先检查robots.txt是否被正确读取,而不是直接改动规则内容。不同搜索引擎对robots.txt的支持情况需要分别核查,不能用一个爬虫的表现推断全部。
以下是容易出错的地方,可以对照检查:
404当成robots.txt生效,实际可能只是页面被删除。下一步,打开最近一段时间的访问日志,按User-Agent和请求路径做一次分组统计,把被禁止路径的请求单独列出来,再对照robots.txt的修改时间判断规则是否已经起作用。