用死链扫描工具分别扫描移动端和桌面端时,差异通常来自三处:抓取时使用的 User-Agent、页面实际返回的 HTML 内容、以及重定向与拦截规则。要检查差异,最直接的做法是用同一工具、同一份 URL 清单,切换移动端与桌面端两种抓取模式各跑一次,然后对比两份结果中状态码、最终 URL 和失效链接数量是否一致。
很多工具的“移动端”只是一个界面预览,并不改变请求头。判断方法很简单:让工具抓取一个能回显 User-Agent 的测试页面,看返回内容是否随模式变化。如果两次结果完全相同,说明它只是渲染尺寸不同,扫描结果不能当作移动端数据。
真正区分移动端与桌面端抓取,需要工具在请求时发送不同的 User-Agent,例如桌面端常用 Mozilla/5.0 (Windows NT 10.0; Win64; x64),移动端常用含 Android 或 iPhone 的标识。具体字符串以你使用的工具配置为准,这里只说明判断依据:结果不同,才说明抓取身份确实变了。
把移动端和桌面端两次扫描导出为 CSV 或表格,按 URL 对齐后逐项比较。重点不是总数量,而是同一 URL 在两端的状态是否一致。
如果两端状态码和最终 URL 完全一致,只是失效链接数量不同,问题多半出在页面渲染:移动端 HTML 里少了某些链接,或 JavaScript 在移动端未执行完整。
差异可以归为三类,处理方式不同:
区分第二类和第三类,可以手动用移动端 UA 请求同一页面,看返回的 HTML 中是否包含那条链接。包含而工具没扫到,是工具问题;不包含,是页面问题。
协作场景下,返工往往来自“谁扫的、用什么模式扫的”没写清楚。交付扫描结果时,至少记录以下信息:
复查时,先确认两份文件来自同一份 URL 清单,再抽查 5 到 10 条差异条目,手动请求验证。若手动结果与工具一致,差异成立;若不一致,先排查工具配置再下结论。这样可以把“可能原因”收敛为“已经定位的原因”,减少来回沟通。
下一步:选一条两端结果不一致的 URL,用移动端 UA 手动请求一次,记录状态码与最终地址,再决定是改服务端规则还是改前端渲染。