Open-source и свой сервер 4 мин чтения

Спам в формах: своя капча Cap вместо reCAPTCHA

Cap это открытая капча под Apache 2.0, которая работает на вашем сервере: браузер сам решает небольшую вычислительную задачу, картинок нет. Разбираем, как её подключают к форме заявок, что с 152-ФЗ и где она не защитит.

капчазащита от спамаopen sourceформы сайта
Коротко. Cap это открытая капча под лицензией Apache 2.0, которую ставят на свой сервер. Посетитель не выбирает светофоры и автобусы: браузер сам решает небольшую вычислительную задачу, а сервер проверяет одноразовый токен. Данные не уходят в сторонние сервисы. Массовый спам такая защита режет хорошо, а целевого злоумышленника не остановит.

Форма заявок, в которой мусора больше, чем клиентов

Знакомая картина на сайте компании. Форма отправляет заявки в Telegram или на почту, а среди них «продвижение сайта недорого», ссылки на казино и пустые сообщения с одним адресом. Менеджер каждое утро разбирает, где живой человек, а настоящая заявка иногда тонет в куче и получает ответ на следующий день.

Стандартное лекарство называется reCAPTCHA. Её скрипт грузится с серверов Google, поэтому браузер каждого посетителя обращается к чужой инфраструктуре. Версия с картинками раздражает людей, а работа формы зависит от того, достучится ли браузер до внешнего сервиса.

Есть вариант проще: капча, которая живёт на вашем сервере. Один из заметных открытых проектов такого рода называется Cap, репозиторий tiagozip/cap на GitHub. Названий «Cap» много, нужен именно этот, с описанием про PoW и instrumentation challenges.

Как устроен Cap и как он подключается

На момент проверки, 4 октября 2026 года, у репозитория около 7,9 тысячи звёзд, последнее обновление кода 3 октября. Лицензия Apache 2.0: так написано в README, в файле LICENSE и в пакетах npm. Виджет @cap.js/widget имеет версию 0.1.58 от 23 сентября, сервер @cap.js/server версию 4.0.5. В README сказано, что Cap работает в продакшене у bunny.net и AdGuard, это слова авторов.

Защита строится на двух вещах. Первая называется proof-of-work: браузер посетителя в фоне решает несколько небольших вычислительных задач, рассчитанных на плохое ускорение видеокартами. Человек этого не замечает, а тому, кто шлёт тысячи заявок в минуту, каждая отправка стоит процессорного времени. Вторая это инструментальные задачи (instrumentation): проверка окружения браузера, которая отсеивает простые скрипты и безголовые браузеры. Авторы пишут, что её можно настроить и против автономных ИИ-агентов.

Подключение состоит из трёх частей:

  • На страницу добавляется скрипт виджета и тег cap-widget с адресом вашего сервера.
  • Если тег стоит внутри формы, виджет сам добавляет скрытое поле cap-token. Имя поля меняется атрибутом.
  • Ваш бэкенд перед обработкой заявки отправляет токен и секретный ключ на адрес /siteverify. Ответ success: true значит, что проверка пройдена. Токен одноразовый, формат запроса совместим с reCAPTCHA.

Сервер Cap поднимается через Docker Compose вместе с хранилищем Valkey (форк Redis). Для WordPress готовых вариантов от самих авторов я не нашёл, но есть плагины сообщества, например «Privacy CAPTCHA for Cap» в каталоге wordpress.org. Это сторонняя разработка, её надо проверять отдельно.

Приватность и 152-ФЗ

По README и документации Cap не использует cookies и не обращается к сторонним сервисам, проверка идёт на вашей инфраструктуре. У виджета есть одна тонкость: в примере скрипт подключается с CDN jsDelivr. Чтобы браузер посетителя не ходил к чужим серверам, файл виджета кладут к себе на сайт.

Теперь про закон. Статья 12 закона 152-ФЗ требует, чтобы оператор до начала трансграничной передачи персональных данных уведомил Роскомнадзор. Часть 5 статьи 18 касается записи и хранения данных граждан России в базах на территории РФ. Что закон требует на самом деле, разобрано в статье про мифы о 152-ФЗ.

