网站收录

抓取到的页面和用户看到的不一样:UA、地域与登录态的核对顺序

同一个 URL,浏览器打开正常,搜索引擎抓到的却可能是残缺版本。按 UA 判定、地域与 CDN、登录态、缓存与渲染四个方向取证,再按固定顺序排查,才能在判断收录状态前先确认抓到的页面是不是完整版。

网站收录

抓取到的页面和用户看到的不一样:UA、地域与登录态的核对顺序

同一个 URL,你用浏览器打开是完整的商品页,搜索引擎抓到的却可能是一份占了半屏“请先登录”的残缺 HTML。这种“抓到的和看到的不是一回事”的情况,在排查收录问题时经常被忽略——它会让后面所有关于收录状态的判断都建立在错误前提上。

第一步:先取证,别凭印象判断

先别急着改页面。用几种不同的请求方式,各取一次同一 URL 的原始 HTML(不是渲染后的截图),把正文部分截出来对比:

  • 普通浏览器 UA 请求一次;
  • 移动端 UA 请求一次;
  • 搜索引擎 UA 请求一次;
  • 带 Cookie 与不带 Cookie 各请求一次。

如果这几份结果正文长度差距明显,差异就是真实存在的,接下来才轮到找原因。如果几份结果完全一致,那收录问题应该往别处查,比如页面质量、内链深度或索引状态本身。

差异通常来自四个地方

1. UA 与设备判定

自适应站点常用 UA 判断跳转:移动 UA 被跳到 m 子域,桌面 UA 留在主域。如果跳转靠 JS 或 302 完成,而目标页又没有独立可抓取的正文,搜索引擎拿到的可能就是跳转前的空壳。要确认的是:主域和 m 域是否各自返回完整正文,以及是否存在桌面与移动互跳的死循环。

2. 地域与 CDN 回源

带地域分发的站点,不同节点可能返回不同货币、不同库存,甚至对某些地区直接返回屏蔽页。搜索引擎的抓取节点未必和你所在地一致,于是“本地正常、抓取异常”就出现了。核对方法是换出口 IP,或者直接对源站请求一次,看源站输出是否完整。

3. 登录态与会员墙

价格、联系方式、下载地址藏在登录后,是很多站点的默认设计。如果这些内容恰恰是页面主体,那么对外部抓取者来说这页就是低价值甚至空页面。要么把核心内容放到登录前,要么明确这类页面不必强求收录。

4. 缓存与渲染时机

页面缓存可能还停留在旧版本;前端渲染的站点则可能缓存了“还没注入正文”的那一刻。核对时注意请求头里的缓存标识,并对比直接访问源站与经过 CDN 的结果是否一致。

推荐的核对顺序

  1. 用不同 UA、不同 Cookie 状态各取一次原始 HTML,记录正文长度;
  2. 绕过 CDN 直连源站取一次,判断差异是否由缓存或节点造成;
  3. 检查是否存在 JS 或 302 跳转,跳转后的目标页能否独立返回正文;
  4. 确认关键内容是否依赖登录态;
  5. 以上都排除后,再去核对 robots、canonical、索引状态这些常规项。

两个容易踩的坑

不要为了“让蜘蛛看到更好的版本”而按 UA 给搜索引擎单独输出一份内容。这类做法属于伪装(cloaking),短期或许看不出问题,长期是站点级风险。
  • 只对比渲染后的页面截图,不对比原始 HTML,会漏掉“正文靠 JS 注入”这一类问题;
  • 发现差异后同时改了缓存、跳转和模板,结果无法判断是哪一项起了作用,建议一次只改一处。

把结论记下来

建议做一张简单对照表:URL、请求方式、返回状态码、正文长度、是否有跳转。同一批页面跑一遍,规律很快就会显现。抓取与收录本来就是两步——先保证抓到的版本是完整的,再去谈它有没有进入索引、以什么形式展示,顺序颠倒了只会白忙一场。