打開服務器訪問日誌,很多人第一反應是看蜘蛛来了多少次。但日誌里标着“Baiduspider”或“Googlebot”的請求,並不一定来自搜尋引擎。把伪造請求当成真實抓取,會直接影响後面所有判断:抓取频次、目錄偏好、服務器压力,都會被带偏。
日誌里為什么會混進大量“蜘蛛”
UA 字符串是客戶端自己寫的,任何人都可以照着拼一個。它的作用只是声明“我是谁”,不是證明“我是谁”。
- 采集與抓取工具:預設或刻意伪装成搜尋引擎 UA,方便绕過简單的 UA 限制。
- 掃描器:批量探测後台路径、备份文件、常见漏洞地址,顺手带上蜘蛛 UA。
- 第三方监测與 SEO 工具:部分工具會模拟蜘蛛抓取頁面,用于檢測可達性或渲染结果。
- 真實搜尋引擎:這才是我們真正關心的那部分流量。
核對身份的三個层次
看 UA,但不要只看 UA
先做一次粗筛:UA 里出現 Spider、bot、crawler 之類的關鍵詞,就归到“疑似”一類。粗筛的作用是缩小范围,不是下结论。真正要警惕的是拼寫错誤的仿冒,比如把 Googlebot 寫成 GoogleBot、把 Baiduspider 多打一個字母,這類往往是批量脚本留下的痕迹。
做反向 DNS 或比對官方 IP 段
主流搜尋引擎都會公布自己的出口 IP 段或驗證方式。Google 提供反查工具,百度也有官方 IP 段列表可供對照。做法很简單:把日誌里的訪問 IP 拿出来,要么做一次反向解析,確認域名归属;要么直接與官方列表比對。
這里有個容易踩的坑:反向解析要再正向解析一次。也就是先用 IP 查到域名,再用這個域名查回 IP,两邊對得上才算數。只做單向解析,會被伪造的 PTR 记錄骗過去。
看訪問特征
身份核對完之後,再用行為特征做交叉驗證。真假蜘蛛在行為上通常有明顯差別。
- 抓取范围:真實蜘蛛會顺着連結和 Sitemap 走,路径集中在站内;伪装者常直奔 /admin、/wp-login.php、备份压缩包這類地址。
- 請求节奏:真實抓取一般有节流,不會几十個請求挤在同一秒;脚本常常並發很高,間隔均匀得不像正常訪問。
- 請求头完整性:真實蜘蛛通常带 Accept、Accept-Encoding、Referer 之類的信息,伪造請求经常只有一行 UA。
- 是否讀 robots.txt:真實蜘蛛几乎每次會话開始前都會取一次 robots.txt,纯掃描器基本不理。
把核對流程固定下来
- 日誌按 UA 分组,得到“疑似蜘蛛”的初步清單。
- 對每個来源 IP 做反向解析,必要时再正向驗證一次。
- 與官方 IP 段比對,标记出無法對應的部分。
- 對無法對應的 IP,統計它們的請求路径和狀態碼分布。
- 把確認為伪造的段做限速或拦截,確認為真實的段單獨留出观察视图。
這件事和站点运营的關系
把真假蜘蛛分開之後,几個原本模糊的問题會清晰很多。抓取频次到底是涨了還是降了,之前可能被大量伪造請求掩盖;某個目錄是不是抓取死角,也可能只是因為真的蜘蛛根本没来過,来的都是掃描器。
服務器压力同理。如果日誌里一半以上的“蜘蛛流量”是伪造的,那扩容和限流的策略就完全该換個方向。
判断蜘蛛身份没有一步到位的办法,UA、IP、行為三條线索要互相印證。單看任何一條,都容易得出错誤结论。