Перейти к содержимому
FFormhook
Назад к блогу

Блог

Альтернативы reCAPTCHA для контактных форм (без Google)

· 3 мин чтения

Введите в поиске «как остановить спам в контактной форме», и Google reCAPTCHA - первое, за что все хватаются: это бесплатно, это готовый виджет, а чекбокс «Я не робот» настолько привычен, что его никто не подвергает сомнению. Но разумные решения по умолчанию иногда стоит пересмотреть, и reCAPTCHA - хороший кандидат: это не единственный вариант, и для многих сайтов он не самый подходящий.

Настоящие причины пересмотреть выбор

reCAPTCHA - это сторонний скрипт Google, и это влечёт последствия, выходящие за рамки «просто работает»:

  • Приватность и согласие. reCAPTCHA устанавливает cookie и отправляет данные посетителя в Google для оценки риска. Для посетителей из ЕС это поднимает реальные вопросы о согласии по GDPR - контактная форма это как раз то низкотрение взаимодействие, которое не должно требовать баннера о cookie только ради загрузки спам-фильтра.
  • Ещё один блокирующий рендер скрипт. Это ещё один внешний запрос в критическом пути страницы, единственная задача которой - быстро загрузиться и дать человеку напечатать сообщение.
  • Трение для реальных людей. Любой, кто пользуется VPN, приватным браузером или защитой от отслеживания, не раз натыкался на задание «выберите все светофоры». Это реальный посетитель, который чуть не отказался от отправки.
  • Общее нежелание давать Google ещё один рычаг на вашем сайте. Многие разработчики просто не хотят, чтобы браузер каждого посетителя связывался с Google, прежде чем отправить сообщение - это самостоятельная и обоснованная позиция, независимо от вопросов приватности.

Альтернатива 1: невидимое honeypot-поле

Скрытое поле, которое реальные посетители никогда не видят и никогда не заполняют, но которое простые боты послушно заполняют, потому что оно просто присутствует в разметке. Если оно приходит непустым, отправка - спам: отбросьте её, не показывая никому никакой проверки. Ноль сторонних скриптов, ноль трения, и оно незаметно отсекает подавляющее большинство спама в формах, который в основном идёт от тупых краулеров, а не от чего-то изощрённого. (Полные детали реализации, включая точную разметку и нюансы доступности, - в нашем подробном разборе защиты от спама.)

Альтернатива 2: ограничение частоты запросов

Honeypot не остановит бота, который отправляет POST с внешне валидными данными сотни раз в минуту, - а лимит по IP и по форме на принимающем эндпоинте остановит. Реальный посетитель никогда не отправляет одну и ту же контактную форму десять раз за минуту, так что при троттлинге ничего ценного не теряется, а сам метод не требует ни виджета, ни cookie, ни какого-либо решения от человека, заполняющего форму.

Альтернатива 3: Cloudflare Turnstile, когда проверка действительно нужна

Иногда форма привлекает более умных ботов - headless-браузеры, которые рендерят CSS и полностью обходят honeypot, - и тогда проверка окупает свою небольшую цену в конверсии. Cloudflare Turnstile - это версия такой проверки, уважающая приватность: она подтверждает посетителя через сигналы браузера, а не через отслеживающие cookie, обычно проходит незаметно и вообще не пропускает взаимодействие через Google. Это та же задача, что решает reCAPTCHA, только без тех частей, к которым есть претензии.

Комбинируйте их - и будьте честны насчёт ограничений

Ни один из этих методов не защищает от ботов на сто процентов, включая Turnstile. Реалистичный ответ одинаков для любой формы: сначала honeypot, под ним ограничение частоты запросов, а проверку добавляйте только тогда, когда первых двух уже недостаточно - именно эту позицию мы подробнее раскрываем в руководстве по защите от спама. Единственное, что меняется с таким подходом, - это то, с чего вы начинаете: не со скрипта Google.

Это и есть позиция, с которой Formhook работает по умолчанию, автоматически. Каждая форма получает honeypot-поле и ограничение частоты запросов по IP/по форме, включённые по умолчанию, на каждом тарифе, включая Free - без настройки, без установки виджета. Turnstile доступен как опциональный чекбокс в настройках формы для тех форм, которым нужен дополнительный слой защиты. Что входит в каждый тариф, смотрите на странице тарифов.

Рабочая форма в одну строку

Размещение в ЕС, отправки хранятся вечно, push-уведомления на любом тарифе.

Начать бесплатно

Без банковской карты · читайте документацию

Читать дальше