LitMyCaptcha — собственная CAPTCHA для сайта без сторонних сервисов

+15
394
LitMyCaptcha — собственная CAPTCHA для сайта без сторонних сервисов

Сейчас работаю над своей собственной CAPTCHA-системой под названием LitMyCaptcha.

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

Поэтому решил делать собственную разработку.

Что планируется в LitMyCaptcha:

— защита без использования сторонних сервисов;
— несколько вариантов проверки, а не только одна классическая капча;
— современный и понятный интерфейс;
— возможность использовать как видимую, так и невидимую проверку;
— гибкая логика для разных сценариев сайта;
— упор на удобство для обычных пользователей, а не только на жёсткую защиту.

На текущем этапе рассматриваю сразу несколько режимов работы:

1. Checkbox-проверка
Похожий по удобству формат: пользователь подтверждает, что он человек, а система уже решает, нужна ли дополнительная проверка.

ИзображениеИзображение

ИзображениеИзображение

2. Managed / умная проверка
Когда капча не мешает без необходимости и включается только в подозрительных случаях.

ИзображениеИзображение

3. Invisible-режим
Невидимая проверка при отправке формы без лишних действий со стороны пользователя.

Изображение

4. Дополнительные сценарии проверки
Например:

  • слайдер,
  • вопрос-ответ,
  • код с изображения,
  • другие собственные варианты challenge-проверки.

ИзображениеИзображениеИзображение
Отдельно хочу сделать упор на то, чтобы систему можно было гибко настраивать:

  • когда показывать дополнительную проверку,
  • как работать с подозрительными запросами,
  • как логировать попытки,
  • как временно доверять уже проверенному пользователю.

Для меня важно сделать не просто “ещё одну капчу”, а именно свой полноценный инструмент, который можно будет развивать дальше и использовать на реальных проектах.

Сейчас мне особенно интересно мнение со стороны.

Что думаете о такой идее?
Какие функции вы бы хотели видеть в собственной CAPTCHA-системе?
Что вас больше всего раздражает в существующих капчах?
И какой вариант проверки для вас кажется самым удобным: checkbox, invisible, слайдер, вопрос-ответ или что-то другое?

Буду рад обратной связи, критике и предложениям. Именно на этом этапе особенно полезно собрать мнение до финальной реализации.

0
Def Def 29 дней назад #

Идея классная. У меня только один вопрос, почему существуют внешние сервисы гугла и яндекса, если можно сделать свою для CMS?) Может в них есть какие-то фичи, которые сложные в реализации и которые нельзя реализовать на уровне «своей» системы?

ПС. Не эксперт по каптчам

+1
Litemir Litemir 29 дней назад #

Конечно в них много чего есть, что очень сложно повторить и реализовать.

Например:

  • Глобальная репутация трафика и устройств
  • Поведенческий анализ и risk/score-модели
  • Invisible / managed-проверки без лишних действий пользователя
  • Готовые challenge-сценарии: checkbox, slider, задания
  • Аналитика, пороги риска, отчёты
  • Одноразовые токены и backend-валидация
  • Масштабируемая инфраструктура под большие атаки

Это только малая часть. Я предлагаю разработку для базовых потребностей не прибегая к иным способам.

+3
maxisoft maxisoft 29 дней назад #

В любом случае идея хорошая, но нужно смотреть реализацию насколько она будет противостоять обходу как будет происходит анализ действии и прочее.

+1
Pechora.Dev 🐻 Pechora.Dev 🐻 29 дней назад #

Плохая затея, и вот почему: Во-первых — сама генерация каптчи на сервере- это ресурснозатратно (работа с изображениями, криптография, сессии). Если капча генерируется на том же сервере, что и сайт, злоумышленник может запустить атаку, запрашивая тысячи новых капч в секунду, и все — ахтунг (был опыт(только тссс — никому 😀), когда-то очень давно, дудусили один сайт — и именно родная каптча помогла его положить). 

В вашем посте есть понятие «умная проверка» (Managed). Но на основе чего она будет принимать решение «бот перед нами или нет»? Без «больших данных» терабайт так на 5 минимум капча будет слепа, аки котенок. 

  • Слайдер (drag and drop) уже давно проходится простыми скриптами, которые двигают ползунок, пока фон не совпадет.
  • Вопрос-ответ (2+2=?) решается простым Regexp.
  • Текстовые капчи с искажениями нейросети распознают с точностью 99%.

Вы пишете: «невидимая проверка при отправке формы». Где будет происходить эта проверка? На фронтенде. Любой злоумышленник откроет консоль браузера (F12), посмотрит твой JavaScript-код и увидит:

  • Как именно формируется токен.
  • Куда он отправляется.
  • Какие поля проверяются.

Достаточно просто эмулировать этот запрос, и твоя «невидимая проверка» будет пропускать ботов, потому что они будут притворяться твоим же скриптом. Чтобы этого избежать, нужна сложная обфускация.

Создать капчу, которая не будет раздражать пользователей, не блокирует людей с ограниченными возможностями — при этом надёжно отличает ботов от людей и не требует постоянной доработки — это задача, над которой годами работают целые команды в крупных компаниях. Если у вас есть хорошая сумма денег для этой разработки — то вперед!

