常见问题

蜘蛛池入口页按 UA 给搜索蜘蛛单独输出链接,会带来哪些风险

有人在蜘蛛池入口页里按 User-Agent 返回不同内容:给搜索蜘蛛一份带链接的页面,给普通访客另一份。本文说明这种做法容易被判定为隐藏内容的原因、几种常见变体各自的问题,以及对比两次返回内容、查抓取日志和已抓取版本等排查方法,并给出更稳妥的入口页处理思路。

常见问题

蜘蛛池入口页按 UA 给搜索蜘蛛单独输出链接,会带来哪些风险

先说清楚“按 UA 单独输出”是什么意思

所谓按 UA 输出不同内容,就是入口页在返回 HTML 之前先读 User-Agent 请求头:如果看起来像搜索蜘蛛,就返回一份带目标链接的页面;如果是普通浏览器或未知爬虫,就返回另一份页面,比如空页、跳转页、验证页,或者干脆把链接去掉。做蜘蛛池的人常用这种方式把链接“藏”起来,希望不影响用户侧的观感,同时让搜索蜘蛛发现目标 URL。

但这里有一个基本前提:搜索引擎看到的内容和用户看到的内容,需要是同一份。这条要求在很多搜索质量指南里都写得很清楚,不是某一个具体算法的问题。

搜索蜘蛛能不能察觉自己被“特殊对待”

单次请求层面,蜘蛛确实拿不到普通用户看到的那一版内容,它只能看到你给它的那一版。所以从一次抓取的视角看,这件事不会立刻暴露。

但在长期、批量、可对比的维度上,问题会慢慢显现:

  • 同一个 URL,蜘蛛抓到的版本和其他来源(第三方抓取、缓存快照、用户反馈、站长后台的“已抓取页面”)不一致;
  • 同一批入口页全部对同一 UA 段返回同一类模板,特征过于整齐;
  • 只给蜘蛛的版本带链接,不带蜘蛛的版本内容极少,页面本身没有实际信息量。

这些线索单独看都不算什么,合在一起,就容易被当作作弊型页面处理,而不是“没做好”。

几种常见做法各自的问题

只给搜索蜘蛛输出链接(隐藏链接)

这是最典型的一种。用户打开入口页什么都看不到,或者只看到一段无关文字,而对蜘蛛 UA 直接吐出一大串目标链接。这类页面几乎没有任何独立价值,一旦被抽查,被判为隐藏内容或纯链接页面的概率很高,入口页本身可能被降权、除名,目标 URL 也可能被牵连。

对普通用户 302 跳到别处

入口页对用户跳转、对蜘蛛不跳转。搜索蜘蛛对 302 的处理是跟着去目标地址看一眼,但不一定把权重和索引都转移过去,同时它也会记住这个跳转关系。如果入口页向甲站跳、对蜘蛛又输出乙站链接,前后不一致,这条链路的意义就很有限了。

直接屏蔽非搜索蜘蛛

用 UA 或 IP 段把普通访客全部 403,只放行蜘蛛。这种做法看起来“干净”,实际会带来两个问题:一是 UA 可以伪造,误封真实用户和正常工具是常态;二是蜘蛛的来源 IP 段会变,靠 IP 白名单维护成本越来越高。更重要的是,一个正常访客永远打不开的页面,本身就不具备被稳定收录的条件。

排查时可以按这几个点看

  1. 对比两份返回内容。用普通浏览器 UA 和蜘蛛 UA 各请求一次,把 HTML 存下来做对比,看差异是“正常适配”(移动端适配、压缩格式)还是“链接有无”这种结构性差异。
  2. 看入口页的正文占比。除了链接列表,页面是否有标题、说明、栏目结构。只有链接的页面,即使不做 UA 判断,也很难长期稳定。
  3. 看日志中的抓取结果。蜘蛛拿到 200 之后,是否继续抓了页面里的目标链接?如果入口页被抓、目标 URL 长期没有抓取记录,多半是入口页的价值判断没过关,而不是 UA 的问题。
  4. 检查站长的“已抓取”版本。后台看到的渲染内容和你给蜘蛛的内容是否一致,是判断有没有被区别对待的最直接证据。
  5. 确认有没有误伤。如果用了 UA 屏蔽,先确认正常用户、常见浏览器、企业防火墙代理有没有被一起挡掉。

更稳妥的处理方式

把入口页当成一个普通页面来做:内容对所有人一致,链接用标准的 <a href> 输出,页面本身有可读的标题和少量说明文字。需要控制被抓取的范围,用 robots.txt 或 meta robots 明确表达,而不是靠 UA 判断来“绕开会看到的人”。

入口页的职责是让 URL 被稳定地发现,不是和搜索引擎玩“你只能看到这一版”。能长期跑下去的入口页,通常是给所有人看的正常页面。

回到最初的问题:按 UA 给搜索蜘蛛单独输出链接,短期可能看不到什么反应,但它把页面的可信度建立在“对方不细看”这个假设上。这个假设一旦被打破,损失的不只是一个入口页。与其研究怎么区分 UA,不如把入口页本身做得像一个真实存在的页面——这部分收益更稳定,也更好排查。