Как защитить формы на Тильде от спам-ботов без капчи
Защитить формы на Тильде от спам-ботов можно без капчи. Поверх встроенного антиспама Тильды ставятся два слоя: ловушка с таймером в коде сайта (Слой 1) и проверка заявок на сервере (Слой 2). Слой 1 ставится примерно за 5 минут и отсекает основную массу ботов прямо в браузере, Слой 2 ставится примерно за час и добивает тех, кто шлёт заявки напрямую. На обычном HTML-сайте клиента этот метод уменьшил количество спам-заявок с 3000 в месяц до нуля.
По отчёту Imperva Bad Bot Report за 2025 год на автоматический трафик пришлась 51% всех визитов в интернете, и почти 37% это вредоносные боты. Часть из них находит форму на сайте и заваливает её пустыми или фейковыми заявками. На Тильде (Tilda) проблема острее, чем кажется: своего сервера у вас нет, а встроенная капча либо не срабатывает на одиночных ботах, либо отпугивает живых людей. Ниже разберём, как закрыть формы от ботов и не потерять реальные заявки, а весь готовый код можно скачать комплектом ниже, перед настройкой.
Почему встроенной защиты Тильды не всегда хватает
Встроенный антиспам Тильды по умолчанию отсекает грубый перебор с одного IP-адреса, но не трогает ботов, которые шлют по одной заявке с разных адресов.
Уровень защиты задаётся в разделе Настройки сайта → Формы → Общие настройки форм. В выпадающем списке «Защита от спама» четыре уровня, они отличаются тем, как часто посетителю показывается капча:
- Слабая. Капча показывается совсем редко. Вариант для сайтов, где спама почти нет и важно не мешать живым людям.
- Стандартная. Стоит по умолчанию. Капча появляется при третьей повторной отправке формы с одного IP-адреса за короткое время.
- Усиленная. Пропускает с одного IP только один запрос без капчи, со второй отправки уже показывает капчу.
- Агрессивная. Капча появляется каждый раз при отправке любой формы, даже при первом заполнении.
Беда агрессивного режима в том, что капчу видят все посетители. Это уменьшает конверсию сайта: по опросу Fastly 2025 года 23% покупателей бросают оформление, когда видят капчу.
Ботов два типа. Одни работают через страницу в браузере, как обычный посетитель, и таких большинство. Другие шлют запросы напрямую на адрес приёма заявок, минуя страницу. Разные типы ловятся на разных слоях, поэтому одного приёма не хватает, нужна связка.
Для тех, кто льёт рекламу, спам опаснее вдвойне. Фейковые заявки отнимают время менеджера, но это полбеды. Они портят обучение автостратегий Яндекс Директа: алгоритм считает мусорные отправки за конверсии и ведёт кампанию не туда.
Забрать готовый комплект
Весь метод собран в готовый комплект. Программировать ничего не нужно, код вставляется как есть. В комплекте три файла:
- antispam-tilda.txt, скрипт первого слоя (ловушка и таймер), уже готов к вставке, дописывать ничего не нужно.
- webhook-handler.php, обработчик второго слоя для вашего хостинга.
- README.txt, пошаговая инструкция по установке обоих слоёв.
Сайт не на Тильде? Для других платформ есть отдельные комплекты и разборы: защита форм на обычном HTML-сайте и защита форм на WordPress.
Этот комплект и ещё два инструмента я бесплатно отдаю подписчикам канала: нажмите кнопку, подпишитесь и заберите весь набор. Это тот же метод, что свёл спам к нулю на сайте клиента.
Забрать в Telegram Забрать в MAX
Слой 1: ловушка и таймер в коде сайта
Слой 1 — это небольшой скрипт, который добавляется в код сайта Тильды и блокирует ботов прямо в браузере, без всякого сервера. Скрипт кладёт в каждую форму два скрытых поля: ловушку и таймер. Если ловушка заполнена или форму отправили быстрее трёх секунд, отправка отменяется. Это и есть главная защита, на ней отсеивается большая часть спама.
Ловушка (honeypot) — это скрытое поле формы. Живой человек его не видит и не трогает, а бот, который автоматически заполняет все поля подряд, впишет в него что-нибудь. Если поле-ловушка пришло непустым, заявку отправил бот. Таймер считает время с первого касания поля, а не с загрузки страницы. Так человек, который открыл страницу и думает, никогда не заблокируется по ошибке, а бот, мгновенно набивающий форму, отсекается.
Просто скачать любой скрипт-ловушку из интернета на Тильде не выйдет, он не сработает. Тильда отправляет форму по-своему, собственным кодом по нажатию кнопки, а не привычным для браузера способом, и обычный скрипт не успевает вмешаться. Скрипт из комплекта сделан под эту особенность: он срабатывает по нажатию кнопки и по клавише Enter раньше самой Тильды, поэтому успевает остановить бота. Другие элементы страницы, например строку поиска, он не трогает.
Поставить слой 1 можно за 5 минут:
- Откройте файл antispam-tilda.txt из комплекта и скопируйте весь его текст.
- Чтобы защита встала на все страницы сразу: Настройки сайта → Вставка кода → HTML-код для вставки внутрь head. Нажмите «Редактировать код», вставьте текст как есть, дописывать ничего не нужно.
- Либо на одну страницу с формой: добавьте блок T123 (стандартный блок HTML) и вставьте туда тот же текст.
- Сохраните и опубликуйте сайт.
Слой 1 режет ботов, которые идут через страницу в браузере, а это большинство массового спама.
Для рекламы у этого есть отдельная выгода: раз отправка бота не состоялась в браузере, он не засчитывается конверсией в Метрике, и Яндекс Директ не учится на спаме, не уводит бюджет на трафик, который приводит ботов. Но это работает только если конверсией является успешная отправка формы, а не клик по кнопке.
Но он не видит тех, кто бьёт запросами напрямую на адрес приёма заявок. Ловушку и таймер по отдельности продвинутый бот умеет обходить. Именно поэтому защита многослойная, и следующий слой ловит свой класс ботов.
Слой 2: серверный фильтр через webhook Тильды
Слой 2 — это ваш обработчик заявок на сервере. Тильда сама пересылает ему каждую заявку, как только форму на сайте заполнили. Эта автоматическая пересылка называется webhook. Обработчик следит за тем, что прошло мимо браузера: проверяет, что заявка пришла со страницы вашего сайта, отбрасывает пустые и пересылает чистые заявки в Telegram или на почту.
Кажется, что на конструкторе серверную защиту не поставить, раз своего сервера нет. На деле поставить можно: ваш маленький скрипт на любом дешёвом хостинге принимает заявку от Тильды и проверяет её по-настоящему, на сервере. Серверный слой на Тильде вполне реальный, просто живёт он не внутри Тильды, а на вашем хостинге.
Главная проверка слоя 2 — это источник заявки. Тильда передаёт обработчику адрес страницы, с которой пришла заявка. Если адрес чужой или его нет вовсе, заявку шлёт бот напрямую, и она отбрасывается.
Настройка слоя 2 занимает примерно час и чуть сложнее первого слоя, но это всё ещё копирование готового файла:
- Загрузите файл на хостинг. Ваш сайт на Тильде лежит на серверах самой Тильды, и свой код туда поставить нельзя. Поэтому для Слоя 2 нужен отдельный обычный хостинг, это место в интернете, где можно держать свои файлы и запускать код: Beget, Timeweb, reg.ru и подобные. У него есть личный кабинет, в нём раздел «Файловый менеджер», это как папки на компьютере, только в интернете. Зайдите в файловый менеджер, откройте корневую папку, обычно public_html, и загрузите туда файл webhook-handler.php кнопкой «Загрузить». Файл должен появиться в списке.
- Впишите в файл свои данные. В файловом менеджере откройте webhook-handler.php на редактирование (обычно кнопка «Редактировать» или «Edit» рядом с файлом). В самом верху файла есть блок настроек с подсказками, заполните его: укажите ваш домен (адрес сайта) и куда слать заявки, в Telegram или на почту. Для почты это ваш обычный рабочий email. Для Telegram нужен токен бота, его пароль: напишите в Telegram боту @BotFather команду /newbot, придумайте боту имя, и он пришлёт строку-токен, её вставьте в файл. Что и куда вписать, подсказано прямо в файле. Сохраните.
- Подключите файл к Тильде. У загруженного файла есть свой адрес в интернете, и это адрес на том хостинге, куда вы его положили, а не адрес вашего сайта на Тильде. Складывается он из веб-адреса вашего хостинга и имени файла в конце: адрес-вашего-хостинга/webhook-handler.php. Точный веб-адрес хостинга показан в его личном кабинете, у каждого хостинга он свой. Это и есть «адрес скрипта». Скопируйте его, в Тильде откройте Настройки сайта → Формы → Webhook и вставьте туда. Затем в блоке с самой формой отметьте Webhook приёмщиком данных и сохраните.
Обработчик из комплекта учитывает требования Тильды: она ждёт ответ за пять секунд, иначе делает ещё две попытки. Поэтому на любую заявку скрипт быстро отвечает «принято», а чистую заявку пересылает вам, спам же тихо отбрасывает.
Почему при webhook нужно отключить остальные приёмщики заявок в Тильде
Тильда отправляет каждую заявку всем подключённым приёмщикам сразу и независимо: почте, CRM, таблице, уведомлениям. Webhook односторонний, он не может сказать Тильде «не принимай эту заявку», данные текут только в одну сторону, от Тильды к вашему скрипту. Поэтому если рядом с webhook оставить включённым хоть один штатный приёмщик, спам прилетит туда напрямую, мимо фильтра. Единственным приёмщиком заявок должен остаться ваш обработчик: в блоке формы отключите все остальные способы отправки и оставьте только Webhook, иначе слой 2 не имеет смысла.
Отдельный случай — это CRM. Если форма напрямую связана с CRM, например с amoCRM или Битрикс24, отключение этого приёмщика разорвёт интеграцию, и заявки перестанут попадать в CRM. Сам webhook это не решает, пуш в CRM в обработчик не заложен. Но есть обходной путь. Отключите прямую интеграцию Тильды с CRM, оставьте приёмщиком только webhook, а в обработчике включите доставку на почту. На эту почту приходят уже отфильтрованные скриптом заявки. Дальше настройте в CRM приём заявок с этой почты, во многих CRM есть создание сделки из входящего письма. Так CRM получает только чистые заявки, а спам остаётся отсеянным на сервере.
Насколько снижается спам в формах после защиты
На обычном HTML-сайте клиента, где у меня был доступ к серверу, до защиты приходило около 3000 спам-заявок в месяц, примерно 97 в день. Ловушка с проверкой источника срезала поток на 98%, а после того как добавил таймер, спам пропал вообще. Боты по-прежнему стучатся, около 38 попыток в день, но заявки до клиента не доходят. На Тильде тот же принцип перенесён в эти два слоя и проверен вживую. Спам остаётся на сервере, а клиент получает реальные обращения.
Чтобы было понятно, какой слой за что отвечает, вот вся защита одной таблицей.
| Слой | Где работает | Что отсекает | Нужен сервер |
|---|---|---|---|
| Встроенный антиспам Тильды | На стороне Тильды | Грубый перебор с одного IP | Нет |
| Слой 1: ловушка и таймер | В браузере посетителя | Массовых ботов, идущих через страницу | Нет |
| Слой 2: фильтр через webhook | На вашем хостинге | Прямые заявки мимо страницы, пустые отправки | Да |
У метода есть ограничение. Связка рассчитана на массовый нецелевой спам, а это почти весь спам в интернете. Бот, написанный вручную под конкретный ваш сайт, обойдёт любую защиту без капчи, но такое случается нечасто. На этот случай есть капча.
Нужна ли капча и почему её ставят последней
Капча нужна только если после двух слоёв спам всё равно идёт, а это редкий случай. Капча всегда снижает конверсию: по опросу Fastly 2025 года 23% покупателей бросают оформление, когда видят капчу, а по данным Baymard примерно 8% ошибаются при вводе. Поэтому капча — это крайняя мера, а не первый шаг.
Google reCAPTCHA в России ставить не стоит по двум причинам. Юридическая: с 1 июля 2025 поправки в 152-ФЗ ограничивают передачу персональных данных россиян за рубеж, а reCAPTCHA работает на серверах Google за пределами страны, и за нарушение предусмотрены штрафы в несколько миллионов рублей. Техническая: при перебоях с доступом к домену google.com форма с reCAPTCHA просто перестаёт отправляться, и вы теряете все заявки.
Если капча действительно нужна, используйте Яндекс SmartCaptcha: её серверы в России, и есть невидимый режим, когда проверку проходят только подозрительные запросы. Встроенной кнопки для сторонней капчи у Тильды нет, поэтому SmartCaptcha ставят вручную. Сам виджет капчи добавляют в форму через код на странице, а обработчик из слоя 2 на сервере проверяет, что капча пройдена.
Если у вас или у вашего клиента сайт на Тильде и в форму сыплется спам, заберите комплект и передайте тому, кто занимается сайтом, дальше он разберётся по инструкции. А если делать некому или не уверены в настройке webhook, запишитесь на бесплатную консультацию ниже, помогу внедрить и проверю, что спам перестал портить рекламу.
Частые вопросы
Как защитить формы на Тильде от спам-ботов без капчи?
Поверх встроенного антиспама Тильды ставят два слоя без капчи: Слой 1 — это скрытая ловушка honeypot с таймером в коде сайта, она блокирует ботов прямо в браузере; Слой 2 — это серверный фильтр через webhook, он проверяет, что заявка пришла со страницы вашего сайта. Капча при этом не нужна.
Почему встроенного антиспама Тильды не всегда хватает?
Встроенный антиспам Тильды показывает капчу только при третьей повторной отправке формы с одного IP-адреса за короткое время. Боты, которые шлют по одной заявке с разных адресов, этот порог не задевают. Усилить защиту можно агрессивным режимом, но тогда капча появляется у всех посетителей и режет реальные заявки.
Что такое honeypot-ловушка и как она ловит ботов?
Honeypot — это скрытое поле формы, которое живой человек не видит и не заполняет, а бот заполняет автоматически вместе со всеми полями. Если поле-ловушка пришло непустым, значит заявку отправил бот, и она блокируется. На Тильде ловушка добавляется небольшим скриптом в код сайта и работает прямо в браузере, без сервера.
Нужен ли свой сервер, чтобы фильтровать заявки с Тильды?
Для первого слоя, ловушки и таймера, сервер не нужен: скрипт работает в браузере. Сервер нужен только для второго слоя. Тильда шлёт заявку на ваш обработчик через webhook, а обработчику требуется обычный хостинг, где можно запускать скрипты. Для большинства сайтов хватает первого слоя без сервера.
Помогает ли метод против обучения Яндекс Директа на спам-заявках?
Да, это делает Слой 1. Он отменяет отправку бота прямо в браузере, поэтому цель «форма отправлена» в Метрике не срабатывает, и бот не засчитывается конверсией. Яндекс Директ не учится на спаме и не уводит бюджет на трафик, который приводит ботов. Работает, если цель-конверсия привязана к успешной отправке формы.
Почему не стоит ставить Google reCAPTCHA на сайт в России?
У Google reCAPTCHA в России две проблемы. Юридическая: с 1 июля 2025 поправки в 152-ФЗ ограничивают передачу персональных данных россиян за рубеж, а reCAPTCHA работает на серверах Google за пределами страны. Техническая: при перебоях с доступом к домену google.com форма с reCAPTCHA перестаёт отправляться. В России вместо неё берут Яндекс SmartCaptcha.
Снижает ли капча конверсию формы и можно ли обойтись без неё?
Да, капча снижает конверсию. По опросу Fastly 2025 года 23% покупателей бросают оформление, когда видят капчу, а по данным Baymard примерно 8% ошибаются при вводе. Поэтому капчу ставят последней мерой. Связка из ловушки, таймера и серверного фильтра убирает основную массу спама без капчи.