Утверждать, что reCAPTCHA нарушает закон, я не буду: это зависит от того, какие данные и как попадают к стороннему сервису, и вопрос для юриста. Если капча стоит на вашем сервере и ничего не отправляет третьим лицам, о трансграничной передаче с её стороны думать не приходится. Текст закона я смотрел в пересказах, на consultant.ru страница статьи не открылась, поэтому сверьтесь с актуальной редакцией.

Где Cap не сработает

Proof-of-work останавливает массовую рассылку: когда каждая отправка стоит машинного времени, спамеру невыгодно слать десятки тысяч сообщений. Целевого человека, который решил завалить именно вас, это не остановит. Он заплатит за вычисления и обойдёт защиту. Сами авторы в таблице сравнения ставят Cap в графе «сложно для ботов» лишь частично зелёным, а hCaptcha описывают как более стойкую к ботам, но с потерей части посетителей на картинках.

Ещё несколько ограничений:

  • Версия виджета 0.1.x, проект молодой. После обновлений проверяйте форму.
  • Русский язык. Надписи виджета задаются атрибутами data-cap-i18n-*, так что по-русски они выглядят как надо. Готового русского перевода «из коробки» в документации я не нашёл.
  • Доступность. В документации сказано, что вычислительная проверка обходит барьеры картинок и аудио по WCAG 2.2, и есть атрибуты aria-label. С экранным диктором я виджет не проверял.
  • Tilda и другие конструкторы. Подтверждённого способа вставить серверную проверку токена я не нашёл. Проверка нужна именно на сервере, одной вставки виджета в страницу недостаточно.
  • Сервер нужно обновлять и следить за ним, иначе формы перестанут принимать заявки.

Если держать сервер не хочется, есть российская альтернатива: Яндекс SmartCaptcha. Это сервис Yandex Cloud с виджетом и серверной проверкой, есть режим невидимой капчи, который показывает проверку только подозрительным запросам. Условия оплаты задаёт Яндекс.

Что можно сделать уже сейчас

Первое: выясните, откуда спам. Откройте последние заявки и отметьте, сколько из них пустые или со ссылками. Если спам однотипный, иногда хватает скрытого поля, которое человек не видит, а бот заполняет. Базовый набор защиты описан в статье про защиту сайта от ботов.

Второе: проверьте, что у формы есть серверная проверка. Капча, которую проверяют только в браузере, обходится прямым запросом к форме.

Третье: поднимите Cap на тестовом поддомене и посмотрите, как он ведёт себя на телефонах и слабых устройствах. Задачи считаются на устройстве посетителя, сложность настраивают так, чтобы ожидание было секундой-другой.

Четвёртое: добавьте защиту в общий список проверок. Защиту форм стоит держать в чек-листе безопасности сайта. Мы подключаем Cap к вашим формам и настраиваем под ключ: сервер, виджет на ваших страницах, серверная проверка, перевод надписей. Это входит в разработку и доработку сайтов.

Частые вопросы

Cap действительно бесплатный?

Код открыт под Apache 2.0, лицензию платить не надо. Платить придётся за сервер, на котором он работает, и за время на подключение и поддержку.

Можно ли заменить reCAPTCHA без переделки формы?

Серверная проверка Cap совместима по формату с reCAPTCHA, поэтому обычно меняются скрипт на странице, адрес проверки и ключи. Точнее скажу, посмотрев код формы.

Защитит ли Cap от целенаправленной атаки?

Нет. Он поднимает цену для массового спама, но человек с бюджетом на вычисления обойдёт его. Для рискованных сайтов к капче добавляют ограничение частоты запросов и мониторинг.

Коротко о главном

Cap даёт форме заявок защиту от массового спама без картинок и без обращений к сервисам Google. Лицензия Apache 2.0, проект активный, проверка идёт на вашем сервере. Против того, кто целится именно в вас, его не хватит, и сервер придётся обслуживать.

Спам в заявках съедает время менеджеров, и хочется разгрузить форму? Напишите мне в Telegram слово «КАПЧА». Посмотрим вашу форму, решим, нужен ли Cap, SmartCaptcha или хватит простой ловушки, и подключим.

Ещё open-source для бизнеса

Эта статья — часть каталога бесплатных решений, которые я разворачиваю на вашем сервере под ключ: CRM, аналитика, документы, почта, безопасность, магазины, AI.

Услуги по теме

Что я делаю для бизнеса

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх