搜尋抓取

日誌里的請求都是蜘蛛吗:UA、反向解析與 IP 段核驗

服務器日誌里自称 Googlebot 的請求未必是真蜘蛛。本文介绍用 UA 初筛、反向 DNS 解析、正向確認與 IP 段比對三步核驗抓取来源的方法,並列出伪装抓取請求的常见特征,帮助你在分析抓取频次與路径之前先把資料清理干净。

搜尋抓取

日誌里的請求都是蜘蛛吗:UA、反向解析與 IP 段核驗

打開服務器日誌,按 User-Agent 排序,常常能看到成百上千條自称 Googlebot、Bingbot 的請求。但如果直接把這些請求当成搜尋蜘蛛来統計,抓取量、抓取频次、抓取路径的结论都會跑偏——因為 UA 字符串任何人都能改。想让後面的分析站得住,第一步是把真蜘蛛和伪装者分開。

為什么 UA 不能單獨作為依據

User-Agent 只是請求头里的一個普通字段,寫日誌的服務器也只會照抄。用命令行工具加一個自定义 UA,就能造出一模一样的字符串。所以判断真伪需要額外證據:来源 IP 是否属于對應搜尋引擎、反向解析出的域名是否對得上、解析结果再正向查回是否一致。

三步核驗流程

第一步:按 UA 初筛

先在日誌里用關键字筛出候選請求,比如 Googlebot、bingbot、Baiduspider、YandexBot。這一步只负责缩小范围,不负责下结论。

第二步:反向解析(rDNS)

對候選 IP 做 PTR 查询。以 Google 為例,真實抓取 IP 通常解析到 googlebot.com 或 googleusercontent.com 這類域名;Bing 則常见于 search.msn.com。解析不出對應域名,或者解析到某個普通主机商域名的,基本可以判定為伪装。

第三步:正向確認與 IP 段比對

拿到 PTR 域名後再做一次正向解析,看是否回到原 IP,這一步能挡掉人為伪造解析记錄的情况。同时可以對照搜尋引擎公布的 IP 段或 JSON 列表,定期更新本地白名單。两者结合,誤判會少很多。

伪装請求常见的几個特征

  • UA 拼寫完整甚至带着版本号,但反查不到任何官方域名。
  • 單個 IP 在短時間内高频命中後台、站内搜尋頁或接口路径,真實蜘蛛很少這样走。
  • 不讀取 robots.txt,或者只盯着特定文件類型反复請求。
  • 同一時間段内 UA 频繁切換,一會儿 Googlebot 一會儿 bingbot。

核驗清楚之後,日誌才有分析價值

把伪装請求剔除後,很多原本看不懂的現象會變得合理。抓取量下降,可能只是此前混入了大量第三方爬虫;某個目錄被抓得特別频繁,可能是脚本在轮询而不是蜘蛛在加深抓取。基于干净的日誌再看抓取频次、狀態碼分布、抓取路径,判断才可靠。

反過来,被识別出的伪装抓取如果没有业務價值,可以在網關层做限速或拦截;但如果它同时占用了带宽和資料库连接,那它對真實蜘蛛的影响其實和资源耗尽類似,值得單獨處理。

核驗蜘蛛身份是排查的第一步,它帮你確認資料源可信,但不會自動改善抓取结果。抓取质量最终仍取决于内容、结构、响應速度和站点稳定性。

落地时的几條建议

  1. 不必每次全量核驗,先抽样最近几天的資料,確認伪装比例後再决定是否全量處理。
  2. 把 UA 篩選、rDNS 查询、IP 段比對寫成脚本或定时任務,人工核對只留给異常样本。
  3. 搜尋引擎的 IP 段會更新,白名單最好定期刷新,避免把真蜘蛛誤伤。
  4. 保留原始日誌一段時間,方便在结论變化时回溯驗證。

日誌分析的價值取决于資料是否干净。把身份核驗做在前面,後面關于 URL 發現、抓取路径和回訪节奏的判断,才不至于建立在一堆伪装請求之上。