В начале сентября клиент прислал скриншот из Метрики с вопросом, который я слышу уже лет десять: «Почему люди доходят до страницы контактов и уходят, не отправив форму?» Открыл запись вебвизора — и всё увидел сам. Человек заполняет пять полей, нажимает «Отправить», и тут всплывает reCAPTCHA: выберите все светофоры. Он кликает, ошибается, получает вторую порцию картинок, закрывает вкладку. Заявка, за которую клиент заплатил трафиком, умерла на последнем шаге. В этой статье объясню, почему я считаю классическую CAPTCHA на формах антипаттерном в 2026 году, что поставил вместо неё на том проекте и какой спам-фильтр реально держит удар без участия посетителя.
Что не так с капчей: три счёта, по которым она проигрывает
Первый счёт — конверсия. Капча стоит ровно в той точке воронки, где посетитель уже принял решение и готов отдать вам контакт. Любое трение здесь бьёт по деньгам напрямую. На том самом проекте (WordPress 6.8, Contact Form 7, лендинг услуги с трафиком из Директа) я замерил: за месяц с reCAPTCHA v2 форму успешно отправляли 61% тех, кто начал её заполнять. После замены на невидимую защиту — 78%. Семнадцать процентных пункта заявок, которые раньше сгорали на «выберите все велосипеды». У клиента это плюс одиннадцать лидов в месяц при том же бюджете на рекламу.
Второй счёт — скорость. reCAPTCHA v3 тянет на страницу сам скрипт, iframe и служебные запросы — суммарно это 300–450 КБ и регулярные сетевые вызовы на каждое действие пользователя. На мобильном 4G это ощутимые сотни миллисекунд к INP, а ведь именно INP теперь учитывается в ранжировании. Я недавно разбирал оптимизацию сайта, где страница грузилась 4,2 секунды, а стала 1,3, — так вот, снятие reCAPTCHA со всех страниц, кроме одной формы, дало заметную часть выигрыша по INP. Смешно чинить производительность, а потом вешать на каждую страницу чужой трекер весом в полмегабайта.
Третий счёт — доступность. Капча по определению построена на том, чтобы отличать человека от машины через сенсорные задачи: зрение, слух, моторику. Для посетителя со скринридером или с тремором «выберите светофоры» — это стена. В статье про доступность по WCAG 2.2 и European Accessibility Act я приводил чек-лист, и капча там — отдельный пункт: WCAG 2.2 в критерии 3.3.8 прямо требует, чтобы авторизация и проверки не полагались на когнитивные тесты без альтернативы. Если вы торгуете на Европу, визуальная капча — это ещё и юридический риск, а не только потерянные заявки.

