用死链测试工具检查同一个站点时,移动端与桌面端出现差异,通常不是工具算错了,而是两端抓取时使用的入口、渲染方式、UA标识和链接来源不同。要判断差异是否真实存在,应先固定对比条件,再分别抓取、逐条对照,最后用状态码复查确认。
死链测试工具输出的结果一般包含三层信息:被发现的链接、请求后得到的状态码、以及该链接所在的来源页面。移动端与桌面端不一致,可能只发生在其中一层。
先确认差异属于哪一层,再决定后续处理方式。如果只是发现层不同,不必急着修改链接;如果同一URL在两端返回不同状态码,才需要进一步排查服务端行为。
要让移动端与桌面端的结果可比,两次抓取应尽量只改变一个变量。可以按下面的顺序设置:
抓取完成后,把两份结果按URL对齐,而不是按页面标题或链接文字对齐。链接文字在移动端和桌面端经常不同,用文字比对会产生大量假差异。
对齐后可以把差异分成几类,每类的处理方式不同:
这里可以用一个假设例子说明:某页面在桌面端抓取时返回200,在移动端抓取时返回404。复查时用移动端UA单独请求该URL仍返回404,而桌面端UA返回200,说明服务端按UA返回了不同内容。此时要判断这是有意的移动端适配,还是配置遗漏,而不是简单地把该链接加入待修复清单。
修改任何配置或链接后,复查应回到同一套条件:相同的入口清单、相同的UA、相同的渲染设置和超时。只重跑出现差异的那部分URL即可,不必全站重抓,但入口清单要保持一致,否则无法确认差异是否真正消除。
复查时重点看三件事:原来仅一端发现的链接是否仍然只在一端出现;原来状态码不同的URL是否两端一致;原来超时的URL在延长超时或重试后是否恢复。若差异依旧,说明原因不在抓取设置,而在页面内容或服务端响应逻辑。
需要提醒的是,robots.txt中的抓取限制只影响爬虫能否访问,并不等于可靠的索引移除手段;站点地图提交也不保证收录。这些规则与死链判断属于不同层面,不要用抓取限制来代替对状态码的核查。
下一步建议先确定一份固定的入口清单,然后用移动端UA和桌面端UA各跑一次抓取,把结果导出为两张按URL排序的表,用表格软件做差集比对。差异清单出来后,再按上面的分类逐条判断,而不是直接批量修改链接。