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

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

Назначение и функция капчи

Для чего нужен ввод капчи, ведь это может отталкивать пользователей?
Например, в любимой всеми социальной сети ВКонтакте ее нужно вводить, если количество действий в определенный промежуток времени превысит допустимый параметр. Грубо говоря, если вы отправите подряд 50 сообщений с интервалом в 1 секунду, то, наверняка, выскочит капча, так как вас заподозрят в спаме. А спамят, как известно, в большинстве своем роботы, которые не смогут (по задумке авторов) ввести текст с рисунка. Соответственно, это вынужденная мера, которая защищает ресурсы от спама и повышенной нагрузки при атаке ботов.

Однако, captcha не всегда помогает, ведь на каждый замок можно найти ключ, иначе этот замок просто сломан и бесполезен. Большинство рисунков можно распознать нейронными сетями, предварительно натаскав их на многочисленных (несколько десятков, а то и сотен тысяч) примерах. Эти примеры подготавливают добровольцы, которые днями напролет за небольшое вознаграждение сидят и вбивают капчи. Дабы не быть голословным, вот пример с habrahabr по взлому капчи яндекса. Также существуют специальные сервисы, такие как antigate, которые предоставляют услгу по распознаванию. Они имеют огромную готовую базу примеров, а те случаи, которых еще нет в базе, распознаются вручную.

Примеры captcha, случаи использования

Может быть можно придумать что-то не такое раздражающее как прыгающий и скачущий текст\цифры? Да, конечно можно придумать. И более того, уже придумали. Сейчас я покажу Вам примеры капчи, которые не так раздражают посетителей. Начнем со стандартной — текстовой.

Теперь перейдем к более интересным примерам. К таковым можно отнести капчу, где нужно выставить вертикально 3 картинки. На мой взгляд, это одна из наиболее удачных вариаций в данной области, просто потому, что она не раздражает, а даже наоборот, увлекает и немного веселит. Это даже не ввод captcha, а просто мини игра.

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

Ну и в заключение, опасный пример мнимой безопасности, капча — «поставь галочку». Многие считают, что этого достаточно, но не подозревают, что программно поставить галочку очень просто и обучить этому бота — дело 1 минуты. Ведь при этом ввод капчи как таковой не происходит, а происходит изменение параметра CheckBox’a.

Теперь вы знаете что такое капча (captcha) и представляете, примерно, какими они могут быть.

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Капча – это инструмент защиты от роботов, который запрещает выполнять какие-то действия ботам.


Больше видео на нашем канале - изучайте интернет-маркетинг с SEMANTICA

Часто представляет собой картинку с цифрами, которые нужно ввести в специальное поле. Робот не сможет понять, какие цифры нарисованы, а вот человек - сможет.

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

Капча выполняет аналогичные функции - ограничивает возможности ботов.

Такую функцию выполняет и капча для сайта, ограничивая доступ автоматическим программам к возможностям ресурса.

Какие бывают капчи

Машинный интеллект постоянно развивается. Разработчики создают ботов, прикручивают к ним нейронные сети для обучения. Это гонка увеличивающегося искусственного интеллекта и способов защиты от него.

Разрабатываются новые методы проверки. Есть разные виды капчи.

SI Captcha Anti-spam

Этот вариант в интернете можно встретить на большинстве ресурсов. Код представляет собой смесь букв и цифр на картинке. Также есть функция прослушивания, необходимая в том случае, если текст непонятен.

reCAPTCHA

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

Math Comment Spam Protection

Популярная капча для блогов и почтовых сервисов. Чтобы подтвердить, что вы не бот, потребуется выполнить несложное арифметическое действие и ввести результат.

Какую выбрать

Чтобы понять, какая капча лучше подойдет для вашего проекта, кратко рассмотрим популярные варианты.

Текстовая

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

Состоящая из вопроса

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

Картинка

Например, “Выберите все изображения, на которых присутствует олень”. Интересная подача, но иногда картинки настолько плохого качества, что торчащий из-за кустов рог просто не видно.

