用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

网站防采集四工具联合布防实战Nginx加Cloudflare加雷池WAF加宝塔防火墙配好了拦得住九成假爬虫:假百度蜘蛛真采集器顶着Baiduspider的User-Agent从阿里云杭州ECS每天爬几万页把服务器CPU长年顶满网站打开速度从1.2秒掉到8秒多

Nginx、Cloudflare、雷池WAF、宝塔防火墙,四个工具配好了能拦住90%的采集,但得先知道爬虫长什么样

上个月帮一个朋友排查问题,他手里管着17个企业站,某天突然发现服务器带宽全天跑满,CPU常年85%以上,网站打开速度从1.2秒掉到了8秒多。日志一拉,一天之内同一个IP访问了4万多个页面,User-Agent写的是"Mozilla/5.0 (compatible; Baiduspider/2.0)"——但IP段是阿里云杭州的ECS。假百度蜘蛛,真采集器。

这种情况比很多人想象的更普遍。站点数量一多,被采集的概率就是几何级增长——一个站可能几个月没人盯上,但十几个站总有那么一两个被人顺手薅走。问题的关键不在于"会不会被采",而在于被采的时候你能不能第一时间发现、能不能快速反制、能不能批量管住所有站点

防采集四层防线,一层比一层狠

1先发现——日志分析、流量监控,知道谁在采、采了多少、什么时候开始的
2再拦截——Nginx层、WAF层、CDN层三道关卡,能拦多少拦多少
3然后污染——给采集器喂假数据、乱码、超长字符串,让它采回去也没法用
4最后批量管——十几个站、几十个站的防护配置不能一个一个手动改

一、先搞清楚是谁在采你——日志里藏着的真相

1 - 网站防采集四工具联合布防实战Nginx加Cloudflare加雷池WAF加宝塔防火墙配好了拦得住九成假爬虫:假百度蜘蛛真采集器顶着Baiduspider的User-Agent从阿里云杭州ECS每天爬几万页把服务器CPU长年顶满网站打开速度从1.2秒掉到8秒多 - UC建站系统

很多人一上来就装WAF、开五秒盾,但连攻击者长什么样都不知道,结果就是正常蜘蛛被你误伤了,采集器倒是绕过去了。防采集的第一步永远是先看日志

打开你的Nginx access.log,按IP聚合请求数:

# 统计每个IP的请求次数,取前20awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20# 统计每个User-Agent的请求量awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20# 找出同一秒内请求超过5次的IP(高频采集特征)awk '{print $1, $4}' /var/log/nginx/access.log | cut -d: -f1-3 | sort | uniq -c | awk '$1>5' | head -20

这三条命令跑完,你基本就能看到谁在薅你的站了。常见的异常模式有这几种:

异常特征日志里的表现基本可以判定
单一IP高频访问同一个IP 1分钟内请求200+次,间隔极短采集器
UA伪装蜘蛛UA写"Baiduspider"但IP来自云厂商机房假蜘蛛
只GET不请求静态资源只访问HTML页面,从不加载CSS/JS/图片采集器
URL遍历式访问按ID递增 /article/1 → /article/2 → /article/3…批量采集
Referer为空或固定所有请求都没有Referer,或者全是同一个可疑

一个关键认知:真百度蜘蛛的IP可以反向DNS解析到 *.baidu.com 或 *.baidu.jp,而且它会正常请求CSS/JS/图片。如果你的日志里"Baiduspider"只GET了HTML页面、IP反解出来是阿里云/腾讯云/华为云,那100%是采集器在冒充。

二、Nginx层——第一道防线,免费但最灵活

Nginx是你最直接能控制的一层,不需要装任何额外软件,改几行配置就能拦住一大半低端采集器。

先说UA黑名单。在nginx.conf的server块里加这段:

# 阻断常见采集工具UAif ($http_user_agent ~* (Scrapy|HttpClient|okhttp|Python-urllib|Go-http-client|curl|wget|WinHttp|Java|Apache-HttpClient)) {return 403;}

再配频率限制。用limit_req模块限制单IP请求速率:

# http块中定义限流区域:10MB内存,每秒10个请求limit_req_zone $binary_remote_addr zone=antiscrape:10m rate=10r/s;# server块中应用location / {limit_req zone=antiscrape burst=20 nodelay;# burst=20:允许瞬间20个突发请求# nodelay:超出rate的请求直接返回503,不排队}

rate设多少合适?

正常用户浏览网页,一秒最多点2-3个页面。设10r/s已经很宽容了——如果一个IP一秒请求10个以上不同页面,它一定不是人在操作。如果你的站页面比较多,可以放宽到20r/s,但不要低于5r/s,否则移动端快速滑动可能会误触发。

