很多人看服務器日誌时會遇到這種情况:日誌里每天都有一堆带 spider、bot 字样的訪問记錄,入口頁也在被反复訪問,但目标 URL 的抓取记錄迟迟不出現。這时先別急着加入口頁,第一步應该是確認這些訪問到底是不是真的搜尋蜘蛛。
為什么 UA 不能作為判断依據
User-Agent 是一段客戶端自己發過来的字符串,任何人用几行脚本就能把它改成 Baiduspider、Googlebot。只看 UA 就判断蜘蛛真伪,很容易被自己伪造的流量骗到,也可能把真實蜘蛛誤伤。
能改 UA 的不只是爬虫工具,普通浏览器插件、压测工具、监控探针都可以。日誌里出現 Baiduspider,只代表對方自称是百度蜘蛛。
官方推荐的驗證方式:反向 DNS 加正向確認
主流搜尋引擎都提供了驗證蜘蛛身份的方法,核心是两步:先對訪問者 IP 做反向 DNS 查询,看解析出的域名是否属于该搜尋引擎;再對這個域名做一次正向解析,確認解析结果和原始 IP 一致。两步都通過,才基本可以認定是官方蜘蛛。
- 百度:官方文档给出了蜘蛛的 IP 段和驗證方式,通常可反向解析到 baidu.com 域名再做正向確認。
- Google:可查 Googlebot 使用的 IP 段列表,或對 IP 反向解析到 googlebot.com、google.com 後正向核對。
- Bing:反向解析到 search.msn.com 並正向核對。
- 360、搜狗等也各有說明,建议以官方帮助文档的最新内容為准。
真蜘蛛在日誌里的一些行為特征
- 訪問频率相對稳定,不會在某几秒内爆出上千次請求;
- 會請求 robots.txt,並按其中規則調整抓取范围;
- 對頁面的 CSS、JS 等资源也可能發起請求,取决于该引擎的渲染策略;
- 首次訪問多為新 URL,之後可能回訪更新;
- IP 相對集中在已知網段,而不是散落在各種 IDC 或家宽地址里。
反過来,如果某個 IP 只抓入口頁、從不抓其他资源,請求命中率极高却從不下载頁面依赖文件,UA 又對不上反向解析结果,那大概率是伪造流量。
確認真蜘蛛後,目标 URL 仍不被抓的常见原因
- 入口頁本身没有被有效解析,蜘蛛来過但連結没有被提取;
- 入口頁返回的内容對蜘蛛和普通訪客不一致,或者頁面是空壳;
- 入口頁數量很大但质量很低,抓取配額被消耗在無效頁面上;
- 目标 URL 返回 404、5xx 或長時間超时,蜘蛛降低了對该目錄的抓取意愿;
- robots.txt、meta robots、X-Robots-Tag 等設定把路径挡住了。
日誌监测可以怎么做
與其只看“有没有蜘蛛”,不如把日誌拆成几個可观察的指标:
- 單位時間内通過驗證的真實蜘蛛請求數;
- 入口頁的抓取频次和返回狀態碼分布;
- 目标 URL 首次被抓的時間;
- 蜘蛛抓取後,同一頁面是否出現過第二次訪問。
這些指标更接近實际情况,也能帮助你判断問题出在入口頁、目标頁還是服務器响應上,而不是靠猜。
小结
判断蜘蛛真伪,UA 只是线索,反向 DNS 加正向確認才是比較可靠的办法。確認有真實蜘蛛来訪之後,再去排查入口頁可抓取性、目标 URL 狀態和整体抓取配額,問题定位會清楚很多。任何工具和蜘蛛池都只是增加被發現的概率,最终是否被抓取、是否被使用,仍由搜尋引擎自己决定。