入口页部署完,刷新日志却一条搜索蜘蛛的记录都没有,这是很多人遇到的第一个卡点。先说明一个前提:从入口页上线到搜索蜘蛛出现,中间并没有统一的等待时间,也没有哪一步能保证蜘蛛一定来。与其盯着日志焦虑,不如把链路拆开,逐段确认自己能控制的部分是否正常。
先分清“没来”和“来了但没记上”
排查之前先确认日志本身是否可靠。常见的情况是蜘蛛确实访问过,但记录丢了:
- 日志只保留了最近几小时,或是按小时切分,翻错了文件;
- 入口页前面挂了 CDN 或反向代理,真实请求被缓存命中,源站日志里没有记录;
- 过滤规则写得太死,把搜索蜘蛛的 UA 或 IP 段一起排除了;
- 看的是访问日志,而部分爬虫请求走了错误日志或单独的日志通道。
建议先用不带过滤条件的方式统计一遍,确认服务器层面到底有没有外部请求进来,再往下判断。
用一条由外到内的顺序排查
下面这个顺序的好处是,每一步都能给出明确的是或否,不需要猜。
第一步:域名能不能被正常解析和访问
用外部工具或公共 DNS 查询一下入口页域名,确认解析结果和预期一致,没有残留的泛解析、错误的 A 记录或指向已下线 IP 的情况。同时确认 80 和 443 端口对外可达,有些服务器只开了其中一个,而蜘蛛默认走的是 80 或 https。
第二步:服务器返回的状态码和响应时间
用外部拨测或在线检测工具请求入口页,看返回的是什么。这里有几个高频问题:
- 防火墙、WAF 或安全组把数据中心 IP 段整体拦掉了,蜘蛛刚好落在被拦范围里;
- 入口页需要登录、带 token 或校验 Referer,外部请求直接 403;
- 响应时间过长,几秒甚至十几秒才返回首个字节,抓取端可能提前断开;
- 返回 200 但内容是空壳,正文由前端脚本渲染,源码里看不到链接。
第三步:robots.txt 和页面级的抓取限制
确认根目录下没有残留的 robots.txt 把整站或入口页目录屏蔽掉,也确认入口页本身没有 noindex、没有 X-Robots-Tag 响应头。这两处一旦出错,表现就是“服务器有请求、但看不到蜘蛛”,或者“蜘蛛来过一次就再也不来”。
第四步:页面是不是真的“可被发现”
入口页能打开不等于搜索蜘蛛会主动找来。如果它没有任何外部指向、没有提交过 URL、站点地图里也没有它,那就只能等蜘蛛顺路经过,这中间的间隔可能很长。可以做的动作包括:把入口页写进站点地图并提交、从已经有一定抓取频率的页面上给出一个真实可点的链接、换一个本身就有抓取活动的域名承载入口。
第五步:确认入口页里的链接本身没问题
入口页被访问过,但日志里只有入口页、没有目标 URL,这种情况通常是链接形式的问题:链接由 JavaScript 动态插入、用表单或图片按钮承载、被 CSS 隐藏、加了 nofollow、或者用了 base 标签导致相对地址解析到了别处。这些细节决定了蜘蛛能不能顺着链路继续走。
时间尺度上可以有的心理预期
抓取频率是搜索引擎按站点整体表现分配的,不是站点单方面要求的。入口页所在的域名越活跃、历史越干净、结构越清晰,被重新访问的间隔通常越短;反之可能几天甚至更久才轮到一次。
影响因素里,比较关键的是:域名是否有稳定的抓取历史、入口页是否出现在站点地图或外链中、服务器是否长期稳定返回 200、页面体积和层级是否友好。这些属于能主动改善的部分,至于具体多久,只能观察,没法约定。
几个容易误判的情况
- 换了 UA 就以为是蜘蛛:日志里的 UA 可以伪造,单看 UA 容易误判,最好结合 IP 段反向解析、访问时间规律和请求路径一起看。
- 入口页没抓,但目标页进了索引:目标 URL 可能通过其他路径被发现,不能直接归因到入口页,反之亦然。
- 服务器压力大时误杀:为了防刷设置的高频拦截,可能把正常的抓取请求一起拦掉,表现就像“蜘蛛没来”。
把排查固定成习惯
与其每次靠感觉判断,不如把上面五步做成一份简单清单:解析、状态码、robots、可发现性、链接形式。入口页上线后先跑一遍,日志出现异常时再跑一遍。多数“蜘蛛不来”的问题,都能在这几层里定位到具体是哪一段断掉了,剩下的就是按实际情况调整,而不是反复更换入口页。