死链测试工具:日志中应该核对哪些字段

📍 WDQWDWQD987AAAAA:216.73.216.246
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /11215dee46ee.html
📄

死链测试工具:日志中应该核对哪些字段

用死链测试工具排查时,日志里最该先核对的是能定位“谁在什么时候请求了哪个地址、得到什么结果”的字段:时间戳、请求方法、请求URL、状态码、来源页(Referer)、User-Agent、响应大小,以及站点自身的日志标识(如虚拟主机名或站点ID)。如果日志里没有这些字段,死链测试工具给出的结论只能停留在“发现异常”,无法判断该先修哪个链接。

先明确交付结果,再决定必查字段

时间和人手有限时,不要把所有字段都看一遍。先想清楚这次要交付什么:是一份“优先修复清单”,还是确认某个改版后批量出现的404。交付物不同,字段优先级也不同。

日志字段核对清单与判断依据

下面按“字段—看什么—判断结果”给出可执行核对方式。不同服务器和CDN的日志字段名可能不同,但含义基本对应。

  1. 时间戳:确认异常是集中在某个时间段,还是持续存在。若集中在一次发布后的几分钟内,优先怀疑那次改动;若长期零星出现,多为外部旧链接。
  2. 请求方法:区分GET与HEAD。大量HEAD请求返回404,可能是监测或预检行为,不一定是用户可见死链。
  3. 请求URL:去掉查询参数后归类,看是同一路径反复出现,还是大量不同路径。同一路径反复404,修复价值最高。
  4. 状态码:404、410、500、502要分开处理。404和410属于链接失效;5xx属于服务端故障,不能当作死链直接删链接。
  5. 来源页(Referer):有来源页说明站内某页面正在把用户导向死链,应优先修来源页;来源为空可能是直接访问、书签或爬虫。
  6. User-Agent:区分真实浏览器、搜索引擎爬虫和监控工具。爬虫命中404不代表用户会遇到,但可能影响抓取效率。
  7. 响应大小:状态码为200但响应体极小,可能是软404;状态码为404但响应体很大,可能是自定义错误页,需确认是否返回了正确状态码。
  8. 命中次数:按URL聚合后排序,先修命中次数高且来源页明确的链接。

从字段到任务:谁负责、怎么验收

核对完字段后,把结果拆成可分配的任务:

注意:robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。日志中看到的抓取行为,只能说明某次请求发生过,不能直接推断搜索引擎已收录或已移除。

一个简短的核对示例

假设日志中有这样一行(字段已简化):

2024-06-01T10:12:03 GET /old-page 404 referer=/blog/post-1 ua=Chrome

可以判断:这是一个真实浏览器用户从/blog/post-1点进了失效的/old-page。下一步不是直接删/old-page,而是先修/blog/post-1里的链接,或给/old-page配置301。若同一URL在日志中反复出现且来源页很多,则优先做301。

下一步

打开你手头最近一段时间的访问日志,按请求URL聚合,筛出状态码为404或410且来源页非空、命中次数最高的前20条,先处理这批。处理完后再用死链测试工具复测,确认这些URL不再返回404。

图1 图2

nginx