入口页按 User-Agent 返回不同内容,指的是什么
常见做法是:入口页在服务端判断请求头里的 User-Agent,如果识别为 Googlebot、Bingbot、百度蜘蛛等,就返回一份带有大量目标链接的 HTML;如果判断为普通浏览器,就返回空白页、提示页或者直接跳走。也有站点反过来做,只给蜘蛛看精简版。目的只有一个:让搜索蜘蛛看见链接,而普通访客看不到这些链接。
搜索蜘蛛并不是只看 User-Agent 字符串
这是最容易误判的一点。搜索引擎对官方蜘蛛有验证机制:反向 DNS 校验、IP 段核对,以及公开的 IP 列表。UA 字符串可以随便改,但真实的来源 IP 很难伪装。
更关键的是,搜索蜘蛛会对同一个 URL 做多种形式的抓取。它可能用普通浏览器 UA 再抓一次,也可能启用渲染模式抓一次,然后与你给官方 UA 返回的版本做对比。如果两份内容结构差异很大,尤其是链接数量、正文主题、可见文本完全不同,就很容易被判定为差异化返回。
被判定之后,处理方式通常不只是「忽略这份内容」那么简单。轻则这份差异化内容不被采信,重则整个入口页的抓取频率下降,甚至影响到同一批入口页的抓取预算。至于收录和排名,任何工具都无法承诺。
除了被识别,这种写法本身还有几个副作用
- UA 判断容易误伤:蜘蛛版本更新、移动端蜘蛛、不同地区的蜘蛛 UA 可能不在你的匹配规则里,结果该看到的没看到,不该看到的反而看到了。
- 缓存与 CDN 会让判断失效:CDN 缓存的是第一次请求的版本,后续蜘蛛拿到的可能正好是普通访客版本。
- 日志里会出现大量混杂记录:自己都分不清蜘蛛到底抓了哪一版,排查问题时缺少可靠依据。
- 入口页一旦被标记为异常,之前「成功被发现」的 URL 也不会因此获得额外待遇。
更稳妥的替代做法
如果目标只是让链接更容易被发现,完全可以用不冒风险的方式实现。
- 让搜索蜘蛛和普通访客拿到同一份 HTML,链接直接写在初始响应里,不依赖脚本二次注入。
- 页面结构保持简单:可点击的 a 标签、清晰的层级,避免把链接藏进 iframe、图片或事件绑定里。
- 控制单页链接数量,把入口页拆成多个层级,而不是一页堆上千条。
- 入口页内容与目标页面保持一定相关性,纯链接列表页在长期看并不占优势。
- 把 sitemap 当作补充手段提交,同时用服务器日志观察蜘蛛实际抓了什么、返回了什么状态码。
怎么观察这类做法是否已经产生影响
如果已经用了差异化返回,可以重点看几件事:同一批入口页的抓取频次有没有下降;抓取日志里官方蜘蛛的 IP 是否真实;返回给不同 UA 的内容差异有多大;目标 URL 的抓取状态是「已发现未抓取」,还是压根没有记录。这些信号比任何猜测都直接。
蜘蛛池能做的,是降低 URL 被发现的难度,而不是决定搜索引擎抓不抓、收不收。用差异化返回去换短期的「被看见」,通常得不偿失。