test: 添加防爆破保护测试脚本
使用方法: ./test_rate_limit.sh 功能: - 自动测试登录防爆破保护 - 连续5次错误登录 - 第6次应返回封锁提示
This commit is contained in:
47
test_rate_limit.sh
Normal file
47
test_rate_limit.sh
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 防爆破保护测试脚本
|
||||||
|
|
||||||
|
API_BASE="http://localhost:40001"
|
||||||
|
|
||||||
|
echo "========================================"
|
||||||
|
echo " 玩玩云防爆破保护测试"
|
||||||
|
echo "========================================"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 测试1: 登录限流
|
||||||
|
echo "📝 测试1: 登录防爆破保护"
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "连续5次错误登录,第6次应被封锁..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
for i in {1..6}; do
|
||||||
|
echo "第 $i 次尝试:"
|
||||||
|
RESPONSE=$(curl -s -X POST "$API_BASE/api/login" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"username":"admin","password":"wrongpassword123"}')
|
||||||
|
|
||||||
|
SUCCESS=$(echo $RESPONSE | grep -o '"success":[^,}]*' | cut -d':' -f2)
|
||||||
|
MESSAGE=$(echo $RESPONSE | grep -o '"message":"[^"]*"' | cut -d'"' -f4)
|
||||||
|
BLOCKED=$(echo $RESPONSE | grep -o '"blocked":[^,}]*' | cut -d':' -f2)
|
||||||
|
|
||||||
|
if [ "$BLOCKED" == "true" ]; then
|
||||||
|
echo " ✅ 已被封锁: $MESSAGE"
|
||||||
|
echo " 状态: SUCCESS=$SUCCESS, BLOCKED=$BLOCKED"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo " ❌ 登录失败: $MESSAGE"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "========================================"
|
||||||
|
echo "测试完成!"
|
||||||
|
echo "========================================"
|
||||||
|
echo ""
|
||||||
|
echo "💡 提示:"
|
||||||
|
echo "1. 如果第6次显示'已被封锁',说明防爆破保护正常工作"
|
||||||
|
echo "2. 封锁时长为30分钟"
|
||||||
|
echo "3. 可以查看后端日志确认: pm2 logs vue-driven-cloud-storage-backend"
|
||||||
Reference in New Issue
Block a user