如果你时间有限,先不要翻整份日志。判断搜索引擎抓取是否正常,最值得先核对的是五个字段:请求时间、请求方法、请求URL、HTTP状态码、User-Agent。这五项能回答“谁在什么时候、用什么方式、抓了哪个地址、结果是否成功”这个核心问题。其余字段如响应大小、响应时间、Referer,属于第二优先级,等前五项出现异常后再查。下面是一份按处理顺序排列的清单。
要查什么:把日志按URL分组,统计每个URL出现的状态码分布。
怎么查:用命令行工具提取字段即可,例如:
awk '{print $7, $9}' access.log | sort | uniq -c | sort -rn | head -50
假设日志格式为常见的组合格式,第7列是路径,第9列是状态码。如果你的日志格式不同,先用head -1 access.log确认字段顺序再调整列号。
结果说明什么:大量200说明抓取正常;出现401或403,可能意味着服务器或防火墙在拦截;出现404,说明搜索引擎仍在请求已不存在的地址,需要检查内链和站点地图是否还指向旧URL;出现5xx,属于服务端问题,应优先于其他SEO工作处理。这里要注意,状态码是服务器给出的响应结果,不能直接等同于搜索引擎的最终索引状态。
要查什么:统计不同User-Agent的请求数量和请求路径。
怎么查:提取User-Agent字段后按出现次数排序,例如:
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20
结果说明什么:如果某个声称是搜索引擎的User-Agent大量请求后台、登录页或参数页,值得进一步核实。核实方法是反向DNS查询:把请求来源IP做PTR查询,看域名是否属于对应搜索引擎官方网段,再做一次正向解析确认能回到同一IP。只凭User-Agent字符串不能断定来源,因为它可以被伪造。区分真实抓取与普通访问,能避免把爬虫攻击误判为索引问题。
要查什么:按小时统计抓取请求量,并单独统计低价值URL的占比。
怎么查:如果日志时间字段格式为[10/Oct/2025:14:23:01,可用:
awk -F'[:[]' '{print $3}' access.log | sort | uniq -c
再结合URL字段,筛出分页参数、筛选参数、会话ID等地址,看它们占了多少请求。
结果说明什么:如果抓取集中在少数参数组合或重复页面上,真正需要更新的内容可能得不到足够抓取。此时优先处理的是robots.txt规则、参数处理和内链指向,而不是继续提交站点地图。需要提醒的是,robots.txt只能限制抓取,不等于可靠的索引移除;被robots.txt屏蔽的URL仍可能因为外部链接出现在搜索结果中。
要查什么:同一URL的响应字节数和响应耗时是否稳定。
怎么查:在日志中定位响应大小字段,按URL求平均值和最大值;响应时间若日志没有记录,需要从服务器或CDN侧补充。
结果说明什么:响应时间持续偏高,抓取频率可能下降;响应大小为0但状态码为200,说明返回了空内容,需要检查模板或缓存。HTTPS本身不保证安全无漏洞,也不直接保证排名,它只说明传输层加密,日志排查仍要回到状态码和内容本身。
这套顺序的依据是:阻断性问题优先于效率问题,效率问题优先于优化问题。不同搜索引擎的抓取行为需要分别核查,不能拿一份日志的结论套用到所有引擎。站点地图也不保证收录,它只是发现URL的辅助手段。
下一步:从你的日志中导出最近七天的数据,先按状态码分组统计,把5xx和403的URL列成一张表,逐条确认是服务器配置、防火墙规则还是页面本身的问题。