Современная защита от ботов строится не на «угадай картинку», а на анализе сотен сигналов: поведение курсора, скорость ввода, отпечаток устройства, геолокация, репутация IP, паттерны сессии. Профессиональные сервисы имеют доступ к глобальным базам данных и моделям машинного обучения, обученным на триллионах запросов. Кастомное решение, как правило, ограничивается локальной логикой.

Так что — мое мнение — на каком-нибудь захудалом сайте, куда ежедневно заходит три человека проверить погоду — может быть и сойдет. Для всех остальных — увы, пока лучше пользоваться спец сервисами

+1
Pechora.Dev 🐻 Pechora.Dev 🐻 29 дней назад #

Ах да, еще немаловажная деталь — если этот иснтрумент будет платным, то в 95% уйдете в убыток — так как если именно из-за вашего инструмента сайт понесет репутационные потери — то сами понимаете. Но — это мое личное мнение. Как человек, который не первый год в разработке — советую для начала все таки изучить принципы работы данных сервисов

+1
Litemir Litemir 29 дней назад #

Огромное спасибо за Ваше мнение.

Вы правы: сделать полноценную антибот-систему уровня Google, Cloudflare или Яндекса в одиночку крайне сложно. У них огромная инфраструктура, глобальная репутация, большие данные, ML-модели и постоянная команда поддержки. Моя цель не в том, чтобы “с нуля повторить их уровень”, а в том, чтобы сделать независимое, гибкое и контролируемое решение для CMS и сайтов, где важны приватность, отсутствие внешних зависимостей и возможность адаптации под конкретный проект.

Я тоже понимаю риски:
— генерация капчи на основном сервере может стать точкой нагрузки;
— простые challenge-сценарии по отдельности давно не являются надёжной защитой;
— фронтенд сам по себе не может быть источником доверия;
— любую проверку нужно подтверждать на сервере;

Поэтому если делать свой продукт, то только как многоуровневую защиту:
— rate limit и ограничения на генерацию challenge;
— отдельная серверная валидация и одноразовые токены;
— не опора на один тип капчи, а комбинация сигналов;
— fallback-сценарии;
— логирование, мониторинг и регулярное обновление правил.

То есть речь не о том, что “самописная капча лучше больших сервисов”, а о другом сценарии: можно ли сделать собственную защиту, которая будет достаточно хороша для части проектов и при этом даст контроль над данными и логикой. Вот именно этот вопрос мне и интересен.

0
Pechora.Dev 🐻 Pechora.Dev 🐻 29 дней назад #

Блин, перечисленные меры — это основа основ, а не комплексное решение. Вопрос нев том, «можно ли сделать свою защиту», а в том: «Зачем, если рынок поделен и себстоимость одной проверки у гигантов стремится к нулю?» Если ответ — «ради опыта и pet-проекта» — то флаг в руки! Если ради бизнеса — тут я остаюсь при своем мнении: — это путь к убыткам

+1
Litemir Litemir 29 дней назад #

Задумка эта не ради бизнеса, а ради интереса использовать что то свое не прибегаю к иным решениям. И да:

Я не собираюсь

  • превзойти Google / Cloudflare / Yandex
  • гарантировать неуязвимость
  • полностью остановить любые атаки
  • снять всю нагрузку с сервера только капчей

Вот цель

  • не зависеть от внешних сервисов
  • контролировать логику и данные
  • защитить формы от массового простого и среднего спама
  • сделать кастомные сценарии под свой проект
+1
TOPg TOPg 29 дней назад #

спасибо за труд!

+1
Pro AV Pro AV 29 дней назад #

Без сторонних шпионов сервисов. Сейчас актуально как никогда.

0
dChirkis dChirkis 29 дней назад #

Хорошее намерение. Если есть желание в независимом решении для капчи то замахивайтесь шире, комплекснее — добавьте решение вопроса защиты от парсинга агентами и ддоса. Что-то типа функционала Анубиса

+5
maxisoft maxisoft 29 дней назад #

Скажу проще нужных или не нужных разработок нет, даже если оно будет платным я уверен что на него найдется свой потребитель, поэтому стоит делать все. На ВП тоже куча разработок которые не кому не нужны, но они находятся в экосистеме и дают плюс для сообщества. Поэтому не слушайте не кого есть время и желание делайте.

0
disc disc 28 дней назад #

Отличная идея. Pechora.Dev расписал реалии по делу, как оно есть. Но идея замечательная. Респект за энтузиазм. Пожелаем успехов и неугасаемого стремления. Будем ждать результаты. В свою очередь с удовольствием будем испытывать и активно использовать.

Еще от автора

Обзор компонента Litauth: авторизация, регистрация, соцсети и согласия
Авторизация и регистрация в один клик — через email или социальные сети. Быстро, удобно и безопасно.
Компонент SEO Аудит
Будет ли полезен компонент SEO Аудит
Квиз форма
Написание компонента Квиз форма
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.