Заработок на вводе капчи

Есть специальные сервисы, которыми пользуются спамеры. Капчу вводят люди за небольшую плату. Это сомнительный метод заработка. Повторим: обман - это плохо.

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

CAPTCHA - сокращение от английского Completely Automated Public Turing test to tell Computers and Humans Apart – полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей. В рунете нередко можно слышать транскрипцию «капча» .

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

Применяется данный тест с одной целью - предотвратить доступ ботов к отправке или публикации на сайтах спам-информации, скачивания каких-либо материалов.

Методы CAPTCHA

Подавляющее большинство методов CAPTCHA предлагает зрительное распознавание графической информации, реже анализ и/или некоторое вычисление и ввод в специальном поле распознанной информации. Рассмотрим наиболее распространённые методы.

1. Самый распространённый метод: пользователю предлагают ввести цифры/символы, изображённые на рисунке . Как правило, символы искажены, размыты, зашумлены помехами.

2. Пользователю предлагается изображение с написанными текстом цифрами и ввести цифры.

3. Пользователю предлагается выполнить простое арифметическое или логическое действие и ввести результат. Метод может быть усложнён сочетанием с предидущим.

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

5. Метод, основанный на распознавании человеческой речи .

5. Video-CAPTCHA . Любой из первых трёх методов, в котором вместо изображения информация передаётся пользователю с помощью видеоряда, где буквы и символы находятся в постоянном движении.

Варианты 1, 2 и 3 легкопереносимы с сервиса на сервис и легконастраиваемы. Они не требовательны к хостингам, нересурсоёмки. В то же время, степень защиты остаётся достаточно высокой (при правильной настройке). Методы 4, 5, 6 требуют более серьёзной настройки либо подключение к специализированным сервисам, предоставляющим услуги CAPTCHA.

Самым распространённым является метод 1 - дублирование изображённых символов и букв в специальном поле. Методы, основанные на человеческих знаниях и чувствах, а также связанные с арифметическими или логическими действиями, зависят от менталитета, грамотности посетителя или норм морали, принятых на территории проживания. Это может давать неверные трактования капчи, соответственно, ошибки при тестировании. Естественно, подобные действия могут привести к оттоку посетителей с сайта.

Ошибки, уязвимости и методы противодействия/защиты

Главная возможная ошибка - ошибка или недостаточная профессиональная подготовка программиста к написанию или установке кода капчи. Ошибки программирования капчи позволяют ботам обходить защиту, оставляя реальным посетителям прохождение теста.

Достаточно яркий пример. Вызов картинки CAPTCHA через явное указание проверочного кода, передачей его в качестве параметра вызова изображения: , где «hqhqhq» фигурирует в качестве запрашиваемого кода подтверждения. Уязвимость реализации очевидна: бот сканирует код страницы и выделяет проверочный код, подставляя его в соответствующее поле. Ваша защита ботом пройдена в доли секунды, а реальному человеку понадобится несколько секунд или даже минут на ввод проверочного кода.

Существует метод перебора , применяемый ботами. Капча всегда связана с сессией посетителя. При сравнительно небольшом варианте значений CAPTCHA , бот, регистрируя сессию, последовательно перебирает все варианты, рано или поздно угадывая верное значение.

Сегодня, благодаря господам спам-ботам и иже с ними, в сети практически невозможно что-либо сделать без ввода символов со сгенерированного изображения - CAPTCHA (далее - капча) . Фактически, это предотвращает выполнение какого-либо скрипта без участия человека, и в этом топике я расскажу, как такую капчу создать средствами PHP, а так же упомяну очень полезный топик другого хабраюзера, который пригодится при разработке изображения-капчи.

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

Основные правила При разработке капчи нужно обязательно соблюдать несколько основных правил:

1. Капча создана для людей
Она должна сходу читаться, но не в ущерб стойкости к распознаванию. Очень наглядный пример капчи, не соблюдающей это правило - изображение справа.

