死链工具:移动端与桌面端怎样检查差异

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

死链工具:移动端与桌面端怎样检查差异

用死链工具检查移动端与桌面端的差异,核心不是换一台设备重跑一遍,而是让抓取请求分别带上桌面和移动端的 User-Agent,再对比同一批 URL 返回的状态码、跳转链和页面内容是否一致。如果两端结果不同,问题通常出在服务端按 UA 做了差异化处理、跳转规则只对某一端生效,或移动端页面本身存在独立死链。

先理解为什么两端结果会不同

死链工具本质上是一个爬虫,它发出的请求带有特定的 User-Agent 头。服务端、CDN 或反向代理可以据此返回不同内容:桌面 UA 拿到 200,移动 UA 可能被重定向到 m. 子域,而这个子域上的页面已经下线,于是变成 404。也可能相反,桌面端访问的旧路径早已删除,移动端却还保留着可用页面。

常见差异来源包括:

需要注意,robots.txt 的抓取限制不等于可靠的索引移除,被 robots 挡住的 URL 仍可能出现在结果里;站点地图也不保证收录。因此对比两端时,状态码和内容才是主要判断依据,不要只看工具报告里的“已屏蔽”标记。

假设例子:一个响应式站点的两端对比

假设有一个响应式电商站点,桌面端和移动端共用同一套 URL。运维人员用死链工具以桌面 UA 跑了一遍,报告显示 12 条 404。为了确认移动端是否一致,他们又用移动 UA 跑了一遍,结果变成 19 条 404,多出的 7 条集中在商品详情页。

排查步骤可以这样执行:

  1. 导出两份报告,按 URL 排序后做差集,找出只在移动端报错的条目。
  2. 对差集里的每条 URL,分别用桌面和移动 UA 手动请求一次,记录状态码、Location 响应头和最终落地页。
  3. 如果移动端返回 301 或 302,检查跳转目标是否存在,而不是只看跳转本身是否发生。
  4. 如果两端状态码相同但内容不同,对比最终页面的标题和主体,确认是否被替换成了错误页或占位页。

在这个假设例子里,多出的 7 条 404 最终定位为移动端专属的推荐模块链接:这些链接只在移动布局中渲染,指向的商品已下架。桌面端不渲染该模块,所以第一轮没有抓到。这是“已经定位的原因”,而不是凭现象直接下的结论——同样的 404 也可能来自跳转配置错误,必须逐条验证。

两端对比要记录哪些字段

只对比“是不是死链”不够,建议把以下字段并列记录,才能判断差异性质:

403 和 429 往往不是真正的死链,而是服务端拒绝了这次请求。遇到这类状态码,应先降低抓取频率或确认是否被防护策略拦截,再决定是否计入死链清单。

工具设置与判断结果

多数死链工具允许自定义 User-Agent,或提供移动端与桌面端两种预设。使用时注意三点:

判断结果时,按差异类型分流:两端状态码不同,优先查服务端 UA 判断和跳转规则;状态码相同但内容不同,查模板和渲染逻辑;只有一端能抓到某链接,说明该链接可能只存在于某一端的 HTML 中,需要确认它是否应该存在。

修复后的验证方式

修复完成后,不要只重跑出错的那一端。用同样的两份 UA 配置再跑一次,确认差集缩小到零或只剩可解释的条目。对涉及跳转的修复,重点核对最终落地页返回 200 且内容正确,而不是只看跳转是否发生。HTTPS 不保证页面没有其他问题,状态码正常也不代表内容就是用户该看到的那一页,所以标题和主体仍需抽查。

下一步,先固定一份两端共用的 URL 清单和 UA 配置,把本次差集导出留档,再按“服务端规则—模板渲染—内容下线”的顺序逐条排查,这样每次复跑都能和上一轮结果直接对比。

图1 图2

nginx