常见問题

日誌里的 UA 寫着搜尋蜘蛛,怎么確認它不是伪装的?

日誌里出現 Googlebot、Baiduspider 並不意味着搜尋蜘蛛真的来過,UA 字符串本身可以随意伪造。本文整理反向 DNS 回查、官方 IP 段比對、抓取行為交叉驗證三種可落地的方法,並說明驗證结果對蜘蛛池入口頁运维的實际意义,帮助你避免誤判抓取情况或错誤封禁。

常见問题

日誌里的 UA 寫着搜尋蜘蛛,怎么確認它不是伪装的?

做站点运营的人几乎每天都會翻日誌。看到 UA 里寫着 Googlebot、Baiduspider、bingbot,心里就踏實一半。但這些字符串是可以随便伪造的:任何人用 curl 加一個 -A 參數,就能在日誌里留下和搜尋蜘蛛一模一样的身份。把伪装爬虫当成搜尋蜘蛛,轻則誤判抓取情况,重則按错誤的结论去調整蜘蛛池入口頁,方向全错。

為什么不能只看 UA

UA(User-Agent)只是客戶端自己声明的一句话,服務器並没有强制校驗。市面上不少采集工具、监控脚本預設就會借用主流搜尋蜘蛛的 UA,用来绕過简單的封禁規則。所以日誌里出現一百次“搜尋蜘蛛”,真實身份可能一個都不是。

更需要警惕的是反向的誤判:有些搜尋蜘蛛的 UA 會在不同時間点發生變化,或者带着版本号、移動端标识,如果只按關键字硬匹配,反而會把真蜘蛛当成異常流量挡在门外。

三種可落地的驗證方法

一、反向 DNS 校驗

主流搜尋引擎的抓取 IP 通常會做反向解析,得到類似 crawl-xx-xx-xx-xx.googlebot.com 這样的主机名。做法是:先對訪問 IP 做一次 PTR 查询,拿到主机名後再對该主机名做一次正向解析,看是否回到同一個 IP。两次能對上,可信度才比較高。只看反向解析结果、不做正向回查,仍然可能被伪造的 DNS 记錄骗到。

二、核對官方公布的 IP 段

Google、Bing 等會公開抓取所用的 IP 段列表,可以定期拉取並做成白名單比對,百度方面也有長期公開的抓取 IP 段說明。把日誌里的 IP 與官方列表對照,比看 UA 可靠得多。注意這些列表會更新,別拿一年前抄下来的那份一直用。

三、看抓取行為本身

行為特征不能單獨定案,但非常适合交叉驗證:

  • 真蜘蛛一般會遵守 robots.txt,伪装爬虫经常直接越過 Disallow 去抓被屏蔽的路径;
  • 真蜘蛛的請求节奏通常有节流,短時間内的並發不會太高,而采集脚本往往一口气拉几百個 URL;
  • 真蜘蛛多數只取 HTML,采集工具則可能把图片、样式、脚本等整站资源都拖一遍;
  • 真蜘蛛會顺着頁面里的連結走,訪問路径呈現出某種遍歷顺序,而不是随机乱跳。

驗證结果對蜘蛛池入口頁意味着什么

把這三步跑一遍,你會得到两個有用的结论。

  1. 知道真實的搜尋蜘蛛有没有来過入口頁。如果日誌里全是伪装爬虫,說明入口頁可能压根没被發現,或者被限速、被拦截了,此时讨论連結數量、放置位置意义不大。
  2. 知道哪些 IP 该放行、哪些该限速。把驗證通過的抓取 IP 單獨放行,避免 WAF、防火墙、CDN 的通用規則誤伤;同时對伪装成蜘蛛的采集流量做频率限制,別让它占掉服務器带宽。
不要因為看到几個可疑 IP 就急着封整段 C 段。搜尋引擎的抓取 IP 分布很散,誤封的代價往往是入口頁長時間没有抓取,而你可能要過很久才會從日誌里察觉。

一個常被忽略的细节

日誌里的時間、时区、狀態碼要放在一起看。有些入口頁返回 200,但内容其實是错誤頁或空壳,搜尋蜘蛛来過一次就不會再回来。驗證身份只是第一步,接下来還要看它每次来抓了几個 URL、停留多久、有没有顺着連結走到目标頁。這些資料比 UA 字符串有價值得多。

把驗證做成一份固定流程,每周跑一次,比凭感觉判断抓取情况要稳妥得多。它不能保證收錄,但至少能让你在正确的方向上做判断。