为什么要先分辨真假
入口页上线后,访问日志里很快会出现自称 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 整段封
- 每周抽一段日志人工看一遍,自动化规则容易漏掉新出现的伪装方式
日志是判断入口页效果最直接的依据,但它只记录事实。真蜘蛛来了不代表页面会被收录,分辨真假只是第一步。