常见問题

日誌里一堆“搜尋蜘蛛”,怎么判断哪些是真的、哪些是伪造 UA

服務器日誌里自称 Googlebot、Baiduspider 的請求,未必真来自搜尋引擎。User-Agent 可以随意伪造,只看它很容易誤判抓取情况。本文给出可操作的自查步骤:反向 DNS 加正向解析、對照官方 IP 段、结合行為特征交叉驗證,並說明確認是真蜘蛛後该重点观察哪些抓取趋势指标。

常见問题

日誌里一堆“搜尋蜘蛛”,怎么判断哪些是真的、哪些是伪造 UA

在服務器日誌里看到自称 Googlebot、Baiduspider 的訪問,是很常见的事。但 User-Agent 谁都能改,几行脚本就能伪造。如果把伪蜘蛛当成真蜘蛛,後面的抓取频次統計、收錄排查、日誌分析都會建立在错誤的前提上。下面按“先驗證身份、再看行為”的顺序,给一套自己能動手做的判断方法。

為什么不能只看 User-Agent

User-Agent 只是請求头里的一個字符串,本身没有任何驗證机制。有人用它抓取内容、探测接口、压测,甚至专门伪装成搜尋蜘蛛来绕過防護規則。所以日誌里出現 “Googlebot” 這行字,只能說明有請求這么寫了,不能說明它真的来自搜尋引擎。

用反向 DNS 加正向解析做身份驗證

這是目前比較靠谱的自查方式,思路是:先拿訪問 IP 做反向解析,看域名是不是搜尋引擎官方域名;再把解析出来的域名做一次正向解析,看能否解析回原来的 IP。两步都對上,才基本可以認作真蜘蛛。

  1. 取出日誌中的客戶端 IP 做反向 DNS 查询。Googlebot 一般解析到 crawl-*.googlebot.com 或 *.google.com;Bingbot 一般解析到 *.search.msn.com。
  2. 把第一步得到的主机名再做一次正向解析,確認返回的 IP 和日誌里的原始 IP 完全一致。只有反向结果、正向對不上,通常就是伪造。
  3. 對批量日誌,可以寫脚本按 IP 去重後统一跑一遍,把结果打上“真 / 疑 / 假”的标簽再統計。

需要提醒的是,各家搜尋引擎提供的驗證手段並不完全一样。Google 和 Bing 官方文档里有明确的反向解析說明;百度更多是以官方公布的蜘蛛 IP 段為准,具体請以搜尋资源平台的最新文档為准。

從行為特征上看差別

身份驗證之外,請求行為本身也有參考價值:

  • 真蜘蛛通常會先取 robots.txt,再按規則抓頁面;伪蜘蛛往往直接冲着目标 URL 去,不讀 robots.txt。
  • 真蜘蛛的抓取节奏相對平稳,會遵守 Crawl-delay 或服務端返回的限速信号;伪蜘蛛容易出現短時間高並發、固定間隔、集中在少數几個 URL 上反复打。
  • 真蜘蛛會處理頁面里的連結、跟進跳轉;伪蜘蛛多數只抓指定内容,不解析站内结构。
  • 真蜘蛛的 IP 段相對固定且可查;伪蜘蛛的 IP 经常来自云主机、代理池,分布散乱。

驗證通過之後要注意什么

確認是真蜘蛛,只解决了“谁在抓”的問题,不代表抓取和收錄就没有問题。建议把真蜘蛛的請求單獨落到一份日誌里,長期观察趋势:抓取總量是涨是跌、抓的是不是重要目錄、有没有大量 404 和 5xx、响應時間是不是在變長。這些資料比單看某一天的訪問量更有用。如果發現真蜘蛛来得越来越少,通常先查服務器稳定性、robots.txt 規則和站内連結结构,而不是急着增加大量入口頁。

几個常见誤判

  • 看到 IP 归属地不對就判定為假:搜尋引擎有分布式抓取节点,归属地和你的服務器位置不一致很正常。
  • 看到 UA 里版本号變化就怀疑:官方爬虫 UA 會更新,重点還是核對 IP 和反向解析。
  • 把 CDN 回源 IP 当成蜘蛛 IP:经過 CDN 时,日誌里记錄的可能是节点地址,需要看 X-Forwarded-For 之類的真實来源头,並確認该头是否可被信任。
不要因為怀疑是伪蜘蛛就整体屏蔽某個 IP 段,很容易誤伤真爬虫。可以先限速、加驗證,再逐步收紧規則。

小结

判断日誌里的搜尋蜘蛛是真是假,顺序應该是:不靠 UA 下结论,先做反向 DNS 加正向解析,再對照官方 IP 段,最後用行為特征交叉印證。把這一步做扎實,後面的抓取分析、URL 提交和收錄排查才有意义。