排查内容加载差异,核心是确认同一个网址在不同设备、不同网络或不同地区下返回的HTML是否一致,以及搜索引擎抓取到的版本与用户看到的版本是否相同。先固定一个可复现的对照条件,再逐项排除,不要一上来就改代码或提交收录。
打开浏览器的开发者工具,切到网络面板,勾选“禁用缓存”,刷新页面,记录主文档的响应状态码、内容长度和响应头中的 Content-Encoding、Vary 字段。然后换一个无痕窗口、换一个网络环境重复一次。
这三种情况的处理方向完全不同,先定位层级能避免无效改动。
使用搜索引擎官方提供的网址检查或抓取测试功能,查看抓取到的HTML源码,与你在浏览器中查看源代码的结果逐段比对。重点看正文首屏内容、内链、标题和结构化数据是否出现在原始HTML里。
如果正文只存在于JavaScript执行之后,而原始HTML里是空的,那么差异就来自渲染方式。此时可以检查是否存在针对爬虫UA返回不同内容的逻辑。需要说明的是,针对爬虫单独返回不同内容属于高风险做法,可能被判定为作弊,排查时应先确认是不是配置失误而非有意为之。
判断依据:原始HTML中能否直接找到核心正文文本。能找到,说明差异不在服务端;找不到,继续查渲染和分流。
缓存和CDN分流是内容加载差异的常见来源。可以按以下顺序检查:
假设一个页面在移动端返回精简版、桌面端返回完整版,而爬虫默认以移动端UA抓取,那么索引到的就是精简版。这属于设计选择带来的差异,需要判断精简版是否仍包含核心内容。如果精简版缺失主要信息,排名表现就可能受影响。
定位到原因后再动手。如果是渲染问题,考虑服务端渲染或预渲染;如果是缓存问题,调整缓存键或主动刷新;如果是分流规则问题,统一爬虫与用户的返回内容。
改动后不要只看一天的数据。搜索需求本身会随季节和热点波动,抓取和索引也需要时间。复查时固定同一组对照条件:同一网址、同一设备模拟、同一网络类型,记录改动前后的原始HTML差异和抓取测试结果。只有对照条件一致,才能判断差异是否真的被消除。
下一步:挑一个你怀疑存在加载差异的具体网址,按上面的顺序做一次原始HTML对比,把结果记下来,再决定改哪一层。