• Tutorial

Сколько лет существует Хабр - столько лет на нём регулярно появляются посты про очередную капчу - будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает - как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча - это такая terra incognita для большинства разработчиков - как для тех, кто просто прикручивает её к очередной форме в надежде на то, что она будет работать «из коробки», так и для тех кто придумывает капчи вроде тех, на которых надо выбрать картинку с котиком из нескольких фото.

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

А для затравки - если вы считаете, что такая проверка капчи будет работать:
if($_POST["captcha"] == $_SESSION["captcha"]) return true; (пример из практики)
то вы глубоко заблуждаетесь.

Captcha

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

Два главных свойства капчи

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

Устойчивость к распознаванию - свойство, защищающее капчу от распознавания алгоритмом - например системой распознавания текста. Гарантирует то, что человек сможет прочитать текст на картинке, а компьютер нет.
Антипример: стандартная капча форумов phpBB 2.x таким свойством не обладала - из-за относительной простоты распознавания появились скрипты, которые спамили все подряд форумы вынуждая веб-мастеров менять капчу на более стойкую.

Устойчивость к угадыванию - свойство капчи, не позволяющее угадать её значение за небольшое число попыток (менее 1000). Если набор возможных значений капчи невелик, программе не составит труда угадать её подбором вместо распознавания.
Антипример: арифметическая капча вроде «1+2» (перебор чисел от 1 до 20 в скором времени даст результат).
Антипример: выбрать из нескольких картинок ту, на которой изображён котик.

Проверка капчи

Значение для проверки должно храниться на сервере, а не передаваться вместе с картинкой в браузер. Для сопоставления посетителя и правильного значения капчи необходимо использовать некий ключ, который передаётся вместе с капчей (идентификатор сессии, номер капчи и т.п.)
Антипример: если передавать саму капчу и значение для ее проверки (в том числе зашифрованное), то человеку достаточно один раз распознать такую капчу и далее использовать комбинацию «ответ»-«значение для проверки» в своём скрипте (по ссылке в начале поста как раз такой случай)

Перед проверкой ответа - надо убедиться, что он не пустой. В противном случае, злоумышленник может не загружая картинку или удалив идентификатор текущей сессии, передать пустое значение и пройти капчу, т.к. произойдёт сравнение двух пустых строк (в PHP несуществующее значение равно пустой строке).
Антипример: уже упомянутый мной код if($_POST["captcha"] == $_SESSION["captcha"]) return true;
Причем этот код был написан опытным программистом.

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

Пуленепробиваемая капча

Защита от перебора. Если ваша капча устойчива к распознаванию, но не очень устойчива к перебору (например на ней надо прочитать всего 3-4 цифры), желательно ограничить число неправильных ответов «с одного ip» / «для одного логина» / etc. Такие ограничения необходимо проверять ДО проверки самой капчи (то есть даже в случае правильно введенной капчи, при наличии ограничения она не должна считаться пройденной) иначе оно не будет препятствовать перебору.

Защита от DoS. При генерации капчи на своем сервере, надо понимать что это удобный вектор проведения DoS атак (которую, в отличие от DDoS, может устроить любой школьник). Для защиты можно ограничить число генерации капчи для одного ip, кэшированием капч и т.д.

Защита от распознавания. Если вы выбираете капчу, или вдруг собираетесь написать её сами, желательно понимать какая капча более защищена от распознавания. Существуют готовые универсальные скрипты распознавания капчи, работающие по принципу OCR , а в случае если ваш сайт заинтересует спамеров есть риск, что будут использовать / писать скрипт конкретно под вашу капчу. Последнее правда относится больше к сайтам уровня Яндекс или vk, а вот вариант с защитой от банальных OCR желательно предусмотреть.

Защита от антигейтов. Если говорить формально, то капча как тест Тьюринга не обязана защищать вас от антигейтов, так как в этом случае её будет распознавать человек. С практической же точки зрения, этот вопрос весьма актуален и защищаться как-то надо.
Тут нет и не может быть «золотого стандарта» (ибо в таком случае антигейты внедрят его поддержку), поэтому вы вольны дополнять капчу любыми ухищрениями, чтобы сделать её распознавание через антигейт невозможным. Например:
- нестандартная капча (сбор паззла, поворот изображения, клик по области на фото и т.п.);
- кириллическая капча - самое простое решение, но имеет ряд минусов: подходит только для проектов с русскоязычной аудиторией, есть антигейты с поддержкой кириллицы;
- использование виртуальной клавиатуры рядом с капчей для ввода нестандартных символов или фигур (может быть неудобно пользователям мобильных);

Юзабилити

Не просите ввести капчу, если вы уже убедились, что перед вами человек. Тут однако, надо быть осторожным, чтобы форму нельзя было использовать скриптом неограниченное число раз после однократного ввода капчи человеком.
Пример: форма регистрации. Если я где-то регистрируюсь, и забыл ввести поле «почтовый индекс», но правильно ввёл капчу - не надо показывать мне новую. Потратьте 10 минут на то, чтобы сохранить где-то у себя, что вот эту конкретную форму сейчас пытается заполнить живой человек.

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

