為什么要先分辨真假
入口頁上线後,訪問日誌里很快會出現自称 Baiduspider、Googlebot、bingbot 的請求。這些請求里有一部分确實是搜尋引擎蜘蛛,還有相当一部分是采集器、漏洞掃描器、竞品探测工具改寫的 User-Agent。如果把後者当成前者,最直接的後果是誤判:以為入口頁已经被频繁抓取,于是繼續加资源、加域名,實际上真蜘蛛一次都没来過。
反過来也要小心,如果因為伪装請求太多就按 UA 一律封禁,可能誤伤真蜘蛛,尤其是移動端和图片搜尋的 UA。
日誌里先看這几個字段
- IP 與時間:判断来源網段和抓取节奏,是後續校驗的基础
- 請求方法、URL、狀態碼:蜘蛛通常以 GET 請求入口頁以及頁面上鏈出的地址
- 响應大小與耗时:異常的小体积响應或大量超时,往往說明入口頁本身有問题
- User-Agent:只是线索,不能当作结论
- Referer:蜘蛛一般不带 Referer,或只带自身域名
三步基本校驗
反向解析與 IP 归属
對声称是 Googlebot 的 IP 做反向 DNS,看解析结果是否落在官方域名段,再做一次正向解析核對是否一致。百度、必應也都有公開的蜘蛛 IP 段,建议定期同步一份到本地。這一步能過滤掉大部分低成本的伪造。
UA 與行為是否對得上
真蜘蛛的 UA 通常完整、带版本号和說明連結,同一 IP 段的抓取频率也相對克制。如果某個 IP 每秒請求几十次,UA 却寫着搜尋引擎,基本可以判定不是。
看請求路径
蜘蛛沿着入口頁的連結走,路径集中在頁面里出現過的 URL 上。伪装流量更偏爱 /wp-admin、/.git、/env、随机字符串這類路径,看一眼路径分布就能区分開。
真蜘蛛與伪装請求的常见差异
- 抓取节奏:真蜘蛛有波峰波谷,伪装請求常常是持續高频
- 並發来源:真蜘蛛可能来自多個 IP,伪装請求常集中在少數几個 IP
- 静態资源:真蜘蛛偶尔會請求 css、js、图片,纯掃描器基本只請求 HTML
- robots.txt:真蜘蛛會定期讀取,掃描器一般不讀
- UA 拼寫:BaiduSpider、Google Bot 這類大小寫或空格错誤,是明顯的伪造痕迹
几個容易踩的誤区
- 只看 User-Agent 就放行或封禁。
- 把 CDN 回源 IP 当成蜘蛛。日誌里记錄的是节点地址,這时要看回源日誌或 X-Forwarded-For。
- 把一波並發当成蜘蛛洪峰,實际上可能是同一台机器在多线程掃描。
- 忽略移動端與 IPv6 蜘蛛,導致白名單不完整。
用日誌反推入口頁有没有起作用
確認是真蜘蛛之後,還可以顺着日誌看几件事:蜘蛛多久来一次入口頁,来的时候抓到的是 200、404 還是跳轉;入口頁上放出去的連結,之後有没有被同一蜘蛛訪問。這些信息比單纯的請求量更能說明入口頁在不在工作。如果蜘蛛只抓入口頁,從不顺着連結往下走,問题通常出在入口頁本身的结构或内容上,而不是蜘蛛池的規模不够。
處理建议
- 日誌至少保留 30 天,方便對照抓取量的變化
- 把已知蜘蛛 IP 段做成白名單,其余請求按普通訪客限速
- 對高频伪装 IP 做临时封禁,不要按 UA 整段封
- 每周抽一段日誌人工看一遍,自動化規則容易漏掉新出現的伪装方式
日誌是判断入口頁效果最直接的依據,但它只记錄事實。真蜘蛛来了不代表頁面會被收錄,分辨真假只是第一步。