设为首页
收藏本站
切换到宽版
门户
Portal
社区
BBS
站长
开发
运维
资源
游戏
产品
登录
立即注册
随客社区
»
社区
›
交流大厅
›
运维联盟
›
【脚本分享】自动检测并封禁恶意爬虫(基于 Nginx 日志 ...
返回列表
发布新帖
查看:
42
|
回复:
0
【脚本分享】自动检测并封禁恶意爬虫(基于 Nginx 日志)
傲来云
傲来云
当前离线
UID
13
星火
贡献
奖金
发表于 2025-6-18 15:06:39
|
查看全部
|
阅读模式
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
随着越来越多的网站上线,不少站长发现,“带宽用得飞快,访问记录全是非人类”——这些基本都是恶意爬虫在搞鬼。
本篇分享一个我自己平时在服务器用的小脚本,用来“分析 Nginx access.log,自动找出高频 IP 并通过防火墙封禁”。部署简单、效果立竿见影。
脚本原理简介:
统计一分钟内请求数最多的 IP
排除常见搜索引擎蜘蛛
超过阈值的 IP 自动封禁(firewalld)
脚本内容(适配 CentOS 7/8、Nginx 日志默认格式)
#!/bin/bash
# 配置项
LOG_FILE="/www/wwwlogs/yourdomain.com_access.log"
WHITELIST="baidu|google|bing|yisouspider|sogou"
THRESHOLD=100 # 每分钟请求次数阈值
BAN_TIME=3600 # 封禁时长,单位秒
TMP_FILE="/tmp/bad_ips.txt"
# 统计最近1分钟的访问记录
tail -n 10000 "$LOG_FILE" | grep "$(date +"%d/%b/%Y:%H:%M" -d "1 minute ago")" | awk '{print $1}' | sort | uniq -c | sort -nr > "$TMP_FILE"
while read line; do
count=$(echo $line | awk '{print $1}')
ip=$(echo $line | awk '{print $2}')
# 排除常见搜索引擎
UA=$(grep "$ip" "$LOG_FILE" | tail -n 1 | grep -Eio "$WHITELIST")
if [[ -n "$UA" ]]; then
continue
fi
if [[ $count -gt $THRESHOLD ]]; then
echo "发现恶意IP:$ip,请求数:$count,已封禁"
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$ip' reject"
fi
done < "$TMP_FILE"
# 重载防火墙规则
firewall-cmd --reload
复制代码
使用方式:
1. 将上述脚本保存为 `/usr/local/bin/ban_bad_bot.sh`
2. 赋予执行权限:
chmod +x /usr/local/bin/ban_bad_bot.sh
复制代码
3. 添加定时任务(每分钟执行一次):
crontab -e
复制代码
添加:
* * * * * /usr/local/bin/ban_bad_bot.sh >> /var/log/ban_bot.log 2>&1
复制代码
效果参考:
脚本会自动根据日志检测“异常高频访问的 IP”,并通过 `firewalld` 添加拒绝访问规则。你可以在:
firewall-cmd --list-all
复制代码
看到已经封禁的 IP。
温馨提醒:
如果你用的是 “宝塔面板”,也可以把该脚本加入“计划任务”中,设为每分钟执行一次。
不推荐在高峰期将阈值设置过低,避免误封正常用户。
封禁方式也可以换成 `iptables` 或 `fail2ban` 配合使用。
总结
这是一个简单实用的小脚本,适合中小网站定时防护用。你也可以在日志中加入 UA 筛选、路径过滤等进一步优化。
如果你还用过更高级的方法,比如接入 WAF、结合 CDN 限频,也欢迎在评论区交流。
回复
举报
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速入口
社区门户
社区首页
随客云计算
重要文档
社区规则
官方公告
关于我们
团队介绍
产品合集
联系我们
532352
028-67879779
tech@isuike.com
Copyright © 2001-2025
Suike Tech
All Rights Reserved.
随客交流社区 (备案号:
津ICP备19010126号
)
|
Processed in 0.108695 second(s), 7 queries , Gzip On, MemCached On.
关灯
在本版发帖
返回顶部
快速回复
返回顶部
返回列表