警告:以下内容仅为个人日记,不能作为真实项目解决办法,无任何商业项目参考意义
被瞬间注册大量用户
关闭服务器
修改安全组,做好限制
重启服务器
重启服务
删除脏数据
按时间降序排序(若网站已大规模投入使用请注意真实用户的注册)
这里演示的已经是清理完脏数据的截图
清理脏文章数据
这个Out of sort memory是因为tb_article(文章表)里的数据量太大了,Adminer 想按时间排序但内存不够用了。
文章表也被机器人疯狂灌入了大量垃圾文章。现在服务器虽然能跑,但数据库已经被撑得很大了。
不通过网页界面操作,直接用SQL 命令来清理
第一步:先看看文章表里到底有多少数据
在左侧菜单点击「SQL命令」,然后输入并执行这条语句:
sql SELECT COUNT(*) FROM tb_article;
第二步:看看机器人发的文章有什么特征
sql SELECT id, user_id, title, create_time FROM tb_article ORDER BY create_time DESC LIMIT 20;
DESCRIBE tb_article;
SELECT id, title, author_id, author_name, create_time FROM tb_article ORDER BY id DESC LIMIT 20;
DELETE FROM tb_article WHERE author_id = 32;
DELETE FROM tb_article_like WHERE article_id IN (SELECT id FROM tb_article WHERE author_id = 32);
DELETE FROM tb_article_collect WHERE article_id IN (SELECT id FROM tb_article WHERE author_id = 32);
SELECT COUNT(*) FROM user;
SELECT id, nickname, create_time FROM user ORDER BY create_time DESC LIMIT 20;
DELETE FROM tb_article WHERE title REGEXP '^[a-zA-Z0-9]{8,}$';
网站正常访问了
(必做):在 1Panel 开启 WAF 频率限制
这是挡机器人最直接的方式,不用改代码。
1Panel 左侧菜单 →「网站」→ 点击你的站点
penquan.icu。
# ---- 防机器人限流配置开始 ---- limit_req_zone $binary_remote_addr zone=penquan_req:10m rate=100r/m; limit_conn_zone $binary_remote_addr zone=penquan_conn:10m; limit_req zone=penquan_req burst=50 nodelay; limit_conn penquan_conn 20; limit_req_status 429; limit_conn_status 429; # ---- 防机器人限流配置结束 ----找到「WAF」或「安全」选项卡。
开启总开关
找到「频率限制」(或 CC 防护),设置:
周期:
60 秒单 IP 请求上限:
100 次封禁时长:
600 秒(10 分钟)
如果有「恶意 User-Agent」或「机器人拦截」选项,一并打开。
保存。
这一步能拦住 90% 的简单脚本机器人。