Главный контраргумент — и почему он устарел
«Без капчи завалит спамом» — это был правдой в 2015 году. Тогда боты были тупые: долбили POST-запросы напрямую в обработчик формы, и задача «отличить человека» решалась картинкой. В 2026-м расклад другой. Спам-боты давно научились решать капчи: сервисы распознавания берут за это копейки, а reCAPTCHA v2 щёлкается сторонними решалками с точностью выше, чем у уставшего человека с телефона. То есть капча перестала быть фильтром от ботов, но осталась фильтром от людей. Защита, которая пропускает злоумышленника и отсеивает клиента, — это худший из возможных вариантов.
Моя субъективная оценка после восьми лет поддержки форм на десятках сайтов: визуальная капча сегодня — это не защита, а ритуал. Её ставят, потому что «все ставят», и потому что галочка «Я не робот» создаёт у владельца сайта приятное ощущение контроля. На практике из последних шести проектов, где я убирал reCAPTCHA v2 в пользу связки невидимых методов, ни на одном спам не вырос — на трёх он, наоборот, упал, потому что поведенческие сигналы ловят ботов лучше картинок.
Что работает вместо капчи: мой рабочий стек
На том сентябрьском проекте я собрал защиту из четырёх слоёв, ни один из которых не виден посетителю. Расскажу по порядку, от дешёвого к сильному.
Первый слой — honeypot. Скрытое поле, которое человек не видит и не заполняет, а бот — заполняет, потому что перебирает все input в разметке. В Contact Form 7 это делается плагином или двадцатью строками кода: поле с autocomplete=”off”, спрятанное через CSS (не display:none — умные боты это проверяют, а сдвигом за пределы экрана), и проверка на сервере: поле не пустое — в спам. Этот слой один отсекает примерно 70% тупого спама.
Минимальная реализация выглядит так. В разметку формы добавляем поле-ловушку:
<div class="form-note" aria-hidden="true">
<label>Не заполняйте это поле
<input type="text" name="company_site" value="" autocomplete="off" tabindex="-1">
</label>
</div>
Класс form-note уводит блок за пределы экрана: position:absolute; left:-9999px;. А на сервере — одна проверка до любой другой логики:
if (!empty($_POST['company_site'])) {
wp_die('spam'); // человек это поле физически не видел
}
Три нюанса, которые важны. Имя поля должно выглядеть правдоподобно — website, company_site, url; поле с именем honeypot боты пропускают. Атрибут tabindex="-1" убирает ловушку из навигации с клавиатуры, иначе она заденет посетителей, которые заполняют форму табом. И обязательно aria-hidden="true", чтобы скринридер не зачитывал ловушку вслух.
Второй слой — временная метка. При рендере формы кладу в скрытое поле время генерации. Человек заполняет пять полей минимум секунд за пятнадцать-двадцать. Бот шлёт форму за долю секунды после загрузки. Правило простое: заполнено быстрее, чем за три секунды, — в спам. Плюс верхняя граница: форма, отправленная через двое суток после генерации, тоже подозрительна — боты любят переиспользовать сохранённую разметку.
Третий слой — невидимый челлендж. Если нужен внешний сервис, я ставлю Cloudflare Turnstile: он не показывает картинок, работает на поведенческих сигналах, весит на порядок меньше reCAPTCHA и не передаёт данные в рекламную сеть. Для сайтов с аудиторией из России есть нюанс с доступностью Google-сервисов — reCAPTCHA периодически отваливается, и форма ломается целиком; Turnstile или отечественные аналоги в этом смысле стабильнее. Важно: подключаю его только на странице формы, а не глобально на весь сайт.
Четвёртый слой — контентный фильтр. Akismet для WordPress или своя проверка: ссылки в поле «Имя», кириллическое имя с латинским телефоном, больше двух URL в сообщении, стоп-слова. Плюс rate-limit на уровне сервера: больше трёх отправок с одного IP за минуту — отказ. Это ловит то, что проскочило первые три слоя, и то, что прислал живой спамер-человек.

Когда капча всё-таки нужна
Честности ради: есть два места, где я сам ставлю видимую проверку. Первое — формы регистрации и восстановления пароля на сайтах с личным кабинетом: там цена подбора и фейковых регистраций выше, а пользователь мотивирован пройти лишний шаг. Второе — формы, через которые раздают что-то бесплатное: промокоды, скидки, доступ к закрытому контенту. Туда боты идут целенаправленно, и поведенческих сигналов может не хватить. Но форма «Заказать звонок» или «Оставить заявку» — не этот случай. Там каждый лишний клик посетителя оплачен рекламным бюджетом.
И ещё одно наблюдение из практики. После того как форма заработала без капчи, мы на том проекте подключили отправку заявок напрямую в CRM через вебхук — по схеме, которую я описывал в статье про связку сайта с Битрикс24 без плагинов. Косвенный эффект оказался неожиданным: CRM сама стала дополнительным фильтром. Дубли и мусорные лиды видны в воронке за минуту, менеджер помечает их спамом, и по этим меткам мы раз в месяц докручиваем правила контентного фильтра. С капчей такого цикла обратной связи не было — она просто молча отсеивала всех подряд, включая клиентов.
Как перейти без боли: порядок действий
Если хотите повторить — не сносите капчу в пятницу вечером. Порядок такой. Сначала поставьте honeypot и временную метку, оставив капчу на месте, и неделю смотрите в логи: сколько отправок режется новыми слоями. Потом переведите reCAPTCHA v2 на невидимый Turnstile — конверсия формы вырастет уже на этом шаге. Затем подключите контентный фильтр и rate-limit. И только когда видите, что спам держится на уровне «две-три заявки в неделю, которые ловит Akismet», — снимайте видимую проверку совсем. На всех моих проектах этот переход занимал две-три недели наблюдений и ни разу не откатывался назад.
А как устроена защита форм на ваших проектах — держитесь за капчу или уже нашли связку, которая работает незаметно для посетителей? Особенно интересно, что используете на сайтах с высоким трафиком из контекста.