Содержание
Защита от ботов строится слоями: простые ловушки и проверки в формах отсекают большинство примитивных ботов, ограничение частоты запросов не даёт делать массовые действия, а невидимая проверка поведения и капча включаются только для подозрительных посетителей. Цель — сделать злоупотребление дорогим, не мешая настоящим людям.
Разберём, какой вред приносят боты, как защитить формы и регистрации, как бороться с накруткой SMS и парсингом и как не заблокировать своих пользователей.
Какой вред наносят боты?
Значительная часть трафика любого публичного сайта — автоматическая. Часть ботов полезна — поисковые роботы, мониторинг, — но остальные создают прямые расходы и риски.
- спам в формах — менеджеры тратят время на мусорные заявки;
- фейковые регистрации — засоряют базу и искажают аналитику;
- накрутка SMS — боты запрашивают коды на платные номера, а вы оплачиваете рассылку;
- подбор паролей — перебор утёкших пар «почта — пароль»;
- парсинг — конкуренты выгружают цены и каталог, создавая нагрузку;
- скупка — боты выкупают ограниченный товар или билеты раньше людей.
Как защитить формы без раздражающей капчи?
Формы обратной связи и заявки защищают сначала незаметными для человека проверками. Они отсекают большую часть примитивного спама, не добавляя людям ни одного действия.
| Метод | Как работает | Что отсекает |
|---|---|---|
| Скрытое поле (honeypot) | Поле невидимо для людей, боты его заполняют | Простых ботов |
| Время заполнения | Форма отправлена через 1 секунду после загрузки | Скрипты без браузера |
| Токен формы | Одноразовый токен, выданный при загрузке страницы | Прямые запросы без загрузки страницы |
| Ограничение частоты | Не больше N заявок с адреса и устройства | Массовую отправку |
| Невидимая проверка | Анализ поведения и браузера | Более продвинутых ботов |
| Видимая капча | Задача для человека | Остатки — только для подозрительных |
public function store(LeadRequest $request)
{
$shownAt = $request->session()->get('form_shown_at');
$tooFast = $shownAt === null || $shownAt->diffInSeconds(now()) < 3;
// Скрытое поле заполнено или форма отправлена слишком быстро — молча принимаем и не сохраняем
if ($request->filled('website') || $tooFast) {
return response()->json(['ok' => true]);
}
Lead::create($request->validated());
return response()->json(['ok' => true]);
}
Фото: Unsplash
Как бороться с накруткой SMS и фейковыми регистрациями?
Накрутка SMS — когда боты массово запрашивают коды подтверждения на номера, с которых злоумышленники получают долю от оплаты. Счёт за такую атаку может составить сотни тысяч рублей за ночь, поэтому SMS защищают особенно тщательно.
- Ограничьте отправку: один код в минуту на номер, небольшой дневной лимит на номер, IP и устройство.
- Ограничьте страны и диапазоны номеров, если ваша аудитория в одной стране.
- Показывайте невидимую проверку перед отправкой кода.
- Настройте оповещение о резком росте отправок и дневной лимит расходов у SMS-провайдера.
- Используйте более дешёвые каналы, где возможно: код в мессенджере, на почту или passkeys — подробнее в статье двухфакторная аутентификация и passkeys.
Как ограничить парсинг?
Полностью запретить парсинг невозможно, но можно сделать его медленным и дорогим. Обычно сочетают ограничение частоты запросов, обнаружение нетипичного поведения и закрытие части данных за авторизацией.
- ограничение частоты запросов к каталогу и API — подробнее в статье rate limiting;
- сервис защиты от ботов на уровне CDN — статья CDN: как работает;
- блокировка дата-центров и прокси, с которых не приходят реальные покупатели;
- оптовые цены и остатки — только для авторизованных клиентов;
- мониторинг аномалий: тысячи страниц каталога подряд без единого действия.
Как не заблокировать настоящих пользователей?
Любая защита даёт ложные срабатывания: за одним IP может быть офис или мобильный оператор, а у части людей отключён JavaScript или стоят блокировщики. Поэтому вместо жёсткой блокировки лучше усиливать проверку по шагам и следить за последствиями.
- сначала невидимая проверка, видимая капча — только при подозрении, блокировка — в крайнем случае;
- исключите поисковых роботов, проверяя их по обратному DNS;
- следите за конверсией форм и регистраций после включения защиты;
- дайте пользователю понятный способ связаться, если его заблокировали.
О других уязвимостях — статья OWASP Top 10 простыми словами.
Коротко
- Боты спамят, регистрируют фейки, накручивают SMS, подбирают пароли и парсят данные.
- Формы защищайте сначала незаметно: скрытое поле, время заполнения, токен, лимиты.
- SMS защищайте строже всего: лимиты по номеру и устройству, страны, лимит расходов.
- Парсинг не запретить, но можно сделать дорогим.
- Усиливайте проверку постепенно и следите, чтобы не страдала конверсия.
Частые вопросы
Капча вредит конверсии?
Видимая капча с выбором картинок заметно снижает конверсию форм. Современные невидимые проверки почти не мешают людям, поэтому видимую задачу стоит показывать только подозрительным посетителям.
Можно ли полностью защититься от парсинга?
Нет: всё, что видит пользователь, можно скопировать. Цель — сделать массовый парсинг дорогим и медленным: лимиты, обнаружение ботов, отдача части данных только авторизованным пользователям.
Не заблокируем ли мы поисковых роботов?
Не заблокируете, если исключить известных поисковых роботов, проверяя их по обратному DNS, а не по заголовку User-Agent, который легко подделать. Сервисы защиты от ботов обычно делают это сами.



