入口頁部署完,刷新日誌却一條搜尋蜘蛛的记錄都没有,這是很多人遇到的第一個卡点。先說明一個前提:從入口頁上线到搜尋蜘蛛出現,中間並没有统一的等待時間,也没有哪一步能保證蜘蛛一定来。與其盯着日誌焦虑,不如把鏈路拆開,逐段確認自己能控制的部分是否正常。
先分清“没来”和“来了但没记上”
排查之前先確認日誌本身是否可靠。常见的情况是蜘蛛确實訪問過,但记錄丢了:
- 日誌只保留了最近几小时,或是按小时切分,翻错了文件;
- 入口頁前面挂了 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、可發現性、連結形式。入口頁上线後先跑一遍,日誌出現異常时再跑一遍。多數“蜘蛛不来”的問题,都能在這几层里定位到具体是哪一段断掉了,剩下的就是按實际情况調整,而不是反复更換入口頁。