Yandex Metrika
sanches.free

Антибот без видимой капчи: таймер, AJAX и скрытые поля в обработчике формы

Разбор задачи

Бот часто отправляет форму быстрее человека и не выполняет реальный клиентский сценарий. Комбинируют скрытый декой-инпут, минимальный интервал между открытием страницы и отправкой и отдельный токен, который браузер подставляет после лёгкого клиентского шага.

Минимальный серверный каркас

На входе сохраните метку времени первого показа и сравните дельту; пустые «ловушечные» поля должны оставаться незаполненными.

<?php
declare(strict_types=1);

function form_signature_ok(?string $postedHoney, float $postedAt): bool {
    if ($postedHoney !== '') {
        return false;
    }
    $now = microtime(true);
    return $postedAt > 0 && ($now - $postedAt) >= 2.5;
}
?>

Для Битрикс логичнее вешать фильтры на отправку формы веб‑форм или свой обработчик: не дублируйте валидацию в шаблоне и в модуле, оставьте одну точку истины на сервере.

Замечания перед выкладкой

Вносите правки только через среду с бэкапом и понятным diff. Жёсткие лимиты по времени отсекут пользователей с медленными сетями — смягчайте пороги и логируйте ложные срабатывания отдельно от пользовательских ошибок.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии