公司博客 // 2026-06-04 · BY IDCBOT

网站被恶意爬虫和采集怎么办?服务器端防护与限流实战指南

原创内容被同行整站采集、服务器被爬虫刷到带宽告警、竞品实时抓取你的价格——恶意爬虫是每个内容站和电商站的隐形敌人。防护的核心是拦住坏爬虫,放行好蜘蛛,同时不误伤真实用户。本文给出服务器端的分层防护方案。

一、先识别:你遭遇的是哪种爬虫?

翻Web访问日志(access.log),恶意采集通常有明显特征:同一IP高频请求(正常用户不会每秒翻十页)、可疑或空的User-Agent规律性遍历URL(按ID顺序抓取)、无视robots.txt。用一行命令揪出高频IP:

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

二、第一层:Nginx限流(性价比最高)

用Nginx的limit_req模块限制单IP请求速率,这是拦截自动化采集的第一道墙:

# http段定义限流区
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
# server或location段应用
limit_req zone=perip burst=20 nodelay;

含义:单IP每秒10次请求,允许突发20次。正常用户几乎不可能触发,脚本采集则会被限速。数值按业务微调,先宽松观察日志再收紧。

三、第二层:UA与IP封禁

# 封禁可疑User-Agent
if ($http_user_agent ~* (scrapy|python-requests|curl|wget)) {
    return 403;
}
# 封禁高频恶意IP(配合fail2ban自动化)
deny 1.2.3.4;

配合Fail2ban可实现自动化:编写规则监控日志,单IP触发限流N次即自动加入封禁列表一段时间,无需人工盯守。

四、第三层:人机校验

对登录、搜索、下单等敏感接口,接入验证码或无感人机校验(如Cloudflare Turnstile、hCaptcha)。进阶手段包括JS挑战——纯脚本爬虫不执行JS,会被自动挡下,而真实浏览器无感通过。

五、关键:别误伤搜索引擎蜘蛛

这是防护中最容易翻车的地方——把Googlebot、Baiduspider一起封了,SEO直接崩盘。三条保命原则:

  1. UA白名单先行:主流搜索引擎蜘蛛的UA明确放行,不进入限流规则;
  2. 验真伪蜘蛛:伪造Googlebot UA的假爬虫很多,对声称是蜘蛛的IP做反向DNS验证(正版Googlebot反查域名属于google);
  3. 限流阈值给蜘蛛留余量:正常蜘蛛抓取频率不高,合理阈值不会误伤,但激进配置可能导致抓取失败、影响收录——上线后查Search Console的抓取报告确认无异常。

六、架构层的底气

大规模恶意流量最终拼的是资源余量:独享带宽的独立服务器在遭遇采集洪峰时,处理与过滤都有从容空间,不会像共享超售机那样被邻居和爬虫双重挤爆。前置CDN还能在边缘就过滤掉大部分恶意请求,源站只面对清洗后的流量。

防爬是持久战,没有一劳永逸的银弹,但限流+封禁+校验的三层组合已能挡住绝大多数自动化采集。定期翻日志、调阈值,让你的原创内容和服务器资源都得到应有的保护。

// LEAVE A COMMENT

Your email address will not be published. Required fields are marked *