用友情链接检测工具比较移动端与桌面端,核心不是看两边的“检测结果条数”是否一致,而是看同一批外链在两种渲染环境下是否都真实出现在页面中、是否都指向同一目标。很多工具默认用桌面端 User-Agent 抓取,移动端结果只是换个 UA 再抓一次,因此差异往往来自页面本身的服务端或前端逻辑,而不是工具算错。正确做法是:先固定同一份链接清单,再分别用桌面与移动 UA 抓取,最后逐条比对“是否存在、是否可点、是否同 URL”三项。
不少人看到移动端抓到的友情链接数量少于桌面端,就判断对方做了“移动端隐藏外链”或工具不准。这个结论下得太快。可能的原因至少有四类,需要分开验证:
display:none,抓取工具拿到 HTML 却判定为不可见。只有排除后三类,才能把原因定位到“对方按设备区分输出”。把“可能原因”直接当成“已定位原因”,是这类比对中最常见的错误。
可执行的做法是先导出桌面端检测到的全部友情链接,形成一份基准清单,字段至少包含:源页面 URL、链接锚文本、href 目标、是否 nofollow。然后对同一批源页面用移动端 UA 再抓一次,把结果并到同一张表里,逐行标注桌面端和移动端的状态。判断规则可以这样设:
<a> 元素,记为“双端一致”。这套规则的适用条件是:两次抓取使用同一工具、同一等待时间、同一网络环境,只改变 User-Agent。如果工具不同,渲染能力和超时设置不一样,差异就无法归因到设备维度。
数量只是入口指标,真正能说明问题的是下面几项。它们比“移动端少了 3 条”更有诊断价值:
pointer-events:none 禁用。这决定用户能否真正点到。如果只做数量比对,一个被 CSS 隐藏但仍存在于 DOM 的链接会被算作“存在”,而一个延迟加载的链接会被算作“缺失”,两者性质完全不同,却可能得出相同的数量差。
并非所有双端差异都需要修改。判断依据是差异是否影响链接的实际作用:
如果移动端链接存在、可点、目标一致,只是位置从侧栏移到底部,这属于正常响应式调整,不必处理。如果移动端完全移除了友情链接模块,或把 href 换成跳转中间页,就属于实质性差异,需要和对方沟通确认是否有意为之。还有一种中间情况:链接在移动端需要用户点击“展开”才出现,此时它对爬虫的可见性取决于内容是初始 HTML 还是脚本注入,这需要看渲染后的 DOM 才能判断,不能只看源码。
假设某页面桌面端检测到 20 条友情链接,移动端只检测到 17 条(此为假设示例,非真实项目数据)。先不要下结论,按上面的清单逐条核对缺失的 3 条属于哪一类:是元素不存在、存在但不可见,还是渲染超时没抓到。分类之后,处理方式自然不同。
拿一个你正在跟进的页面,导出桌面端链接清单,用移动端 UA 重抓一次,把结果按“存在、可点、目标一致”三项打标。先处理“目标不一致”和“元素完全不存在”这两类,它们对友情链接的实际效果影响最大;样式隐藏和折叠加载可以放到第二轮再判断是否需要调整。