2. Генератор капчи должен быть четко ограничен в используемых символах
Наглядный пример - изображение в начале топика. Конечно, reCAPTCHA - чудесное изобретение, но порой она предлагает ввести символы, которые и в charmap найти сложно. Кстати, когда речь идет о капче с использованием кириллических символов - ни в коем случае генератор не должен использовать букву «ё». Лично я знаю много людей, у которых на ~ (тильда / ё) повешено какое-то действие в системе.

3. Капча должна быть стойкой к распознаванию
… но не в ущерб читаемости. Вообще, этот пункт - самый сложный во всей разработке. Необходимо найти золотую середину - капча сходу читается людьми и вообще (насколько возможно) не читается ботами. Так же необходимо учитывать специфику ресурса, на котором планируется использовать капчу, и его контингента. Если речь идет о, допустим, форуме читающих домохозяек за сорок, то на стойкость капчи можно плюнуть с высокой башни - никому он не упрется. Если речь идет о, например, имейджборде, то тут нужна капча а-ля вырвиглаз.

Проектирование В качестве теоретического объекта, для которого мы будем делать капчу, выступит сферический форум в вакууме, с умеренно агрессивными, умеренно умными и вообще умеренными пользователями. В разработке такой капчи нам поможет очень полезный топик от хабраюзера Pastafarianist . А именно я обращу внимание на перечисленные недостатки и достоинства взятых им капчей.

Итак, по порядку перечислим, что же мы можем использовать:

1. В изображении должно использоваться хотя бы несколько цветов. Желательно всегда разные


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

2. Должен присутствовать шум


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

3. Буквы должны находиться на небольшом расстоянии друг от друга


Тут главное не перестараться. Чрезмерное сближение символов приведет к сильному ухудшению читаемости человеком. На примере выше можно заметить, что буквы слипаются, это создает препятствие для бота при сегментации изображения.

4. Размеры символов должны быть разными


Если применять этот трюк, то надо помнить, что препятствие фактически выражается в том, что для сегментации капчи бот не сможет использовать постоянную матрицу. Поэтому если и делать размер символов разным, то обязательно для каждого символа размер должен быть случайным, динамическим.

5. Отвратительный шрифт


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

6. Символы под случайным углом

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

7. Динамические искажения

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

Итак, что же мы сделаем:
- Контрастный фон, с шумом
- Линии за текстом, линии на тексте
- Текст в случайном положении
- Количество символов будет случайным, от 4 до 7
- Размер каждого символа будет случайным
- Цвет текста каждый раз будет случайным
- Символы будут слегка прикасаться
- Каждый символ будет под случайным небольшим углом

Разработка Определимся с целью:
- Генерация шума
- Генерация текста
- Форма с возможностью обновления капчи
- Обработчик введенных данных
По мере написания статьи понял, что искажения в данном случае абсолютно неуместны. Для тех, кому они все же нужны - в конце топика ссылка на урок по созданию искажений.Пишем форму Обновить капчу Введите капчу:
Тут все предельно ясно, но на всякий случай я откомментировал некоторые строчки. Кстати, обратите внимание, я не установил параметр maxlenght у поля ввода. В большинстве случаев, разработчики устанавливают этот параметр, указывая размер капчи. Во-первых это нехилая такая подсказка для бота, во-вторых у нас количество символов будет динамическим. Все, интерфейс мы написали, пора приступать к созданию скрипта генерацииПишем генератор кода капчи (random.php)
Тут все ограничивается только вашим воображением. Как-то я видел иной способ - выбиралась текущая минута, час, месяц, все это перемножалось, из этого выбирались 10 случайных символов, дважды извлекался MD5-хеш, из него извлекались 6 случайных символов и затем все это еще и перемешивалось. Кстати, обратите внимание на выбранные мною символы - я исключил такие как i, l, 1 и 0, o, c, из-за того, что они слишком похожи друг на друга, в некоторых ситуациях пользователь может ошибиться. Генератор я назвал random.php (далее он будет запрашиваться в других скриптах).Пишем генератор изображения (captcha.php)