做蜘蛛池的常见思路是:入口页放上目标链接,等搜索蜘蛛顺着链接爬到目标站。但很多人会忽略一件事——链接被发现和页面被抓取并不是一回事。如果目标站自己用 robots.txt 挡住了抓取,入口页铺再多链接也不会有实质变化。
先分清三个环节
搜索蜘蛛处理一个 URL,大致要经过三步:发现、抓取、索引。
- 发现:搜索蜘蛛在入口页读到链接,把目标 URL 放进待抓取队列,这一步不代表马上就会抓。
- 抓取:搜索蜘蛛真正请求目标 URL,拿到 HTML 内容。
- 索引:内容经过解析和处理,进入可以被检索的数据库。
蜘蛛池能明显影响的,基本只有第一步。后两步取决于目标站自身的状态。
目标站禁止抓取时会发生什么
同样是“挡住搜索蜘蛛”,不同的挡法结果并不一样。
- robots.txt 写 Disallow: /:搜索蜘蛛会遵守规则不去抓取目标 URL。链接可能被发现了,但内容抓不到。长期的抓取失败,也会影响搜索引擎对该站点的抓取意愿。
- 页面 meta robots 写 noindex:搜索蜘蛛仍然会抓取页面,但不会把它放进索引。抓取动作发生了,收录结果却没有。
- 服务端返回 X-Robots-Tag: noindex:效果和 meta 标签类似,只是配置写在 HTTP 响应头里,光看页面源码是发现不了的。
有一种情况容易被误读:某些搜索引擎在“只有外链指向、却没有抓到内容”时,仍可能把 URL 展示出来,但通常没有摘要。这既不稳定,也不等于页面被正常收录,不适合当成可依赖的结果。
几个容易搞混的点
noindex 和 nofollow 不是一回事
noindex 管的是这一页要不要进索引,nofollow 管的是这一页上的链接要不要被跟随。只写 noindex 的页面,上面的链接通常还是会被跟随;只有写成 noindex, nofollow 或单独加 nofollow,才可能让链接不被继续发现。入口页里的链接即使被发现了,如果目标页自己 noindex,最终结果依然是不收录。
robots.txt 是站点级,meta 是页面级
robots.txt 一条 Disallow 可能把整站挡住,影响面很大,改起来也快。meta robots 则只作用于单个页面,需要逐页检查。排查时不要只看其中一个。
入口页能做的事情有限
入口页负责“告知存在”,不负责“决定结果”。把它的作用理解成一个通知渠道,比期待它直接推动收录更符合实际。
照着做的排查清单
- 直接访问目标站的 /robots.txt,看是否存在 Disallow: / 或对搜索蜘蛛的专门限制。
- 打开目标页源码,确认 meta robots 写的是 noindex 还是 noindex, nofollow。
- 用抓包或接口工具查看响应头,确认有没有 X-Robots-Tag。
- 确认目标 URL 返回 200,而不是 301、302 链到别的地址,或者直接 404、5xx。
- 核对规范标签,看是否有多余的 canonical 指向别的页面。
- 翻服务器日志,确认搜索蜘蛛是否真的抓过目标 URL,而不是只抓了入口页。
这些情况下先别指望入口页
目标站整站被 robots.txt 挡住、长期返回 5xx、页面内容在登录墙之后、域名本身处于被处理状态——遇到这些,入口页再铺链接也不会带来实质变化。顺序应该是先修目标站,再谈蜘蛛池。
把入口页当成“告诉搜索蜘蛛有这么个 URL”的渠道更合理。抓不抓、收不收,最终还是目标站自己说话。任何工具都无法承诺收录或排名。
所以,当发现入口页里明明放了链接、目标站却迟迟没有动静时,先别急着加页面或者换域名,从上面的清单逐条对一遍,往往能更快定位问题。