Как боты обходят капчу. Как это работает: CAPTCHA. Учимся убирать captcha

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

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

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

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

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

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

Одним из первых успешных методов по подбору номеров домов помог реализовать алгоритм распознавания изображений. Потом появились более сложные варианты распознавания, которые специализировались на Google Recaptcha. Но и гугл не оставался в стороне, картинки стали подвергаться всевозможным обработкам: размытию, растяжению, искажению.

Взлом Google Recaptcha посредством Google Speech

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

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

Однако и здесь нашлось весьма забавное решение. На помощь специалистам безопасности для взлома Google Recaptcha 2 пришёл... сам гугл! Используя Google API Speech можно было достоверно и точно распознать звуковые уведомления капчи. Уязвимость применили на практике и написали сервис по перенаправлению аудиофайлов в распознавание, а потом подстановка результата в поле формы рекапчи.

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

А пока будем ждать новых новостей и новых эксплоитов.

Гугл рекапча (reCaptcha v2) перестала быть проблемой для наших пользователей. Мы внедрили интеграцию с популярным сервисов по обходу капчи Death By Captcha и теперь ваши скраперы могут легко обходить самые современные капчи.

Давайте посмотрим, как выглядит reCaptcha v2:

Если вы видите именно такую капчу на сайте. который вам нужно отпарсить, то эта статья вам обязательно поможет. Мы постараемя дать вам исчерпывающее руководство на реальном примере, так, чтобы вы смогли легко внедрить подобное решение для вашего сайта. Мы же будем парсить следующий сайт: http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/Cnpjreva_Solicitacao2.asp .

Для того, чтобы пользовать этим функционалом вам нужно иметь собственный аккаунт в службе Death by Captcha . Их услуги не бесплатны, стоимость решения 100 капч составляет примерно 2.89$ (цена актуальна на 28.02.2018).

Решение капчи происходит автоматически, вам нужно лишь загрузить страницу с капчей в ваш скрапер и вызвать специальную команду captcha_resolve с определенными параметрами:

prodiver : провайдер решений для капчи, нужно установить значение deathbycaptcha.com
type : тип капчи, нужно установить значение nocaptchav2
username : имя пользователя вашего аккаунта в системе death by captcha
password : пароль вашего аккаунта в системе death by captcha

ВНИМАНИЕ!!! Для того чтобы капча этого типа была успешно решена, люди, которые будут вручную решать вашу капчу должны будут это делать под тем же IP адресом, что использует ваш парсер. Поэтому, единственный вариант этого достичь — использовать ВАШ СОБСТВЕННЫЙ ПРОКСИ СЕРВЕР в конфигурации вашего диггера. Наши штатные прокси сервера не могут быть доступны с IP адресов, вне нашей основной сети, поэтому штатные прокси просто не будут работать в этом случае. В дальнейшем мы внедрим специальный пул прокси серверов для этой задачи, но пока вы должны будете использовать свой прокси.

Базовый код нашего парсера будет таким:

Config: debug: 2 agent: Firefox proxy: ВАШ ПРОКСИ НУЖНО ВСТАВИТЬ СЮДА do: # Мы будем повторять неудавшийся запрос, поэтому пропишем значение переменной, # которую будет использовать опция repeat - variable_set: field: repeat value: "yes" # Загружаем страницу с капчей - walk: to: http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/cnpjreva_solicitacao2.asp repeat: do: # Решаем капчу - captcha_resolve: provider: deathbycaptcha.com type: nocaptchav2 username: ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ В СЛУЖБЕ DBC password: ВАШ ПАРОЛЬ В СЛУЖБЕ DBC

Пока не запускайте ваш парсер, просто изучите код. Если капча решена успешно, токен будет сохранен в переменной captcha . Поэтому, первым делом после решения капчи мы должны проверить наличие токена в переменной. Если токен есть, мы отключим опцию repeat и передадим токен на сервер вместе с другими параметрами нашего запроса. Если токена нет, запрос будет повторен, поскольку опция repeat установлена в «yes».