最后是防盗链。如果采集器直接引用你的图片URL,等于你出带宽帮别人展示内容:

location ~* \.(jpg|jpeg|png|gif|webp|svg)$ {valid_referers none blocked *.yourdomain.com *.baidu.com *.google.com;if ($invalid_referer) {return 403;}}

Nginx方案的优点:零成本、不占额外资源、配置直接生效。缺点也很明显:对分布式IP采集(代理池轮换)效果有限,而且十几个站一个一个去改Nginx配置,改完还要reload,想想就头疼。

三、Cloudflare——免费用到位的CDN层防护

如果你的站已经套了Cloudflare,免费版自带的Bot管理功能其实已经很能打了,只是很多人只开了DNS解析,压根没去配置。

2 - 网站防采集四工具联合布防实战Nginx加Cloudflare加雷池WAF加宝塔防火墙配好了拦得住九成假爬虫:假百度蜘蛛真采集器顶着Baiduspider的User-Agent从阿里云杭州ECS每天爬几万页把服务器CPU长年顶满网站打开速度从1.2秒掉到8秒多 - UC建站系统

Bot Fight Mode(免费)

一键开启,Cloudflare自动识别并拦截已知爬虫。基于全球请求指纹库,准确率高,对正常用户几乎无影响。在Security → Bots页面直接打开即可。

WAF自定义规则(免费)

免费版有5条自定义WAF规则。可以设:特定UA→JS挑战、特定国家IP→阻止、特定URL路径→频率限制。5条够一个站精打细算地用。

Rate Limiting(免费)

免费版包含1条速率限制规则。设"同一IP 10秒内请求超过50次→JS挑战",成本几乎为零的防CC/防采集手段。

Cloudflare真正狠的地方是它的五秒盾(JS Challenge)。当一个请求被标记为可疑时,CF会给客户端注入一段JS,浏览器必须执行完这段JS才能拿到真实页面内容。采集器通常是一个简单的HTTP客户端(Python requests、curl等),没有JS执行能力,直接卡死在五秒盾上。

不过有一个关键问题:五秒盾会误伤搜索引擎蜘蛛。Googlebot和百度蜘蛛虽然能执行部分JS,但五秒盾会显著拖慢它们的抓取速度,甚至导致抓取失败。所以五秒盾的正确用法不是全局开,而是配合WAF规则按条件触发——比如UA包含"Python"或请求频率异常的IP才弹出JS挑战,正常用户和搜索蜘蛛走绿色通道。

多站管理提示:Cloudflare免费版一个账号可以添加不限数量的域名,但免费版每个域名的WAF规则是独立的。如果你有10个站,每个站都要单独配5条规则,工作量不小。Cloudflare的API可以批量操作,但需要一定的脚本能力。或者直接用它的Terraform Provider,一个配置文件批量下发到所有域名。

四、雷池WAF——开源免费的应用层深度检测

Nginx和Cloudflare解决的是网络层和CDN层的防护,但有些采集器的行为伪装得非常好——UA正常、IP分散、频率不高,就是慢慢悠悠地把你全站内容全部拖走。这时候需要应用层的深度检测。

长亭科技的雷池(SafeLine)是目前社区口碑最好的开源WAF之一,社区版完全免费,Docker一键部署。它的反爬虫模块有几个独特能力:

能力原理对付什么类型的采集
动态JS挑战注入动态加密JS,要求客户端计算后返回tokenPython脚本、火车头、各类采集器
人机识别分析鼠标轨迹、键盘事件、页面停留时间Headless浏览器采集
频率限制按IP/UA/路径多维度的速率控制代理池轮换的分布式采集
语义分析分析请求序列模式,识别自动化行为特征高级定制爬虫

雷池的部署方式是把WAF放在用户和源站之间做反向代理,流量先经过雷池检测,合法的才转发给后端。对源站零侵入,不需要改任何代码。

雷池的一个隐藏用法——污染采集数据

当你确认某个IP或IP段在采集你之后,不一定要直接封禁(封了它会换IP)。可以在雷池里配置:对这个IP段返回随机乱序的内容——把文章段落打乱、插入无意义字符、替换关键数据。采集器会把垃圾内容采回去,对方网站展示的就是一堆没法看的东西。这比单纯封IP有效得多,因为对方往往不会立刻发现内容有问题,等到发现的时候已经采了几千条了。

五、宝塔Nginx防火墙——最省事的单站/少量站方案

如果你用的是宝塔面板,直接装Nginx防火墙插件是最快的路径。虽然官方版收费(月付几十块),但第三方免费版(软件商店搜"Nginx免费防火墙")对个人站长和中小站点来说足够用了。

