Капча: что это такое и какая она бывает. Что делать, когда просят ввести капчу Корректное значение капчи
Капча представляет собой специальную картинку с проверочным кодом, для того чтобы определить живой пользователь совершает действие или бот. Ввести captcha чаще всего предлагается в случае многочисленных одинаковых повторяющихся запросов к сервису.
Например, поисковые системы Яндекс и Google будут предлагать вам ввести captcha в случае частого обращения к тем или иным данным или сервисам. Также капча часто встречается при работе с различными скриптами: парсерами, кликерами, постерами и т.д. При парсинге поисковых систем или групп в социальных сетях.
Главная задача капчи предотвратить автоматические действия ботов. С этой задачей отлично справляется капча, разгадать витиеватый рисунок может только реальный пользователь, а не бот. Таким образом, при работе со скриптами, капча может служить большой помехой при работе с большими объемами данных.
Но всему есть решение, том числе и для автоматического ввода капчи. Как настроить автоматический ввод и распознавание капчи вы узнаете ниже из этой статьи.
1. Самая простая разновидность капчи — это капча из буквенных символов . Например, именно буквенную captcha использует Яндекс. Кроме букв могут быть использованы цифры.

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

3. Недавно появившаяся капча в виде картинки . В такой капче для разгадывания предлагается выбрать несколько картинок с определённым изображением. Капча будет распознанной в случае правильного выбора изображений.

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

Зачастую бывает сложно заниматься распознаванием капчи в реальном времени. Особенно сложно это сделать при запуске скрипта и работе большими объемами. Поисковые системы, заметив множественные запросы, будут посылать вам captcha снова и снова, желая прекратить массовые действия.
Данная проблема хорошо знакома вебмастерам и всем тем, кто работает с постерами, спамерами, парсерами и другими автоматическими программами. Однако, есть решение которое позволяет распознавать captcha автоматически. Для этого существуют специальные сервисы, пример такой сервиса rucaptcha.com.
Рукапча это популярный сервис ручного разгадывания капчи. Он позволяет автоматически вводить captcha, которая пришла для разгадывания вашему скрипту. Для того чтобы разгадывание и ввод происходил автоматически нужен специальный ключ. При помощи данного ключа ваши капчи буду поступать через сервис rucaptcha.com реальным людям для распознавания. Стоимость данной услуги невысокая и составляет всего 40 рублей за тысячу разгаданных картинок.

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

1. Капча создана для людей
Она должна сходу читаться, но не в ущерб стойкости к распознаванию. Очень наглядный пример капчи, не соблюдающей это правило - изображение справа.
2. Генератор капчи должен быть четко ограничен в используемых символах
Наглядный пример - изображение в начале топика. Конечно, reCAPTCHA - чудесное изобретение, но порой она предлагает ввести символы, которые и в charmap найти сложно. Кстати, когда речь идет о капче с использованием кириллических символов - ни в коем случае генератор не должен использовать букву «ё». Лично я знаю много людей, у которых на ~ (тильда / ё) повешено какое-то действие в системе.
3. Капча должна быть стойкой к распознаванию
… но не в ущерб читаемости. Вообще, этот пункт - самый сложный во всей разработке. Необходимо найти золотую середину - капча сходу читается людьми и вообще (насколько возможно) не читается ботами. Так же необходимо учитывать специфику ресурса, на котором планируется использовать капчу, и его контингента. Если речь идет о, допустим, форуме читающих домохозяек за сорок, то на стойкость капчи можно плюнуть с высокой башни - никому он не упрется. Если речь идет о, например, имейджборде, то тут нужна капча а-ля вырвиглаз.
Итак, по порядку перечислим, что же мы можем использовать:
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)
