做蜘蛛池的人常有一个惯性思维:只要入口页被搜索蜘蛛抓到,目标 URL 迟早会被请求。其实入口页只解决了一件事——让搜索蜘蛛知道这个 URL 存在。它到了目标 URL 门口能不能进去,取决于目标 URL 自己返回什么、robots.txt 怎么写、有没有权限校验。下面把几种“带到门口却被拦住”的情况拆开讲。
先把发现 URL 和抓取 URL 分开
发现和抓取是两个独立环节。入口页上的链接负责发现,URL 进入待抓队列后,真正被请求时才会遇到 robots.txt 规则、HTTP 状态码、登录态、防火墙这些门槛。任何一环说不,前面的入口页做得再细也没用。
robots.txt 拦截:最常见也最容易被忽略
- 整站 Disallow: /:搜索蜘蛛可能仍然从入口页发现了链接,但不会去请求,收录无从谈起。
- 只拦了某个目录:如果目标 URL 正好落在被拦目录内,情况同上;如果只是同域其他目录被拦,目标 URL 一般不受影响。
- Allow 和 Disallow 同时命中:多数搜索蜘蛛按最长匹配优先处理,规则写得不严谨时,结果会和你的预期相反。
- robots.txt 返回 404 或 5xx:404 通常视为无限制,5xx 则可能被当成临时故障而收紧抓取,两种影响完全不同。
登录墙、付费墙与权限校验
目标 URL 需要登录才能访问,或者对未登录用户返回 401、403,搜索蜘蛛拿到的就是拒绝页,页面上没有正文,也就没有可索引的内容。常见表现是:日志里能看到蜘蛛来抓过,但索引里迟迟不出现,或者标题、摘要是空的。
还有一种更隐蔽的情况:程序对特定 UA 或未携带 Cookie 的请求返回 200,但内容是“请登录”的提示页。这种软拦截不报错,排查起来反而更费劲。
其他容易踩到的门槛
- 429 或频繁验证码:抓取频率一高就被限流,蜘蛛会降低甚至暂停对该域的抓取。
- WAF 或 CDN 规则:把搜索引擎的 IP 段误判为异常流量,直接返回拦截页。
- 地区或 IP 限制:只对特定地域开放,而蜘蛛的抓取节点不在白名单内。
- 纯前端渲染:HTML 里没有正文,只有空壳,蜘蛛不执行脚本或执行后拿不到内容。
可以按这个顺序自查
- 用搜索蜘蛛的 UA 请求一次目标 URL,看真实返回的状态码和正文,不要只看浏览器里的效果。
- 打开目标 URL 所在域的 robots.txt,确认路径是否被 Disallow 命中,注意通配符和最长匹配。
- 检查是否存在登录态、Referer、Cookie 或地域带来的访问差异。
- 在服务器日志里核对蜘蛛到达次数和返回码,确认是“没来”还是“来了被拒绝”。
- 确认真实问题出在目标 URL 一侧之后,再回头调整入口页,顺序不要反过来。
入口页能提高 URL 被发现的概率,但无法绕过目标 URL 自身的访问限制。先把“能不能抓”解决掉,再谈“怎么被发现”。
总结一句:入口页是引路的,不是开锁的。目标 URL 存在访问门槛时,优先处理 robots.txt、权限校验和拦截规则,比继续堆入口页数量更有意义。