爬虫识别与封禁,区分搜索引擎爬虫:爬虫识别与封禁

网站流量异常、CPU 飙升时,很多站长第一反应是直接封 IP 段,结果误伤了百度、谷歌等正常收录爬虫。
本文面向零基础站长,讲清如何从日志和请求特征中识别爬虫,并用 Nginx 和宝塔面板实现「放行搜索引擎爬虫、封禁恶意抓取」的分流策略。

先判断抓取来源,别急着封 IP

搜索引擎爬虫和恶意爬虫在行为上有明显区别。
正规搜索引擎爬虫通常有固定的 User-Agent 标识,并且会通过官方公开的 IP 段发起请求;
恶意爬虫则常伪装 UA、高频请求、不遵守 robots.txt。

判断一个 IP 是否属于搜索引擎,最稳妥的方式是反查 IP 归属,而不是只看 User-Agent。
以百度为例,可以在服务器上执行:

host 220.181.108.1

如果返回结果中包含 baidu.com 这类官方域名后缀,才说明该 IP 确实来自百度。
谷歌、必应也提供类似的公开验证方式,建议以各搜索引擎官方文档中公布的反查规则为准。

只看 User-Agent 就放行是不安全的,因为恶意爬虫可以随意伪造 UA。
反过来,直接封整个 C 段也可能把正常用户一起挡掉。

用日志筛出真正的高频请求者

在动手配置之前,先通过访问日志确认是谁在频繁抓取。
宝塔面板中日志路径一般在 /www/wwwlogs/你的域名.log,命令行可以直接统计:

awk '{print $1}' /www/wwwlogs/example.com.log | sort | uniq -c | sort -rn | head -20

输出结果里,请求次数明显偏高的 IP 就是重点排查对象。
再结合 UA 看它们是否伪装成浏览器:

awk '{print $1, $12}' /www/wwwlogs/example.com.log | sort | uniq -c | sort -rn | head -20

如果一个 IP 请求量很高,但 UA 是空值、python-requests、curl 或与已知搜索引擎不符,基本可以判定为恶意抓取。这一步是后续封禁策略的数据基础,不要跳过。

Nginx 中放行搜索引擎爬虫并封禁恶意 IP

确认了恶意 IP 后,在 Nginx 站点配置中做区分处理。
思路是:优先放行已验证的搜索引擎 IP 段,再对恶意 IP 返回 403。

在宝塔面板中进入「网站」→ 找到对应站点 →「配置文件」,在 server {} 块内加入:

# 放行百度、谷歌等搜索引擎爬虫 IP 段
allow 220.181.108.0/24;
allow 66.249.64.0/19;

# 封禁确认的恶意 IP
deny 203.0.113.50;
deny 198.51.100.0/24;

保存后在宝塔面板重载 Nginx,或执行:

nginx -t && nginx -s reload

nginx -t 返回 syntax is ok 和 test is successful 才算配置正确。allow 规则要写在 deny 前面,
否则封禁规则会先命中,
放行就失效了。

配置时容易踩的几个坑

第一个坑是顺序写反。
Nginx 的 allow/deny 按从上到下匹配,先命中的规则生效,所以放行搜索引擎的 allow 必须放在前面。

第二个坑是封禁粒度太粗。
直接封一个 B 段可能影响同机房的其他正常用户,建议先封单个 IP,观察效果再决定是否扩大到 C 段。

第三个坑是忽略 robots.txt。
对合规爬虫,可以在 robots.txt 中声明抓取频率,例如:

User-agent: *
Crawl-delay: 10
Disallow: /admin/

这不能挡住恶意爬虫,但能减少正常爬虫对服务器的压力。

第四个坑是封禁后不复查。
封禁生效后应持续观察日志,确认目标 IP 请求量下降,同时搜索引擎抓取量没有异常下跌。

验证封禁效果

配置完成后,用以下方式验证:

  • 在日志中确认被 deny 的 IP 返回状态码变为 403:grep '403' /www/wwwlogs/example.com.log | tail -20
  • 观察服务器 CPU 和带宽是否回落,可用 top 或宝塔面板的监控图表查看
  • 登录百度搜索资源平台,检查抓取频次和收录量是否正常

如果发现搜索引擎抓取量明显下降,应立刻检查 allow 列表是否遗漏了官方 IP 段,建议以搜索引擎官方公布的 IP 段为准进行核对。

常见疑问

Q:只靠 User-Agent 判断爬虫可以吗?
不建议。UA 可以被伪造,必须结合 IP 反查结果一起判断。

Q:封禁 IP 后需要保留多久?
没有固定期限。建议先封禁并持续观察,如果该 IP 不再发起请求,可以保留规则;如果误封,及时移除。

Q:搜索引擎爬虫会不会被误封?
只要 allow 列表正确包含官方 IP 段,并且顺序在 deny 之前,就不会被误封。建议定期核对官方公布的 IP 段是否有更新。

区分搜索引擎爬虫和恶意抓取的核心,是先通过日志和 IP 反查确认身份,再用 Nginx 的 allow/deny 规则做精细化放行与封禁。
按本文步骤执行后,你可以在不影响正常收录的前提下,有效降低恶意爬虫对服务器资源的消耗。

分享到:
上一篇
网站密码哈希算法,bcrypt加密方案介绍
下一篇
重定向全站旧域名跳转新域名实操:重定向全站旧域名跳转新域名实
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意