网站被恶意采集(内容爬虫/镜像站/数据抓取)是很多网站都会遇到的问题,完全杜绝很难,但可以通过技术+策略组合大幅降低被采集的效率和价值。下面给你一套比较有效、常见的防治方案:


一、服务器层防护(最有效)

1. 限制高频访问(Rate Limit)

恶意采集通常会短时间大量请求。

常见做法:

  • Nginx 限速

  • IP访问频率限制

Nginx示例:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

location / {
    limit_req zone=one burst=5 nodelay;
}

效果:

  • 同一IP每秒最多1次请求

  • 爬虫效率大幅下降


2. 封禁恶意IP

通过日志分析爬虫IP并封禁

工具:

  • fail2ban

  • nginx deny

  • Cloudflare WAF

例如:

deny 1.2.3.4;

自动封禁策略:

  • 1分钟访问 >100次

  • 自动加入黑名单


3. 使用CDN防爬

推荐CDN:

  • Cloudflare

  • 阿里云CDN

  • 腾讯云CDN

功能:

  • Bot识别

  • WAF规则

  • JS Challenge

  • 人机验证

例如:

  • Cloudflare Bot Fight Mode

效果非常好。


二、反爬虫技术(网站层)

4. 动态内容加载

让HTML没有完整内容。

方法:

  • AJAX加载

  • API请求数据

例如:

页面HTML只有框架 内容通过接口加载

爬虫难度增加。


5. JS加密接口

接口参数加密

例如:

/api/article?id=123&token=xxxx

token由JS生成

没有JS运行环境爬虫很难拿到数据。


6. 签名验证

接口需要签名:

sign = md5(id + timestamp + secret)

没有算法很难调用。


三、识别爬虫行为

7. User-Agent识别

很多采集器UA明显

例如:

python
scrapy
curl
wget

Nginx拦截:

if ($http_user_agent ~* (python|scrapy|curl|wget)) {
    return 403;
}

注意: 高级爬虫会伪装UA。


8. 无Referer拦截

采集器很多没有referer。

if ($http_referer = "") {
    return 403;
}

四、蜜罐反爬(很有效)

9. 隐藏链接(honeypot)

页面放隐藏链接:

<a href="/trap" style="display:none">test</a>

正常用户看不到 爬虫会抓

访问 /trap 的IP直接封。


五、内容防复制

10. 图片水印

给图片加水印。

11. 内容混淆

例如:

AI → A I

或者:

关键词 → 图片

采集内容质量下降。


六、版权保护

12. DMCA投诉

如果被镜像站:

可以投诉

  • Cloudflare

  • Google

  • Hosting provider

让搜索引擎删除收录。


七、SEO反采集策略

13. 主动提交搜索引擎

让搜索引擎优先收录你的网站。

工具:

  • Google Search Console

  • 百度站长平台

避免采集站排名高于原站。


八、最强方案(推荐组合)

实际防采集建议组合:

CDN + WAF + 接口签名 + 限速 + 蜜罐

具体组合:

1️⃣ Cloudflare Bot防护 

2️⃣ Nginx限速 

3️⃣ API签名 

4️⃣ 隐藏蜜罐链接 

5️⃣ 自动封IP

基本能防住 90%采集器


九、常见无效防护(很多人误用)

这些基本没用:

  • 禁止右键

  • 禁止复制

  • JS混淆

  • HTML加密

  • robots.txt

爬虫完全可以绕过。


十、如果采集非常严重(高级方案)

可以做:

行为识别反爬

检测:

  • 鼠标轨迹

  • 页面停留时间

  • 滚动行为

  • JS执行

没有行为直接封。

很多大网站用这种。