Config: debug: 2 agent: Firefox proxy: ВАШ ПРОКСИ НУЖНО ВСТАВИТЬ СЮДА do: # Мы будем повторять неудавшийся запрос, поэтому пропишем значение переменной, # которую будет использовать опция repeat - variable_set: field: repeat value: "yes" # Загружаем страницу с капчей - walk: to: http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/cnpjreva_solicitacao2.asp repeat: do: # Решаем капчу - captcha_resolve: provider: deathbycaptcha.com type: nocaptchav2 username: ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ В СЛУЖБЕ DBC password: ВАШ ПАРОЛЬ В СЛУЖБЕ DBC # Переходим в блок body - find: path: body do: # Читаем значение переменной captcha в регистр - variable_get: captcha # Проверяем, не пустой ли у нас регистр - if: match: \w+ do: # Если не пустой, отключаем repeat - variable_set: field: repeat value: "no" # Передаем токен и другие параметры на сайт с которого мы собираем информацию. # В данном случае мы пытаемся получить данные о компании по его ИНН (CNPJ) - walk: to: post: http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/valida_recaptcha.asp data: origem: comprovante cnpj: 05754558000186 g-recaptcha-response: submit1: Consultar search_type: cnpj do: - find: path: "div#principal" do: - object_new: item - find: path: td:haschild(font:contains("NÚMERO DE INSCRIÇÃO")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: registration_number - find: path: td:haschild(font:contains("DATA DE ABERTURA")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: registration_date - find: path: td:haschild(font:contains("NOME EMPRESARIAL")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: company_name - find: path: td:haschild(font:contains("CÓDIGO E DESCRIÇÃO DA ATIVIDADE ECONÔMICA PRINCIPAL")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: primary_code - find: path: td:haschild(font:contains("CÓDIGO E DESCRIÇÃO DAS ATIVIDADES ECONÔMICAS SECUNDÁRIAS")) b do: - parse - space_dedupe - trim - object_field_push: object: item field: secondary_codes - find: path: td:haschild(font:contains("CÓDIGO E DESCRIÇÃO DA NATUREZA JURÍDICA")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: legal_code - find: path: td:haschild(font:contains("LOGRADOURO")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: street - find: path: td:haschild(font:contains("BAIRRO/DISTRITO")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: district - find: path: td:haschild(font:contains("MUNICÍPIO")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: municipal - find: path: td:haschild(font:contains("TELEFONE")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: phone - find: path: td:haschild(font:contains("E-MAIL")) b slice: 0 do: - parse - space_dedupe - trim - object_field_set: object: item field: email - object_save: name: item

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

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
Но, иногда попадаются такие, которые совсем не разобрать. В таком случае нужно нажать "не могу разобрать"

Другие виды капч

капча правильный
ответ
описание

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

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

Какой бывает капча

Типичная капча - это ввод искаженных символов. Также существуют и другие виды капч.

К ним относятся:

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

Чем сложнее капча, тем лучше защищен сайт или другой ресурс. Обойти капчу можно: как именно, мы сейчас рассмотрим.

Как обойти капчу на сайте?

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

Существуют разные виды программ - для ручного и автоматического распознавания капчи. Самые популярные - Rucaptcha и Antigate. Они не бесплатные, но цена распознавания капчи совсем небольшая - от 18 рублей за 1000 вводов на Rucaptcha и от 0,7$ за 1000 изображений на Antigate. Для обычного пользователя такого пакета хватит надолго.

Программы для автоматического распознавания капчи стоят дороже. Например, стоимость самого дешевого пакета CapMonster 2 составляет 37$. Но такие программы рассчитаны не на обычного пользователя, а на тех, кто ведет активную рассылку по многим адресам, ведь они способны распознавать по нескольку миллионов капч в день.
Когда программа установлена и запущена в работу, от вас больше не будут требовать доказать, что вы не робот - распознавать капчу будет программа.
Нужно отдать должное разработчикам - такие программы значительно упрощают нам жизнь. С другой стороны, очевидно, что от настоящих роботов капча не спасет, зато она вполне может вымотать нервы обычным пользователям Интернета.
Смотрите видео — Как включить распознавание капчи через antigate, rucaptcha, captcha24, captchabot на DelphiXE5

Антикапча сервис ручного распознавания Над распознаванием капчи работают живые люди, поэтому сервису подвластно все, что способен распознать человек:

текстовые капчи, графические капчи: ReCaptcha V2, KeyCaptcha, FunCaptcha и др.

Зарегистрироваться>>>

Как обойти капчу с помощью динамического ай-пи адреса

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

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

Если капча появляется слишком часто, необходимо выяснить, почему это происходит? Пользователям Гугл Хром есть смысл проверить расширения. Например, если отключить блокирующее рекламу расширение AdBlock или плагин RDS бар, то скорее всего, капча больше не появится.

Как заработать на капчах

Если вас нисколько не раздражает ввод капчи, тогда вы можете еще и заработать на этом . Для этого нужно найти сервис, в котором вы захотите работать «наборщиком капч», и пройти процесс регистрации на сайте. Сразу после этого можно приступать к работе. Чем больше вы набираете капч, тем больше получите денег. Трудно придумать более простой способ заработка в Сети. На Rucaptcha ставка составляет от 1 до 10 копеек за распознавание одного изображения.

Заработок 💰 онлайн на вводе капчи Всё, что вам нужно — это правильно ввести текст с картинки (с капчи).

Вы получаете деньги 💵 за каждый ввод капчи.

Зарегистрироваться>>>

Если вас интересует тема заработка в Интернете, здесь вы найдете всю самую актуальную информацию 50 лучших способов заработать в Интернете

Сколько лет существует Хабр - столько лет на нём регулярно появляются посты про очередную капчу - будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает - как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча - это такая 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.

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