搜索抓取

蜘蛛不带 Cookie:会话、登录墙与它实际看到的页面版本

搜索蜘蛛访问页面时通常不携带 Cookie,也不维持登录会话。这意味着需要登录才能看到的内容、依赖会话判断的地区版本,对蜘蛛来说可能是另一幅样子。本文说明会话参数、登录墙和个性化页面会怎样影响抓取,并给出几条自查与调整思路。

搜索抓取

蜘蛛不带 Cookie:会话、登录墙与它实际看到的页面版本

做站点运营时,很多人习惯先登录后台、选好地区、接受一遍 Cookie,再去看页面,看到的是“自己那一份”页面。而搜索蜘蛛来的时候,情况往往不一样:它的每一次请求通常是独立的,不带着网站之前发给它的 Cookie,也不维持登录状态。换句话说,你熟悉的那个已登录、已选地区的页面,对蜘蛛来说,是一个第一次到访的陌生访客看到的版本。

蜘蛛的请求为什么是“干净”的

抓取是分批、分请求进行的,同一个 URL 可能在几天后再被访问一次,中间不保证保持任何会话。除非你在服务端主动做了对蜘蛛的识别和放行,否则它拿到的就是没有任何历史的响应。理解这一点,很多抓取上的“异常”就能解释得通:蜘蛛看到的和你看到的不一样,不是它出错,而是它本来就没带那些状态。

会话 ID 写进 URL 会带来什么

部分老系统会把会话标识拼在地址里,例如 jsessionid=XXXX,或者用 sid= 这类参数。每次会话不同,URL 就不同,蜘蛛容易把同一个页面当成多个地址反复抓取,抓取额度被平白消耗,页面本身的信号也被分散。

  • 会话状态尽量放在 Cookie 里,不要放进 URL;
  • 如果短期改不了,至少在服务端对携带会话参数的请求做规范化处理;
  • 检查 Sitemap 和内链里有没有带会话参数的地址。

登录墙与付费墙:蜘蛛能看到多少

如果页面的主要内容要求登录才能看,蜘蛛基本拿不到这些内容。它可能只看到一个标题、一个登录表单,或者干脆被重定向走。这不代表网站一定有问题,但要清楚:内容对蜘蛛不可见时,它判断页面的依据也就只剩下很少的信息。

  • 全部内容需要登录:蜘蛛看到的接近空壳,页面价值难以体现;
  • 部分内容需要登录:尽量让标题、导语、核心段落的前一部分保持可见;
  • 未登录自动跳转到登录页:注意返回的响应码,避免让蜘蛛一直停在跳转链里。
如果业务上必须设登录墙,至少让蜘蛛能看到页面的主题描述,而不是一个只有表单的空页面。

用 Cookie 判断地区、语言时要注意

用 Cookie 记住用户选择的语言或地区很常见。但蜘蛛没有这个 Cookie,它会拿到默认版本。这时候要确认一件事:默认版本是不是内容最完整的那一版,而不是“请选择你所在的地区”这类中间页。如果默认版本本身就是一个跳转页,蜘蛛很大可能就停在那里了。

自查的几步

  1. 用浏览器的无痕模式,或清空 Cookie 后再访问目标页面;
  2. 查看网页源代码,确认首屏 HTML 里是否已经包含主要正文;
  3. 留意访问时是否被重定向到登录页或其他中间页;
  4. 用抓取或调试工具发起一次不带 Cookie 的请求,对比返回的内容与状态码。

可以顺手调整的几点

  • 核心内容不依赖会话状态即可访问;
  • 会话标识不出现在 URL 中;
  • 登录相关跳转使用合适的响应码,避免把蜘蛛卡在循环里;
  • 默认版本保持可访问、内容完整。

抓取不会因为你登录了就把内容一起带走。把“不登录、不带 Cookie 的访问者能看到什么”当成一个常规检查项,往往能提前发现一批抓取上的问题。