Отказ от использования капчи

Лучшая капча - отсутствие капчи. Там где можно отказаться от её использования - это надо сделать. Возможно для этого придется реализовать дополнительные лимиты и проверки, но пользователи скажут вам спасибо.
Но тут надо быть очень осторожным. Например: форма регистрации без капчи, с полем email на который приходит письмо с активацией. Без дополнительных средств защиты такую форму могут завалить «левыми» адресами, и ваш сайт включат в черные списки почтовые службы. В таком случае можно обходиться без капчи, но только если у вас есть другой рубеж защиты, вроде лимита по ip.

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

Инструкция по правильному распознанию капч на сервисе сайт

ReCaptcha V2 New
Очень популярна в последнее время, представляет из себя 9 мини-картинок, из которых нужно выбрать 2-4 заданных картинки. Какие картинки нужно выбрать указывается либо образцом картинки, либо текстом. В ответ на такую капчу нужно ввести номера картинок, которые нужно выбрать. Номера вводятся без пробелов, без запятых. Если на самих картинках нет номеров, то они считаются слева-направо, сверху вниз. Вот так:
1 2 3
4 5 6
7 8 9

капча правильный
ответ
описание
13 справа изобраён образец, капуста. На картинках под номерами 1 и 3 мы видим капусту. В ответ на капчу пишем 13
58 Справа тарелка со спагетти. Этой картинке соответствуют картинки под номерами 5 и 8. На картинке под номер 3 то же макароны, но равиоли, а не спагетти.
239 Образца нет, только текст, на котором написано, какие картинки нужно выбрать. Сами картинки не пронумерованы, так что пользуемся инструкцией выше, что бы понять какой картинке соответсвует правильный номер
45 Можно сначала подумать, что правильный ответ 47. Но на 7 картинке не указатель, а просто вывеска. И остаётся только 4я картинка. Но должно быть минимум 2 подходящих изображения. Присматриваемся внимательнее и видим на 5м изоборажении указатель, сфотографированный с обратной стороны. правильный ответ 45
159
456 Инструкция только на английском языке, но слева дана картинка, поясняющая, что выбирать нужно дорожные знаки.
18 На приведённом образце - яйца. Они же на картинках 1 и 8, хоть они уже и очищены и разрезаны. Правильный ответ - 18
25 На приведённом образце - пирог. На картинках 2 и 5 видим пироги и отвечаем 25.
12 Вебмастер, который прислал капчу, по своему принципу пронумеровал изображения. В данном примере пользуемся его нумерацией и указываем что нужно выбрать 1 и 2 изображение
356 Этот вебмастер в правильном порядке нумерует картинки, но начал нумерацию не с единицы а с нуля.

ReCaptcha v2 с дорожными знаками и указателями улиц

Особое внимание уделим капчам, на которых изображены дорожные знаки или указатели улиц. Указатель улицы это не дорожный знак.

капча правильный
ответ
описание
1239 Street name = указатели улиц
Улицы всегда написаны белым на зелёном фоне в одну строчку. На изображении 7 дорожный указатель.
1348 Тут всё просто
78

Street signs = дорожные знаки

На этой капче всё просто

278 На изображении #7 укзатель находится не на столбе, как обычные указатели, а на отбойнике. Тем не менее, это дорожный указатель.
36 Знак автобусной остановки это тоже дорожный указатель
1248 Будьте внимательны, на этой капче нас просят указать указатели улиц.
2479 На изображении №1 указатель, а не имя улицы.
1236 На изображении №5 указатель, а не имя улицы. На изображении №2 не видно название улицы, но можно угадать, что оно там есть.

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

капча правильный
ответ
описание
video tape простая капча, вводится без проблем
what if? Обратите внимание - знаки препинания тоже нужно вводить
When, where? И запятую и знак вопроса нужно указывать в ответе

i like people В слове LIKE первую букву сложно разобрать, но если смотреть на всю фразу целиком - легко понять что там за буква.
I like people - я люблю людей

rooftop Можно подумать что первая буква в этой капче - P и к ней просто приклеились две палочки. Но слова POOFTOP не существует, а ROOFTOP это что-то, что установлено на крыше.. Ведь мало кто знает все эти слова, ошибиться очень легко.

first post! Первая буква скрыта, но смотря на слово целиком, можно догадаться что там написано FIRST
Но, иногда попадаются такие, которые совсем не разобрать. В таком случае нужно нажать "не могу разобрать"

Введение капчи может понадобиться, чтобы нормально пользоваться какой-то программой, сайтом или же для регистрации . Суть капчи проста: подтвердить, что вы не робот. Но что делать, если она не открывается или упорно выдаёт, что вы ввели неверный результат?

    • Почему сложно распознать капчу
    • Если капча введена неверно
    • Как вводить капчу за деньги

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

Почему сложно распознать капчу

Ниже приведены некоторые способы защиты:

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

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

