PHP-скрипт для защиты от парсинга и ботов
PHP-скрипт для защиты от парсинга и ботов. Скрипт позволяет произвести подсчет количества действий или запросов пользователя и заблокировать его на определенное время при достижении заданного количества.
Например, если пользователь больше 5 раз входил на страницу, то вы можете вывести ему сообщение, либо заблокировать доступ на страницу в течении 24 часов.
Проверка осуществляется по IP пользователя (дополнительно можно включить проверку по user-agent).
Требования
На вашем сервере должны быть установлено:
- Redis >=3
- PHP >=7.0
Количество действий пользователя хранится к Redis, поэтому убедитесь, что он установлен на вашем сервере или компьютере.
Использование
Проверка осуществляется по IP пользователя (дополнительно можно включить проверку по user-agent).
Параметры, которые можно передать в класс:
- host, адрес подключения к Redis (по умолчанию, localhost).
- maxCallsLimit, количество действий (по умолчанию, 5 попыток).
- timePeriod, время блокировки в секундах (по умолчанию, 86400 - 24 часа).
- userAgent, дополнительно проверять по параметру user-agent браузера пользователя.
Пример 1
Если пользователь посетил страницу больше 10 раз, то отдаем странице код 429 и блокируем дальнейшие действия пользователя на 24 часов.
$rateLimit = new RateLimitingService([
'maxCallsLimit' => 10,
'timePeriod' => 86400
]);
if (!$rateLimit->check()) {
http_response_code(429);
exit();
}
Пример 2
Блокируем действия пользователя и показываем сколько раз он совершил действие.
$rateLimit = new RateLimitingService([
'maxCallsLimit' => 10,
'timePeriod' => 86400
]);
if (!$rateLimit->check()) {
echo "Вы уже отправили форму ${$rateLimit->total()} раз!";
}