实战分享:我用Nginx这几招,让镜像站彻底凉凉
大家好,我是33blog的站长。上周发现有个镜像站原封不动扒走了我所有内容,连CSS样式都没改,气得我当场血压飙升。今天就把我研究的Nginx反镜像方案分享给大家,亲测有效!
1. 识别镜像请求的特征
首先得知道镜像站是怎么偷内容的。通过分析日志,我发现这些请求有两个明显特征:
- User-Agent里常带”bot”、”spider”等关键词
- Referer直接显示镜像站的域名
有次甚至看到对方用wget -mirror
这种粗暴方式抓取,真是毫不掩饰…
2. 基础防护:禁止特定User-Agent
在Nginx配置里加上这段,常见的爬虫工具就废了:
if ($http_user_agent ~* (wget|curl|httrack|webzip|sitegrabber|leechftp)) {
return 403;
}
注意:有些正规爬虫(比如Googlebot)也会被误伤,需要额外加白名单。
3. 高级防御:Referer校验大法
这是我用得最爽的配置,直接阻断非本站来源的请求:
valid_referers none blocked *.33blog.me 33blog.me;
if ($invalid_referer) {
return 403;
}
有个坑要注意:某些CDN或代理服务可能不带Referer,记得把合法来源加进valid_referers
。
4. 动态内容干扰策略
我在WordPress里加了这段代码,当检测到可疑请求时:
location ~ .php$ {
fastcgi_param HTTP_IS_MIRROR $invalid_referer;
}
然后PHP端根据这个参数,可以:
- 返回假数据
- 插入”这是盗版内容”水印
- 限流降速(折磨对方的服务器)
5. 终极杀招:IP黑名单自动更新
写了个脚本每天同步公开的恶意IP库:
include /etc/nginx/conf.d/blockips.conf;
# 文件内容示例:
deny 123.123.123.123;
deny 111.222.0.0/16;
配合Fail2Ban还能自动封禁频繁请求的IP,效果拔群!
6. 别忘了监控和日志
最后提醒大家,在nginx.conf
里加上:
log_format anti_mirror '$remote_addr - $invalid_referer';
access_log /var/log/nginx/mirror.log anti_mirror if=$invalid_referer;
这样所有可疑请求都无所遁形,还能统计攻击趋势。
经过这套组合拳,那个镜像站三天后就停止抓取了。如果你们有更好的方法,欢迎在评论区交流~ 下次我准备写《如何用Cloudflare防火墙对付CC攻击》,感兴趣的话记得订阅!
这个Nginx配置太实用了,我也遇到过类似问题,直接用上试试 😊