Защита от ботов на Laravel
Для самописного приложения есть два способа подключения, и выбор зависит от того, нужен ли вам доступ к решению внутри кода.
7 дней наблюдения без блокировок; платную защиту можно включить сразу после оплаты. Тарифы и лимиты
Что обычно болит на Laravel
- Перебор паролей и токенов на маршрутах авторизации
- Выкачивание данных через публичный API
- Спам через формы и публичные эндпоинты
- Нагрузка от парсеров на тяжёлые страницы
Как подключить
-
1
Способ первый: до фреймворка
Вызов в public/index.php до подключения автозагрузчика. Бот не дойдёт ни до маршрутизации, ни до контейнера — экономия максимальная. Ключи — со страницы сайта в кабинете: .env и функция env() здесь ещё недоступны.
<?php // public/index.php if (is_file(__DIR__ . '/../botban/botban.php')) { try { require_once __DIR__ . '/../botban/botban.php'; BotBan::protect('bb_pk_...', 'bb_sk_...'); } catch (\Throwable $e) { // Сбой модуля — сайт работает без защиты. } } require __DIR__ . '/../vendor/autoload.php'; -
2
Способ второй: middleware
Для приложений под Octane, RoadRunner, Swoole или FrankenPHP. Там index.php выполняется один раз при запуске воркера, а не на каждый запрос. Метод BotBan::check() из модуля 1.4.11 ничего не выводит сам и возвращает ответ: middleware отдаёт его вместо страницы или пропускает запрос дальше. Готовый класс приведён в базе знаний, в статье о подключении PHP-модуля.
-
3
Исключите служебные маршруты
Вебхуки платёжных систем, health-check и очереди добавьте в белый список путей.
На что обратить внимание
Первый способ быстрее
Он отсекает бота до загрузки фреймворка. Разница на тяжёлом приложении заметная: не выполняются провайдеры, не поднимается соединение с базой.
За балансировщиком включите доверие к прокси
Иначе все посетители будут выглядеть одним адресом. Параметр trusted_proxies в вызове protect().
Какие задачи закрывает подключение
Модуль один, задач несколько: что именно он останавливает на сайте под Laravel.