Если капча введена неверно

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

  1. Зайти с разных браузеров. Иногда это помогает.
  2. Проверить скорость Интернета. Дело в том, что при очень низких показателях картинка может банально не загружаться. Или делать это с ошибками.
  3. Убедиться в том, что вы разрешили показ изображений, ведь капча - по сути картинка. Желательно посмотреть это в соответствующих настройках. Если там стояло ограничение, просто исправьте и перезагрузите браузер.
  4. Зайти с главной страницы сайта. Это действительно иногда срабатывает.
  5. Попытаться найти аудиоверсию капчи. Вполне возможно, что с озвучкой всё в порядке.
  6. Постараться пройти регистрацию или же выполнить нужные действия с сотового. Бывает, что мобильная версия сайта вполне пускает.
  7. Не проходит проверка: капча может конфликтовать с антивирусным ПО, она воспринимается как потенциально опасный элемент. Попробуйте деактивировать антивирусник и обновить страницу;
  8. Спросить, не возникает ли схожая проблема у других пользователей в Рунете. Так вы будете точно знать, связана ли эта неприятность с вашим компьютером.

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

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

    • Когда нужно вводить защитный код?
    • Какие бывают виды капчи?
    • Ввод капчей как дополнительный заработок
    • Инструкция по заработку на капчах

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

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

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

Когда нужно вводить защитный код?

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

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

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

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

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

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

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

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

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

Ввод капчей как дополнительный заработок

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

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

Смотрите видео - Как заработать на вводе капчи:

Инструкция по заработку на капчах

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

  1. Зарегистрироваться на сервисе, который специализируется именно на этой сфере. Выбрать можно любой из предложенных, желательно пользоваться самыми популярными среди пользователей интернета.
  2. После регистрации сазу можно преступать к работе, но при этом не забывайте о том, что у вас должен быть свой счет в интернет пространстве, куда вам будут начисляться денежные средства за проделанную вами работу.
  3. Нажимаете на кнопку - «старт» или же «начинай зарабатывать» и вперед, за доходом. Денежные средства будут начисляться на счет автоматически, после каждого ввода капчи.

Капча (англ. captcha) - аббревиатура от «Completely Automatic Public Turing Test to Tell Computers and Humans Apart» (полностью автоматический тест Тьюринга для отличния компьютеров от людей). По сути, это защита от заполнения и отправки любых форм ботами и спамерами в автоматическом режиме, будь то запрос в поисковой системе или регистрация в каком-либо сервисе, отправка комментария под статьёй или заполнение анкеты на сайте. Как правило, представляет собой картинку с со случайным текстом, цифрами, буквами, значение которой нужно записать в специальную форму.

Эффект рассчитан на то, что боты картинку не распознают, а человек - сможет. Соответственно, спамеры в автоматическом режиме и боты проверку не пройдут, и спам тоже.

Виды капчи, какая она бывает

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

Бывают такие, что приходится выбирать картинки по какому-то признаку. Например, подобная схема реализована на сайте МТС в разделе отправки бесплатных сообщений SMS.
Собственно, видов превеликое множество. Как же выбрать то, что нужно? Лично я рекомендую пользоваться самописными вариантами, ибо тут всё будет зависеть от фантазии вашей или ваших программистов. Если капча получится оригинальной, то такую вещь обойти спамерам будет намного сложнее. Но, так как это довольно накладно либо по времени, либо по деньгам, советую воспользоваться сервисом

Google ReCaptcha — как установить и настроить

Google reCAPTCHA — это сервис, который предоставляет бесплатную капчу для защиты различных форм ввода данных на сайте от спамеров и ботов.

На изображении вы видите промо Google reCAPTCHA Invisible — нового вида рекапчи (невидимая), который только проходит бета-тестирование. Соответственно, пока что пользоваться им я не рекомендую, лучше отдать предпочтение классической проверенной рекапче .

  1. Как установить Google Recaptcha в WordPress

    Чтобы установить Google Recaptcha в WordPress, самым удобным будет сделать это через плагин Google Captcha (reCAPTCHA) by BestWebSoft

    Устанавливаете плагин, в поля вводите ключи для домена, которые мы приготовили по инструкции выше — и готово.

    Как защитить комментарии от спама без капчи

    Если морока с собственными комментариями ни к чему, трудно установить капчу, она Вам почему-то не нравится или просто нет такой возможности, то можно воспользоваться . Как выглядит Disqus, можно увидеть под этой статьёй, на этом сайте интегрирована и используется эта система комментирования. Из плюсов — очень удобная система модерирования, отсутствие спама как такового, приятный внешний вид.

    Как обойти капчу

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


    Суть сервиса заключается в том, что он за небольшую плату предоставляет сервис распознавания капчи. Капчу распознают люди, готовые это делать за копейки.
    Такой сервис может пригодиться, скажем, для парсера поисковой выдачи (например, KeyCollector). Поисковые системы Google или Yandex при слишком частых запросах к ним начнут подозревать автоматические запросы и будут просить вводить капчу. Тут и пригодится сервис автоматического распознавания капчи. Сам сервис предоставляет API для взаимодействия с ним. Многие программы — парсеры, имеют встроенный функционал для взаимодействия с антикапчей (тот же KeyCollector имеет его), вам будет достаточно только пополнить баланс и прописать ключи API сервиса в программе, остальное — дело техники.