常见問题

日誌里蜘蛛很多但目标 URL 没被抓:先確認来的是不是真搜尋蜘蛛

服務器日誌里出現带 bot 字样的訪問记錄,並不等于搜尋引擎真的来過。本文說明如何用反向 DNS 加正向確認驗證搜尋蜘蛛身份,真蜘蛛在日誌中的常见行為特征,以及在確認有真實抓取後、目标 URL 仍未被抓时可以按哪些方向排查。

常见問题

日誌里蜘蛛很多但目标 URL 没被抓:先確認来的是不是真搜尋蜘蛛

很多人看服務器日誌时會遇到這種情况:日誌里每天都有一堆带 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 仍不被抓的常见原因

  1. 入口頁本身没有被有效解析,蜘蛛来過但連結没有被提取;
  2. 入口頁返回的内容對蜘蛛和普通訪客不一致,或者頁面是空壳;
  3. 入口頁數量很大但质量很低,抓取配額被消耗在無效頁面上;
  4. 目标 URL 返回 404、5xx 或長時間超时,蜘蛛降低了對该目錄的抓取意愿;
  5. robots.txt、meta robots、X-Robots-Tag 等設定把路径挡住了。

日誌监测可以怎么做

與其只看“有没有蜘蛛”,不如把日誌拆成几個可观察的指标:

  • 單位時間内通過驗證的真實蜘蛛請求數;
  • 入口頁的抓取频次和返回狀態碼分布;
  • 目标 URL 首次被抓的時間;
  • 蜘蛛抓取後,同一頁面是否出現過第二次訪問。

這些指标更接近實际情况,也能帮助你判断問题出在入口頁、目标頁還是服務器响應上,而不是靠猜。

小结

判断蜘蛛真伪,UA 只是线索,反向 DNS 加正向確認才是比較可靠的办法。確認有真實蜘蛛来訪之後,再去排查入口頁可抓取性、目标 URL 狀態和整体抓取配額,問题定位會清楚很多。任何工具和蜘蛛池都只是增加被發現的概率,最终是否被抓取、是否被使用,仍由搜尋引擎自己决定。