3 - 网站防采集四工具联合布防实战Nginx加Cloudflare加雷池WAF加宝塔防火墙配好了拦得住九成假爬虫:假百度蜘蛛真采集器顶着Baiduspider的User-Agent从阿里云杭州ECS每天爬几万页把服务器CPU长年顶满网站打开速度从1.2秒掉到8秒多 - UC建站系统

宝塔防火墙的核心优势是图形化管理——不用手写Nginx配置,不用SSH连服务器,直接在面板里点几下就能配好:

CC攻击防护

设置单IP在指定周期内的最大请求数,超出自动封禁。支持设置封禁时长(1分钟到永久),自动解封。

UA黑白名单

可视化管理UA规则,支持正则匹配。可以批量导入常见的采集器UA库,一键启用。

恶意IP封锁

自动同步恶意IP库,也支持手动添加。封锁记录一目了然,哪个IP被封、封了多久、因为什么被封。

防盗链

设置允许的Referer域名白名单,防止图片、视频、文件被外部直接引用消耗带宽。

宝塔方案的局限在于跨服务器管理。如果你多个站在同一台服务器上,宝塔防火墙可以统一管理;但如果分布在多台服务器上,就需要每台都装一遍,每台都单独配置。站点多了之后,维护成本会成倍上升。

六、四层防线怎么搭,看站点数量和预算

工具都介绍完了,具体怎么组合,取决于你管了多少个站、愿意花多少钱、有多少技术人手。

场景推荐组合月成本防护效果
1-3个站,个人博客/小企业站宝塔Nginx防火墙 + Nginx limit_req0元(用免费版)★★★★☆
3-10个站,有预算Cloudflare(免费版)+ 雷池WAF服务器费用(跑雷池Docker)★★★★★
10-30个站,需要批量管理Cloudflare(Pro/API批量)+ 雷池WAF + Nginx统一配置CF Pro $20/月 + 服务器★★★★★
30个站以上统一WAF集群 + 自动化运维脚本 + 集中日志分析视规模而定★★★★★

批量管理的核心思路:

不管是10个站还是100个站,防采集的配置逻辑是一样的——UA黑名单、频率限制、防盗链、蜘蛛白名单。区别在于手工改一个站的配置和批量下发到所有站。如果用的是UC建站系统这种统一管理平台,多站看板里可以直接看到每个站的异常流量告警,哪个站被采集了第一时间知道,不用每天翻日志。独立部署的架构也让每个站的防护配置互不影响——一个站被盯上了,其他站不会受牵连。

七、五个容易踩的坑,绕过去了才算真防住

工具配好了不代表万事大吉,有些坑踩过一次才知道有多难受。

现象怎么避免
误封搜索引擎蜘蛛百度/Google抓取失败,收录暴跌所有规则里把真蜘蛛IP白名单放在最前面
频率限制设太狠正常用户打开多页面被503rate不要低于5r/s,burst留20-50的缓冲
五秒盾全局开启移动端用户体验极差,跳出率飙升只对可疑IP/UA触发,不要全局开
只封IP不分析日志采集器换IP继续采,你一直在打地鼠封IP之前先分析:哪个页面被采最多、什么时间段、什么UA
多个站配置不一致有的站防了有的没防,被采的那个拖垮整台服务器用配置管理工具统一分发,或者用一个看板统一监控

还有一点很多人忽略:采集器和你的防护措施永远在猫鼠游戏。你今天封了Scrapy的UA,他明天换个requests库;你今天加了五秒盾,他后天换个带JS引擎的Playwright。所以防采集不是一次性配置完就完事了,要定期看日志、定期更新规则、定期调整策略。

一个实用的节奏:每周拉一次Nginx access.log的TOP20 IP和TOP20 UA,花5分钟扫一眼。你会发现有些IP慢慢在试探你的底线——先是一分钟几个请求,然后是十几个,然后是上百个。在它火力全开之前发现并封掉,比等它采了几万条再封,效果好一百倍。


说穿了,防采集这件事不复杂。日志看清谁在搞你→Nginx设好基本规则→CF/CDN挡住大批量→WAF做深度检测→统一管理所有站点。四层防线搭好,90%的采集器在第二层之前就倒下了。剩下的10%是高级货,它们会用代理池、会模拟真人行为、会慢慢磨——但那需要极高的成本,一个普通的内容站不值得对方投入这么多。所以大多数情况下,把基础的做好就足够了。

不过有一点别忘了:防采集的同时别把自己也防了。蜘蛛白名单、频率限制别太狠、五秒盾别乱开——每一条规则上线之前,先拿百度站长平台的抓取诊断跑一遍,确认没把真蜘蛛挡住,再把规则正式生效。

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录