搜尋抓取

日誌里的两類訪客:真實搜尋蜘蛛與模拟抓取怎么区分

日誌里顶着搜尋引擎 UA 的訪問,未必真来自搜尋引擎。本文從 IP 正反向解析、請求行為、静態资源获取、robots 遵守度几個角度给出可落地的甄別流程,並說明分清之後站点在限速、抓取预算和报告口径上该怎么調整。

搜尋抓取

日誌里的两類訪客:真實搜尋蜘蛛與模拟抓取怎么区分

做站点运营的人,几乎都會在日誌里遇到两種訪問:一種确實来自搜尋引擎,另一種只是把 User-Agent 寫成了搜尋引擎的名字。前者影响 URL 被發現的速度,後者只會消耗带宽。把這两類混在一起看,抓取报告就會失真。

只看 UA,迟早會被誤導

UA 是一行客戶端自己寫的字符串,任何人都能改。日誌里出現 Baiduspider 或 Googlebot,只說明對方声称自己是谁,不說明它真的是谁。反過来,有些真實蜘蛛在特定场景下也會用不同的 UA,比如移動端抓取、图片抓取、渲染用的第二波請求。所以判断要落在一组證據上,而不是單一字段。

可以交叉驗證的几個方向

反向 DNS 與 IP 归属

最硬的一條线索是 IP。主流搜尋引擎都提供官方 IP 段或反向解析規則:把日誌里的 IP 做一次反向 DNS,看域名是否落在官方域内,再做一次正向解析確認能回到同一個 IP。两步都對上,可信度才高。只做反向解析,容易被伪造的 PTR 记錄骗過。另外,官方 IP 段會更新,需要隔一段時間核對一次。

請求行為是否符合爬虫逻辑

真實蜘蛛的行為有相對稳定的形態:請求間隔受站点响應時間影响,遇到 5xx 會降速而不是加速,對同一批 URL 會重复回訪,路径分布通常沿着内鏈和 Sitemap 展開。模拟抓取往往相反:並發高、間隔固定、只打少數高價值路径,或者把整站按顺序掃一遍。

是否請求静態资源、是否执行頁面

看它有没有取 CSS、JS、图片。只取 HTML 而不取任何资源,說明它不打算渲染頁面,多半只是在收集 URL;真實蜘蛛在需要渲染时會取這些资源。這條不是绝對的——只做 URL 發現的抓取也可能不取资源——所以要和其他线索一起看。

對 robots.txt 與限流狀態的反應

真實蜘蛛會先讀 robots.txt,並且遵守其中的規則。可以在 robots.txt 里放一條只對特定路径有效的測試規則,观察對方是否回避。再看它對 429 和超时的處理:真蜘蛛會退避,模拟抓取通常照打不誤。

一套可落地的日誌甄別流程

  1. 按 UA 分组,統計每组的總請求量、獨立 IP 數、請求路径數與狀態碼分布。
  2. 對每個 IP 做正反向 DNS 校驗,标记通過、失敗、無法解析三類。
  3. 對照行為指标:並發度、請求間隔波動、是否取静態资源、是否讀 robots.txt。
  4. 把结论寫回日誌字段,之後按“已確認、疑似、非蜘蛛”三類看資料。
  5. 定期复核 IP 段與規則,避免设备或线路變化带来的誤判。

分清之後,策略才谈得上

  • 對確認的搜尋蜘蛛:保證响應稳定,重点 URL 的抓取失敗要單獨盯,出現 5xx 優先排查服務器,而不是忙着加連結。
  • 對疑似模拟抓取:可以在 WAF 或 Nginx 层面按 IP、频率做限速,不必為它保留抓取预算。
  • 對無法判断的:先限速观察,別直接封整段,避免誤伤。
  • 报告口径统一:抓取量、覆盖率這類指标只統計確認過的蜘蛛,否則波動會被放大。
IP 校驗和 UA 判断都是运营侧的參考手段,不能替代對服務器日誌與响應狀態本身的分析。任何“保證被收錄”的做法都不成立,能做的只是让真實蜘蛛的每一次訪問更顺畅。

蜘蛛池、模拟抓取這類工具在日誌里留下的痕迹,和真實搜尋蜘蛛的差异其實是可观测的。把甄別這一步做扎實,後面的 URL 發現、抓取路径優化、Sitemap 調整才有意义——否則你可能一直在為一批不會带来任何發現的訪客優化站点。