Пользователь
0,0
рейтинг
8 июня 2011 в 02:41

Разработка → В поисках идеальной CAPTCHA

CAPTCHA, или Completely Automated Public Turing Tests to Tell Computers and Humans Apart (Полностью автоматический публичный тест Тьюринга для различения компьютеров и людей), была создана для того, что бы убедиться, что введенные данные не были сгенерированы компьютером. Эти своеобразные тесты обычно используются в Интернете для защиты форм регистрации и комментирования от спама. Если быть честным, я испытываю смешанные чувства насчет CAPTCHA. Она в большинстве случаев раздражает меня, но не смотря на это я использовал CAPTCHA в качестве защиты на некоторых сайтах.

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

Стремление к человечности


Для того, что бы понять нужду в CAPTCHA, нам нужно понять цели, побуждающие спамеров к созданию и использованию автоматических систем ввода. В целях этой статьи мы будем принимать за спам любое нежелательное действие или ввод на сайте, будь то нечто вредоносное, приносящее доход спамеру, или же вообще несоответствующее назначению и тематике сайта. В цели спама входят:
  • Массивная реклама;
  • Манипулирование онлайновыми системами голосования;
  • Создание нечестного превосходства;
  • Вандализм или уничтожение целостности, чистоты сайта;
  • Публикация неуместных ссылок для повышения рейтингов в поисковых системах;
  • Получение доступа к личной информации;
  • Распространение вредоносного кода.


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

Те, кто управляют сайтами, знают, что это достаточно распространенный бизнес и достаточно серьезная проблема. Akismet, популярная система по отлову спама (чаще всего встречается в виде плагина для WordPress), фиксирует более 18 миллионов спам-комментариев в день, в сумме эта система отловила 20 миллиардов комментариев за все ее историю. Система Mollom, которая создана с тем же предназначением, отлавливает более миллиона спам-комментариев в день, эта же система подсчитала, что более 90% комментариев – спам. Никакие просьбы остановиться не действуют на спамеров, но их жадность может сыграть нам на руку; использование автоматических систем для получения выгоды имеет некоторые слабости.

Знакомство с CAPTCHA

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


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

Не секрет то, что CAPTCHA используется практически везде. По статистике проекта reCAPTCHA более 200 миллионов сгенерированных reCAPTCHA проходят проверку ежедневно, в среднем пользователи затрачивают на ввод 10 секунд. Проект Drupal CAPTCHA сообщает о 100 тысячах использований в неделю, при том, что это лишь часть сайтов с этой защитой (речь идет лишь о тех, кто дал добро на отправку отчетов).

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

К сожалению, это не так. Проблема читаемости CAPTCHA не нова. Организация W3C опубликовала отчет в 2005 году на тему недоступности CAPTCHA, в котором было объявлено, что читаемость CAPTCHA человеком в некоторых системах может достигать лишь 90%. Немногим позже, в 2009 году, Кейси Генри обратил внимание на влияние CAPTCHA на переходы и предположил, что возможные потери клиентов составляют примерно 3%:
Учитывая тот факт, что множество людей рассматривают переходы, как источник доходов, потеря 3.2% клиентов может отразиться на продажах. Как по мне, так лучше вручную перебирать спам, чем терять часть прибыли.
— Кейси Генри, CAPTCHAs’ Effect on Conversion Rates

В 2010 году, команда Стэндфордского Университета опубликовала исследование, названное “Насколько хорошо люди справляются с CAPTCHA? Подробная оценка ситуации” (PDF), в котором была дана оценка CAPTCHA на крупнейших сайтах Интернета. Не стало сюрпризом то, что результаты оказались весьма неудовлетворительными, но больше всего поражает тот факт, что в среднем люди тратили 28.4 секунд на решение аудио-CAPTCHA. В исследовании так же уделялось внимание на проблемы людей, у которых английский язык не является родным.

Веб-разработчик Тим Кадлек предвещает смерть CAPTCHA, предоставляя достаточно серьезный аргумент против использования этой защиты:
Спам не является проблемой пользователей, это проблема людей, администрирующих сайт. Это очень высокомерно со стороны администраторов – сваливать такую проблему на плечи пользователей сайта.
— Тим Кадлек, Death To CAPTCHAs

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

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

Мир CAPTCHA


Человеческий мозг является потрясающим инструментом. Его возможность концептуализировать, находить порядок в хаосе, адаптировать что-либо под человека делает его невероятно полезной вещью. В некоторых задачах он с легкостью оставляет компьютеры позади. В других – например, математика – он проигрывает по всем параметрам.
Логически рассуждая, можно вывести основные параметры наиболее успешной CAPTCHA. Итак, CAPTCHA должна быть:
  • Задачей, которую пользователи могут решить в любых условиях, но на решение которой не способен компьютер,
  • Задачей, которая решается пользователями в миг, но которая является тяжелой для компьютера,
  • Задачей, для решения которой требуется минимум ввода данных,
  • Задачей, которая должна быть легко выполнимой для всех пользователей, включая тех, кто страдает специфическими заболеваниями (CAPTCHA должна быть не сложнее обычного веб-серфинга).


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

Определение текста

Наиболее популярным типом CAPTCHA на данный момент является определение текста, набора символов (ярким примером является проект reCAPTCHA).


Проект reCAPTCHA нацелен на остановку спама и помощь в оцифровке книг.

reCAPTCHA была создана в Университете Карнеги-Меллона, доме первопроходцев CAPTCHA и создателей термина (в 2000). Ныне под управлением корпорации Google, проект использует отсканированный текст, который системы оптического распознавания символов (OCR) понять не могут. Это, в теории, предоставляет не взламываемую CAPTCHA, у которой так же есть еще одна «фича» — помощь в оцифровке книг силами пользователей.


Пример текста, проблемного для OCR, именно такие «проблемные» тексты использует reCAPTCHA

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

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

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



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

Пока текстовая CAPTCHA имеет некоторые недостатки (к примеру, спамеры могут использовать специальное ПО для распознавания текста в изображении и таким образом преодолеть анти-спам защиту), она все таки бесспорно решаема. Этот факт – камень в огород тех, кто не признает подобную защиту.

Логические задачи

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

Сервис TextCAPTCHA располагает более 180 миллионами вопросов, например:
  • Какая буква является шестой в слове «хабрахабр»?
  • Как выглядит число пятьдесят восемь тысяч пятьсот семьдесят четыре в виде цифр?
  • Какое число из 3, двадцать девять, 70, 46, 65 является наименьшим?

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

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

Специфические вопросы о конкретном сайте, такие как «Как называется этот сайт?» и «Какой цвет доминирует на изображении выше?» могут быть лучше вопросов на общую тему. Но с другой стороны, конечно, количество таких вопросов в любом случае будет смотреться ничтожным рядом с 180 миллионами вопросов от TextCAPTCHA.

Наиболее заметная проблема логических вопросов заключается в том, что они не многоязычны, обычно используется английский язык. Создание базы с сотнями миллионов вопросов на всех языках мира – задача непосильная никому. Когда перспективы столь далеки от идеальных, всплывает вопрос: правильным ли решением является CAPTCHA?

Определение изображений

Много людей экспериментировали с изображениями вместо текста. Выгода? Нет проблем с разборчивостью. Сервисы вроде identiPIC предлагают пользователю определить объект на изображении. Корпорация Microsoft так же исследовала этот метод в своем проекте Asirra.


Microsoft Asirra

Тот факт, что мы не видим распространенности подобной CAPTCHA, означает, что этот метод не улучшает юзабилити. На самом деле, он ставит под угрозу доступность. Люди с проблемным зрением лишены всякого шанса пройти эту CAPTCHA, а добавление какого-либо текста или описания резко снизит эффективность теста.

В 2009 году Google опубликовал исследование (созданное под руководством Рича Госсвейлера, Марьяма Кемвара и Шумита Балуджа), в котором был обращен взгляд на альтернативные формы этого типа CAPTCHA. Проект предлагал пользователям поправить положения изображений, поворачивая их.



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

Определение друзей

Еще одна действительно интересная CAPTCHA, представленная в январе 2011 года как результат работы интернет-гиганта Facebook. Компания экспериментирует с социальной аутентификацией для подтверждения владения аккаунтом. В чем же заключается этот эксперимент:
Мы покажем вам несколько фотографий ваших друзей и попросим вас назвать того, кто на них изображен. Хакеры на другой стороне планеты могут знать ваш пароль, но не могут знать ваших друзей.
— Алекс Райс, Facebook, A Continued Commitment to Security


Тест Facebook на определение друзей

То, что делает нововведение Facebook абсолютно отличным от остальных решений, так это то, что эта CAPTCHA отсеивает не только машин, но и вполне себе человечных злоумышленников.
У Facebook определенно есть перспектива внедрить эту CAPTCHA по всему Интернету. С базой в 600 миллионов пользователей и миллионами сайтов, в которые интегрированы модули Facebook, интернет-гигант может использовать метод определения друзей для аутентификации где угодно. Нельзя забывать и про то, что подобный метод куда легче, чем определение текста.

Есть только одна проблема. Действительно ли вы знаете, кто же ваши друзья? Не секрет, что зачастую запросы дружбы – предмет обмена между пользователями для повышение заветной циферки, отражающей количество друзей. Когда этот список полон абсолютно неизвестных вам персон – едва ли вы пройдете этот тест. Какой бы хорошей идея Facebook ни была, она все равно в конечном итоге обречена на провал, потому, что мы люди – мы нарушаем правила.

Интерактивные CAPTCHA

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


They Make Apps использует CAPTCHA в виде ползунка

Очевидно, этот вариант не подходит для людей с ограниченными способностями. Более того, разработка скрипта, который автоматически бы переводил ползунок для активации кнопки «Отправить» не должна быть сложной. Более продвинутая версия ползунка используется в комментариях в блоге Adafruit. Четыре разных ползунка должны быть установлены в правильное положение для публикации комментария.


CAPTCHA в блоге Adafruit

Более продвинутое решение?


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

Из всех доступных решений, текстовая CAPTCHA (вроде reCAPTCHA) выглядит наиболее привлекательно. Но вопрос все равно остался открытым: зачем мы просим пользователей выполнять задания? Разумеется, мы можем победить спамеров в их же игре используя автоматические системы, которые будут делать за нас всю работу. Итак, мы пришли к тому, что всегда есть определенная проблема, которую решает CAPTCHA.
Не смотря на превосходство компьютерного интеллекта, большинство механизмов, созданных для спама — тупые. Если отправка данных оканчивается провалом (из-за CAPTCHA или же по какой-либо другой причине), то спам-бот пойдет по своему списку сайтов дальше. Джеф Атвуд наглядно показал это в 2006 году в своей статье “Эффективность CAPTCHA”. Не смотря на исследования в области взлома CAPTCHA, большинство спамеров не желает инвестировать в эти исследования или вообще пользоваться средствами взлома. Приличное количество сайтов, доступных для атаки и скорость, с которой эта атака производится означают, что взлом CAPTCHA не входит в интересы большей части спамеров.

Корпорация BBC является одним из самых тщательных исследователей в этой области в Великобритании. Ее требования к доступности не имеют равных, и недавнее исследование систем CAPTCHA в плане доступности пришло к выразительному и минималистическому ответу: «Нет»:
Участники с проблемным зрением ожидали полной доступности от BBC, и мы почувствовали, что использование подобных систем защиты может подмочить нашу репутацию. Пользователи испытывали некоторые проблемы с искаженным текстом. Логические паззлы показались им слишком необычными. Аудио им тоже не понравилось. В общем, пользователи испытывали к CAPTCHA крайне негативные чувства.
— Рован Гайлс, BBC, CAPTCHA and BBC iD

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

Альтернативы CAPTCHA


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

Автоматическое и ручное определение спама

Мы упомянули несколько сервисов по определению спама в самом начале статьи. Akismet, Mollom и SBlam! анализируют полученные от пользователей данные и отмечают спам автоматически. Система Mollom иной раз предлагает ввести CAPTCHA, но только в том случае, если она не уверена. Но почему бы не разработать свою собственную систему, которая будет подогнана специально под нужды, требования и специфику определенного сайта?

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

Метод «Горшочек Меда»

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

Метод «горшочек с медом» может быть более эффективным, если обфусцировать скрытие поля методами JavaScript или хэшированием данных. Эти методы не непробиваемы, но мы можем рассчитывать на лучшее.
JavaScript может быть использован для заполнения скрытых полей динамически, что может быть проверено скриптом на стороне сервера. Scratchmedia использует подобное решение наряду с CAPTCHA, если JavaScript отключен.
Можно так же использовать дополнительный таймстамп и данные сессии для определения автоматической отправки. Недавнее обсуждение на сайте Stack Overflow представляло из себя огромное количество примеров и идей насчет этого, включая Hashcash, который доступен в виде плагина для WordPress. Урок по созданию такой защиты средствами jQuery описывает похожий метод и включает в себя интересную мысль:
Воры знают, что если у дома есть внешнее освещение, собака во дворе или другие подобные средства защиты – то в этот дом лучше не соваться. Воры ищут большую выручку с минимальными затратами и риском.
— Джек Борн, Safer Contact Forms Without CAPTCHAs

Централизация базы пользователей

С постепенной «социализацией» Интернета, множество сайтов стали предлагать пользователям зарегистрироваться и взаимодействовать друг с другом. Публикация данных на сайт обычно проводится наряду с регистрацией полноценного аккаунта, или же анонимно. Оба этих метода являются открытыми воротами для спама. В 2008 году, Facebook анонсировал Facebook Connect, сервис, который предоставляет сайтам и их пользователям интегрированную платформу на базе социальной сети. Twitter подхватил эстафету в 2009 с похожим сервисом «Войти с помощью Twitter». Оба этих сервиса могут быть встроены на сайт весьма легко, с их помощью можно полностью избавиться от регистрации и форм для комментариев, которые являются целью ботов.

Эти сервисы стали настолько популярными, что появился Janrain.
Сервис Janrain предоставляет свое собственно решение, базированное на вышеупомянутых Facebook Connect, Sign in with Twitter и иже с ними, для того, что бы сделать сайт доступным из любой социальной сети.


Mahalo предоставляет возможность авторизоваться, используя любую социальную сеть с помощью Janrain

Другие сервисы типа Disqus, позволяют пользователям взаимодействовать с помощью встроенной системой защиты от спама и встроенной авторизацией.
Практически полное отсутствие анонимности заставляет пользователей подумать дважды перед отправкой какого-либо контента. Это так же очень эффективно предотвращает спам; стоит удалить одного пользователя Facebook и все сайты с подключенным Facebook Connect стали огорожены от очередного спамера.

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

Фиксирование времени, затраченного пользователем

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

Идеальная CAPTCHA


Судя по многолетнему опыту и исследованиям можно с уверенностью сказать, что CAPTCHA далека от идеала как решение проблемы. Уберем спамеров из уравнения и таким образом мы полностью избавимся от нужды в CAPTCHA; именно на это мы и должны ориентироваться. Идеальная CAPTCHA – отсутствующая CAPTCHA.

Восстание людей

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

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

Мы должны признать необходимость в модерации и определения ботов в фоне, невидимыми методами. CAPTCHA – лучшее временное решение на данный момент и худшее в целом. Либо бороться со спамом вручную, либо просто забыть про интересы пользователей – выбор за вами.

Выводы

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

Понимание альтернатив (речь идет о тех, где проверка на спам происходит незаметно для пользователя) и встраивание их на сайты – это хороший старт. Это позитивный шаг вперед к улучшению юзабилити и увеличению посещаемости. Если пользователи публикуют контент на вашем сайте, отблагодарите их хорошей защитой от спама:
  • Модерация везде, где только возможно
    Не разрешайте размещать определенный контент на сайте, или наоборот, разрешайте его публикацию после прохождения проверки аккаунта. Лучше всего использовать сервисы типа Facebook Connect или Disqus; это будет проще и для вас, и для пользователей.
  • Альтернативы CAPTCHA
    Попробуйте использовать метод «горшочек с медом» или любой другой, лишь бы он бы невидимым для пользователей.
  • Определение с клиентской стороны
    Это будет работать просто потому, что пока есть обходные пути, спамеры не будут тратить свое время. Взаимодействие с ключевыми словами или мышью может быть использовано для определения, кто вводит данные, человек или машина. Эта защита не должна быть использована как самостоятельная, но она добавит защищенности сайту.
  • Определение с серверной стороны
    Разработчики должны обратить внимание на определение спама с серверной стороны для мониторинга пользователей и поиска необычной активности. Специальные сервисы типа Akismet доступны и эффективны, но, как уже было сказано, они не могут подстраиваться под специфику вашего сайта.
  • Общественная модерация
    Простая возможность голосовать за контент поможет избавиться от спама.


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




Оригинал статьи: In Search Of The Perfect CAPTCHA, David Bushell, 03/04/2011.
Перевод довольно вольный, но суть и мысль, передаваемые автором, сохранены. Исключены несколько незначительных фрагментов, каждый с определенной причиной. Например, фрагмент с информацией об изменении алгоритмов Google был удален, так как ссылается на недоступную страницу в блоге Google (404).
Прошу не кидаться ничем нехорошим, мой первый перевод такого объема.




image
Этот текст распространяется на условиях лицензии «Creative Commons Attribution-NonCommercial-ShareAlike 3.0».
Вы можете копировать, редактировать и использовать не в коммерческих целях этот текст при обязательном указании авторства и сохранении оригинальной лицензии.
Понкин Дмитрий @Adiost
карма
83,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (133)

  • +3
    Для Honeypot captcha есть модификация со случайными названиями полей (id), включая 1-2 «ложных» поля — это еще больше усложняет жизнь спамеру.

    Спасибо за перевод — хороший уровень!
    • +2
      Благодарю за приятный отзыв, как я уже говорил, это мой первый подобный перевод.
      И перевел я на одном дыхании — потратил где-то 14 часов, практически не поднимая задницы со стула. Узнал много новых фразеологизмов и идиом. Даже гугл-транслейтер (которым я иногда пользовался, когда не понимал, что значит то или иное выражение) не знает, что coiner — это не только фальшивомонетчик или квалифицированный работник монетного двора, это еще и кто-то, кто является источником какой-то новой информации. Такие дела.
      • +2
        Да, «coined a term» — «придумал термин», а переводя по отдельности это — «отчеканил срок» :-)

        Слушайте, 14 часов работы без отрыва — это серьезно! Расскажете свой рецепт вхождения «в поток»?
        • 0
          Да я сам себе удивился. Когда писал этот комментарий, я рассчитывал где-то на июль. Сегодня подумал, переведу-ка страничку-другую. Вот и перевел всю статью :)
        • 0
          Поставить RescueTime и честно ему отвечать на вопрос «чем ты занимался» после отсутствия. Потом по первым его отчетам станет стыдно (перед самим собой), куда время тратишь, и будешь работать подольше. Я по отчетам этого RT на программирование трачу 12 часов в день в среднем за последние 3 месяца (сегодня вот расслабился, на Хабр зашел, 12 часов не наберу :)
      • +2
        Помимо гуглтранслейта есть онлайн-словарь с просто огромнейшей базой: мультитран, все различные фразеологизмы, включая редкие, и различные научные технические словосочетания я смог там найти.
        • –1
          мультитран это круто ;) только вот он тормозит немного.
          • 0
            Я бы сказал, он слегка не работает днем. То есть почти совсем :-)
    • +1
      Вы озвучили то, что я думал, пока читал статью. Можно же именовать поля формы случайными последовательностями букв и цифр, и даже называть их вразброс (поле для имени — email, поле для пароля — name и т.п.) и регулярно менять местами id'шники. Кроме того ввести невидимую капчу, которая будет называться «captcha». И если в ней появится значение, то это явно бот. Заодно можно проверить, не ввел ли он куда-нибудь не то, что надо, например в поле для имени строку со знаком @.
      • –1
        на самом деле, учитывая всеобщее игнорирование или незнание правил русского языка (для русскоязычной аудитории) идеальным вариантом капчи можно назвать словарный диктант. Например, как правильно написать: «продам дешево» или " продам дешего", «гулять по шасэ» или гулять по шоссе", «красивая аллея» или «красивая алея». Если выбран верный вариант — скорее всего парсится робот )))
        • +1
          Суть моего предложения в том, что пользователю ничего делать не нужно.
      • 0
        Спамерские тулзы могут использовать встраиваемый IE, т.е. парсить html реальным браузером, выполнять скрипты, возить мышкой, учитывать видимость полей и т.д. Я таких не видел (на моих сайтах с динамическими JS-формами они не отметились), но раз есть всякие не-спамерские RoboForm'ы, то и спамерские должны быть :)
        • 0
          Но как они смогут заполнить поле, если не знают, куда какой текст вводить?
          • 0
            Мы говорим о спаме в комментариях на веб-страницах? Тогда там обычно всего одно поле (как здесь на хабре).

            Изредка просят ввести еще email, тогда где-нибудь около этого поля в html так и написано «email», иначе человек, как и бот, не догадается, что туда надо email вводить. Не хватало еще капчей титлы полей рисовать :)
            • 0
              Это да, согласен. Но таким способом можно отсеивать на этапе регистрации.
  • +4
    Очень интересно, спасибо.

    В принципе, обо всех этих методиках слышал, но не в одной статье сразу, с описание плюсов и минусов и хоть какого то сравнения
  • +23
    Открывал статью с мыслью что очередной умник придумал «самую лучшую в мире каптчу».

    Вы перевернули мои ожидания :) Отличная обзорно-аналитическая статья и отличный перевод!
    • +2
      Благодарю :)
  • +1
    Есть такая мысль, что лучше бы та же reCaptcha собирали просто сабмиты форм, анализировали (сопоставление имя поля и его значение) и данные отправителя (ip, user agent, etc). Таким бы образом можно было собрать blacklist и просто выдавать сообщение об ошибке, что данные компьютер рассылает спам, если вы считаете что это ошибка сообщите по урл. Собственно что-то вроде блеклиста для подозрительных сайтов. Только в данном методе никаких проблем для пользователя сайта не возникает, если конечно он не нахватал полный компьютер троянов, но другие ведь не должны из-за него страдать.
    • +1
      А ещё лучше это же api, он возвращает в % вероятность что данный сабмит является спамом. Администратор сайта уже сам из полученных данных решает что ему делать с этими данными, возможно добавить если это комментарий или статья на перемодерацию, а если порог меньше допустимого, то сразу для публичного добавления. Как-то так. Не знаю как работают подобные упомянутые системы в статье, но считаю описанный вариант единственным правильным решением. Всё остальное распознаётся если не роботом, то человеческим трудом через специальные сервисы и стоит он очень дешёго.
    • 0
      Масса народу работает через NAT'ы, когда за одним IP сидят сотни народу (а в случае мобильных операторов и тысячи), и тогда один веб-спамер в такой сетке испортит малину сразу всей толпе на этом IP. Если в случае почтовых RBL это еще можно вынести (не каждый пользователь за NAT'ом ставит себе почтовый сервер :), то для веба черный список ip/ua скорее вреден.
      • 0
        То верно, с модема CloudFlare всегда капчу выкидывает — мол "Вы в чёрном списке". Бесит. Сколько проклятий лично я обрушил на них. Не один массовый сайт не выживет с такой стратегией. И на IPv6 смотреть не надо — это никудышная стратегия, вот и всё.
  • +1
    у которой так же есть еще одна «фича» — помощь в оцифровке книг силами пользователей.

    Меня всегда интересовало — как это? Серверу же уже известны верные слова в капче, иначе бы любое слово было бы признано верным.
    • 0
      Не-а. Сервер сравнивает результат пользователя с результатом OCR, так же выбираются слова, перед и после которых все уже определенно прочитано. Ну и текстовый анализатор дает оценку, подходит ли ответ пользователя или нет. Кстати, насколько помню, часто можно не вводить первое слово (или ввести чепуху), не знаю, почему.
      • 0
        Никогда не думал, что все так запутанно. Думал все эти картинки со словами генерируются на сервере. Спасибо за интересную информацию.
        • 0
          Если внимательней присмотреться, то первое слово всегда «корявее» второго. Его-то и нужно «оцифровать».
          Т.е. вы ввели 2 слова с картинки, первое пошло в базу по оцифровке, второе (которое сервер изначально снал и сгенерировал) используется при проверке.
          Именно поэтому можно «ввести чепуху» для первого слова — оно не учитывается при валидации сабмита.

          Разбор же происходит так: непонятное роботу слово показалось 100 пользователям, 90% из них «сообщили», что это слово — "****" — значит можно верить.
          • 0
            Простите, ответил, потом заметил аналогичный по смыслу комментарий ниже
    • +6
      У reCaptcha не зря показывается два слова — одно из них точно известно серверу, второе нет. Неизвестное показывается многим пользователям, после чего выбирается правильный вариант ;)
      • 0
        А пробовали первое слово писать нормально, а вместо второго писать «fuck»? Проходит в 80% случаев :)
        • –3
          А я «nigger» пишу.
        • +1
          Хотел бы я почитать книги, оцифрованные гуглом, которые распознавались с применением ваших вариантов капчи :)
          • 0
            Надеюсь, большинство людей всё же пишет нормальные распознанные слова, а не «fuck» и тому подобное. Хоть какая-то польза от капчи
  • +2
    Отличный текст, спасибо
    Обязательно добавлю в закладки и вынесу данную тему на осеннюю конференцию в университете
  • +1
    По поводу друзей — капча недоступна людям, не умеющим распознавать лица (см. www.faceblind.org/ )
    • 0
      а они могут проводить больше времени за компьютером (т.к. социальные взаимодействия для них могут оказаться сложнее чем для остальных)
  • 0
    Абсолютно верно, что идеальная капча — отсутствующая. Не ставлю у себя нигде эту жуть, просто модерирую мусор там, где это нужно. У нас половина пользователей вообще не в состоянии разобрать ее. Даже я, свободно владея заморской мовой, и то не могу порой разобрать. Чего уж про обычных людей говорить.
    • +2
      Для себя нашел идеальную капчу: «3+4 = ?»
      Поясню:
      Этой проверки хватает, чтоб закрыть сайт от роботов, ктороые просто шукают в просторах формы для поста.
      Если ресурс не большой — никто специально переписывать робота под него никто не будет, ибо в большинстве случаев за ними вообще никто не следит. А напишут — поменяем на «три + 4 = ?».

      А для пользователей — это элементарная операция, на которую он потратит меньше секунды (и никак не 10, как писалось в статье)

      • 0
        Абсолютно та же история, только у меня 3-5 вопросов вида «Кто придумал таблицу Менделеева», выскакивающих рандомно :-)
      • 0
        обычно дял каждого форума первый проход осуществляет человек, записывая правильные ответы, а потом уже ботскрипт генерит там пачку аккаунтов, что бы постепенно их использовать под спам.
        против этого вашь способ не подходит.
        у нас стоит ряд цифр и вопрос выберите среднее число — первый месяц было хорошо, потом видимо кто-то руками прошел и стали опять пустые регистрации идти.
        • 0
          Дык от этого никак не защититься…
          Даже придумай вы самую заумную капчу — пишеться скрипт для автозаполнения всех форм, садится индусик, который будет ток вбивать эту самую капчу…

          Меня мой способ спала на форме обратной связи! от сообщений типа «проститутки москвы».
          • 0
            Пока есть фермы по распознаванию из реальных людей — пожалуй да.
            Но можно попытаться усложнить скриптование и авторегистрацию. Вводить вопросы, ответ на который не очевиден, распознавание не текста, а объектов.
  • +16
    у меня был проект небольшой, была простейшая капча, которую проходил любой бот, в основном в связи с тематической направленностью проекта, меня «проспамивали» именно сеошники, проставляя сотни ссылок в гесте и каментах, но идея была в том, что раз в неделю все коменты содержащие ссылки собирались, парсились, каждая ссылочка проверялась в гугле на предмет массовости, если оказывалось, что я не один такой счастливчик, то в сервис спамрепорта гугла, яндекса, яху и пр. формировались письма с просьбой обратить внимание на данных товарищей, обычно заканчивалось абсолютной аннигиляцией сиих творений из выдачи с фильтром(яндекс) или баном(гугл). в итоге оставалось только клацнуть на пимпе — Удалить каменты.
    • +5
      Коварно.
      • +1
        Справедливо.
  • +2
    Спам не является проблемой пользователей, это проблема людей, администрирующих сайт. Это очень высокомерно со стороны администраторов – сваливать такую проблему на плечи пользователей сайта.

    В точку! Сам отказался от капчи на сайте.
  • +1
    мне как то приходила в голову идея сделать капча на основе оптических иллюзий, которые может видеть только человек, в силу несовершенства своего мозга, но так и не придумалось достойной реализации.
    • 0
      Такая концепция — плевок в сторону людей с проблемным зрением.
      • +2
        Cогласен, но ведь есть много текстовых капча, которые и зрячему то трудно разобрать! Так что сама идея не идеальна, нужен новый вектор.
      • +1
        да любая капча плевок в их сторону поэтому и делают дополнительную аудио подсказку на крупных ресурсах.
        • +2
          И как же будет звучать подобная аудиоподсказка для вашей концепции? D:
          «Перед вами четыре линии, пересекаемые еще четырьмя линиями. Они кажутся не параллельными. Параллельны ли они?»
          • +2
            аудио естественно обычная а не концептуальная. ставить ли аудио это решение самого сайта которому необходимо выбирать между риском распознования аудио спамерами или потерей клиентов с ограниченными возможностями. Такой выбор и сейчас стоит перед сайтостроителями.
        • –3
          Да любая капча плевок в сторону людей вообще. С какой стати человек должен доказывать роботу (серверу), что он человек, а не робот? Пусть робот доказывает, что он человек, если хочет пользоваться человеческими правами (постить на сайты). Если докажет, значит достоин постить, на текущем уровне технологии :)
          • 0
            вы, простите, бред какой-то пишете.
            как вы определите, что это робот, что бы заставить только его что-то доказывать?
            • –1
              Это дело сервера разбираться с этим. Вы когда электронное письмо в почтовом клиенте (Thunderbird'е, Outlook'е) пишете, не доказываете же ему, что вы человек. С вашими (и спамерскими) письмами разбирается принимающая сторона — если она умеет (сама, без CAPTCH'а) отличать людей от роботов, то читает почту, если не умеет, то коллекционирует спам. Чем веб-сервер хуже почтового сервера? По-моему, ничем. Веб-серверу даже намного проще — веб-спам пока еще не так распространён, плюс в вебе обычно требуют регистрации при отправке, плюс в вебе на клиентской стороне браузер с javascript'ом, с которым сервер может вступить в произвольный «диалог» невидимо для пользователя (тут это уже обсуждалось), плюс не существует никаких стандартов на формат поста (в отличие от SMTP и MIME в почте) и т.д. В общем, жизнь у веб-спамера намнооого сложнее, чем у почтового. И если при всём этом хозяин сайта вынуждает пользователей разгадывать загадки, то это лишь говорит о его (хозяина) технической слабости.
              • +1
                > Это дело сервера разбираться с этим.
                вот-вот, я об этом вас и спрашиваю, как вы научите сервер отличать.

                > Вы когда электронное письмо в почтовом клиенте (Thunderbird'е, Outlook'е) пишете, не доказываете же ему, что вы человек.

                плохой пример, в сети 95% сообщений это спам, и именно из-за того, что отличить его ни почтовая программа, ни сервер не в состоянии.

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

                > плюс в вебе обычно требуют регистрации при отправке,
                в почте то же — и толку? :)

                > плюс в вебе на клиентской стороне браузер с javascript'ом
                да где же? у меня везде перманентно отключен.
                не говоря уж об исторических компьютерах и текстовых браузерах.

                > плюс не существует никаких стандартов на формат поста (в отличие от SMTP и MIME в почте) и т.д.
                формат поста фактически так же стандартизирован на уровне протокола общения сервра веб как и протокола smtp.

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

                вы утверждаете, что у вас есть «серебрянная пуля», только вы никому не рассказываете, как же так уникально настроить, что бы спам пропал. обманываете значит…
                • –1
                  > плохой пример, в сети 95% сообщений это спам, и именно из-за того, что отличить его ни почтовая программа, ни сервер не в состоянии.

                  В вашей почте 95% спам? В моей 0.01%. Я думаю, что у большинства тоже не много. Именно из-за того, что почтовые серверы уже достаточно хорошо его фильтруют.

                  >> плюс в вебе обычно требуют регистрации при отправке,
                  в почте то же — и толку? :)

                  Нет! По SMTP почту можно отправлять без регистрации (на MX только без регистрации и отправляют), «но судя по всему вы в этом не разбираетесь».

                  > только вы никому не рассказываете, как же так уникально настроить, что бы спам пропал.

                  На эту тему уже «всё придумано до нас». www.eserv.ru/StatisticalSpamFiltering
                  • 0
                    > В вашей почте 95% спам? В моей 0.01%.

                    снаружи почтового сервера 95% спама.

                    > Именно из-за того, что почтовые серверы уже достаточно хорошо его фильтруют.

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

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

                    > На эту тему уже «всё придумано до нас». www.eserv.ru/StatisticalSpamFiltering

                    а, банальный баес, который уже столько же лет как существует, столько же и обманывается спамерами. если бы вы пользовались только им, сейчас у вас ящик был бы завале наполовину спамом.
                    • 0
                      >снаружи почтового сервера 95% спама.
                      Ну так и снаружи веб-сервера 90% спама.

                      Угу, банальный байес. Пользуюсь только им уже лет 8 (как раз описанным в статье PopFile), никаких проблем. Точнее, 1-2 спам-письма в день попадает таки в inbox, но это такой спам, который действительно очень похож на не-спам :)
                      • 0
                        > Точнее, 1-2 спам-письма в день попадает таки в inbox,
                        небольшой сервер? нет переписки с англичанами, итальянцами, китаем?

                        Итак, ваше предложение — отмена регистрации (или только капчи?) и прогон всех сообщений через баес?
                        Боюсь реальные люди перестанут иметь возможность писать на такой форум. Не пройдут проверку против в десятеро большего количества спамеров забивающих баес цитатами из библии, льва толстого и т.п.
                        • 0
                          Да, сервер небольшой — около сотни наших ящиков плюс около 50тыс. партнерских (на наших доменах). Переписка с иностранцами есть, т.к. продаем наш софт через интернет с 1997 года. Английская, итальянская и китайская версии есть, клиенты оттуда тоже, но переписываемся со всеми по-английски, китайский не понимаем. До 2008го года в сервере даже фильтр на китайскую кодировку стоял, при обновлении сервера он (фильтр) пропал, но больше спама от этого не стало.

                          Я не предлагал отмену регистрации, я предлагал не насиловать людей капчами. Не так страшен спам, как его малюют.

                          Да, спам с цитатами из классиков проходит через байес. Раз в год. Почему-то не любят их спамеры. Хотя мы почитать не против :) До сих пор вспоминаю замечательную подборку из Тютчева, присланную одним спамером года 3-4 назад нам в техподдержку. Что он там рекламировал я не помню, а стихи хорошие.
  • 0
    Появилась у мну одна идея «невидимой капчи»… А именно — мышь.
    Ведь из браузера можно получить координаты мыши в окне! Так вот, у ботов они с вероятностью 99,9% будут иметь значение 0,0. И у 99,9% пользователей мышь там находиться наоборот не будет.
    Итак, мы просто подписываем отправляемые данные с помощью какого то рендомного ключа и координат мыши! На стороне сервера вычисляем аналогичный хэш, но с координатами 0,0. Если хэши совпадут — айайай, господин спамер, не пущаем!

    У этого метода есть два серьёзных минуса:
    1. Он требует яваскрипт. Без яваскрипта этот метод не сработает вообще никак
    2. Он требует серьёзной обфуксикации кода, который формирует этот хэш.
    • +3
      Я, как перфекционист, терпеть не могу когда используют «99.9%». Это же надуманная цифра, в крайне редких случаях она действительно доказана.
      Используйте выражение «подавляющее большинство» и ему подобные, все таки так правильнее :)
    • 0
      Кроме того, чтобы проверять координаты мыши, нужно принять во внимание, двигает ли мышью пользователь? А в случае взлома каптчи (можно программно изменять координаты указателя): плавно ли?
      • 0
        Кстати да, я когда регистрируюсь на всяких мусорных сайтах в поисках необходимой, но редкой информации, пользуюсь табуляцией.
        • 0
          Я и в не мусорных сайтах пользуюсь табуляцией, но вероятность того, что мышь будет в координатах {0, 0} крайне мала.
          • 0
            А если на устройстве ввода нет мыши (телефоны, планшеты)?
            • 0
              Тогда там не будет и табуляции, и пользователю как минимум прийдется тыкнуть в текстфилд, если он не один на странице конечно. Соответственно и координаты не будут уже равны 0. Хотя точно не знаю, в тонкостях мобильного js не силен.
    • 0
      Если сайт хоть минимально востребован (или такая капча получит хоть минимальное распространение), то боты будут подставлять случайные координаты мыши.
      • +1
        Да что там подставлять — они ей двигать будут даже :-)
  • 0
    Отличная статья! Спасибо!
  • +1
    Отличная статья и перевод превосходный!

    Не согласен только с одним утверждением о том, что капча нужна только для защиты от спама и в идеале от нее стоит избавиться. Не учтен брутфорс к формам авторизации. Есть способы защиты от подобных действий без капчи, но что если все-же там сидит человек (в моем случае спамер-человек не рассматривается как угроза) и, скажем, 3 раза неверно ввел свой пароль… вот тут и надо ему показать капчу, да такую, чтобы впредь вводил пароль правильно с трех попыток.
    • +1
      Обратите внимание на начало статьи, там декларируется понятие «спам» :)
      • +1
        Прошу прощения, зачитался :))
  • 0
    Мне казалось что фейсбук предлагает определить фотки друзей, которые отмечены на _ваших_ фотках, то есть тех, которые вы сами там понаотмечали. Хотя не уверен.
    • –1
      К сожалению, у меня нет возможности проверить — Facebook упорно продолжает кидаться в меня контрольным вопросом при попытке восстановления пароля.
  • 0
    Я отсеиваю 80-90% спама текстовой капчей с русскими загадками.
    При необходимости можно подключить Mollom.
    • +1
      Русские загадки это «Где зимует рак?» и «Чью мать я вам покажу?» :-)
      • 0
        Загадки из детва которые любой русский знает, а басурманин пасует. Пример — сидит девица в темнице, а коса на улице боты и EN спамеры идут лесом. Остается ручной спаминг русскими спамерщиками, но это дорого и неэффективно.
        • +3
          Про девицу даже я не ответил бы — забыл, что это такое :-(
          • +4
            Monkeyman == BOT
            )
            • +5
              *старательно двигает мышью, изображая человека*
  • 0
    Странно, но почему-то про использование капчи в качестве (некоторой) защиты от подбора пароля к аккаунтам не рассказывается.

    Недавно, для защиты от массовых регистраций (отсекания нехороших ip-адресов), использовал API сервиса www.stopforumspam.com/ и довольно успешно.
  • +1
    Не рассмотрен альтернативные вариант — доверенные пользователи. То есть люди, которые бы получили сертификат привязанный к мобильнику могли бы не вводить капчу.
  • 0
    Скажите, а нельзя на создание капчи посадить нейронку? То есть имеется алгоритм, который создаёт абсолютно разные капчи, затем набор экспертов оценивает их читаемость, выставляет оценки каждой капче, система обучается, а потом выдаёт капчи, похожие на те, что читаются лучше всего?
    • 0
      те, что читаются лучше всего они и распознаются спам ботами быстрее всего. самое сложное найти компромисс между читаемостью с распознаваемостью.
      • 0
        Тогда можно ввести многокритериальную оценку, например простота распознавания и внешняя сложность. То есть, например, капча с белыми буквами на чёрном фоне получит максимум за простоту и минимум за сложность. А дальше как-нибудь вывести оптимальную формулу.
  • +2
    Мне кажется или до сих пор никто не подумал о создании captcha из 2 и больше картинок?
    Приведу пример на 2х картинках:

    <?php
        session_start();
        ?>
        <img src="captcha.php?step=1" /><img src="captcha.php?step=2" />
        <form method="post">
        Введите число: <input type="text" name="getСode">
        <input name="sub" type=submit value="Ввод">
        </form>
        <?php
        if(isset($_POST['sub']))
        {
            if($_POST['getСode'] == $_SESSION['step1'].$_SESSION['step2'])
            {
                echo "Число введено верно";
            }
            else
            {
                echo "Число введено неверно";
            }
        }
    


    captcha.php
    <?php
        session_start();
        
        $step = isset($_GET['step']) ? intval($_GET['step']) : null;
        
        if ($step == 1)
        {
            $string = $_SESSION['step1'] = rand(100, 999);
        }
        else
        {
            $string = $_SESSION['step2'] = rand(100, 999);
        }   
        
        $im = imagecreatetruecolor(80, 45);
        imagealphablending($im, false);
        imagesavealpha($im, true);
        $trans = imagecolorallocatealpha($im, 255, 255, 255, 227);
        $black = imagecolorallocate($im, 255, 255, 0);
        imagefilledrectangle($im, 0, 0, 299, 299, $trans);
        imagealphablending($im, true);
        imagettftext($im, 40, 0, 0, 48, $black, '28 Days Later.ttf', $string);
        header("Content-type: image/png");
        imagepng($im);
        imagedestroy($im);
    


    Итог:





    По идее при такой капче даже хрумеру->антигейту будет сложно разобрать её.
    А можно увеличить кол-во картинок до 3-4-5 и так далее…
    • 0
      Две каптчи — уже слишком, иногда одну не прочитать.
      А капча в примере очень легко распознается без антигейтов, обычным программным методом.
      • 0
        Тогда уже лучше спрайты заюзать, генерить сразу несколько картинок, потом, меняя офсет, показывать нужную.
        Понятно, что не панацея, но в качестве усложнения жизни спамеров — как вариант. Тем более, что на жизнь пользователей это не повлияет.
      • 0
        Вы неправильно меня поняли.
        Пользователь видит всё как обычно — 1 картинку, которая склеена из 2х изображений.
        2 Изображение выше это пример того что мой код работает и каптча введена верно.
        • 0
          Я так подумал, глядя на
              <img src="captcha.php?step=1" /><img src="captcha.php?step=2" />
          

          • 0
            Это 1 каптча из 6 символов, режется на 2 части по 3 символа :)
            • 0
              Все, глядя на PHP код понял.
              Такой прием используется при регистрации на mail.ru, там 3 картинки сделано.
              • 0
                К сожалению это не помогает, картинки элементарно клеятся
    • 0
      И тогда конверсия упадет ниже плинтуса. Капча должна быть простой, чтобы не сильно напрягать пользователя и сильно напрягать роботов. Меня бесит когда я не могу с третий попытки ввести одну капчу. А если их 2 и более. Да нафига мне такой сайт нужен?
      • 0
        Делаем 5 самых простых (как в примере выше) картинок (по 1 цифре или букве) склееных между собой, пользователь видит 1 картинку.
        Для пользователя каптча легкая, видно все сразу. Для хрумера же или других нечестей это уже будет посложнее.
        • +1
          Все роботы для сайтов затачиваются исходя из сайта. Зайдет человек и увидит что здесь пять картинок. Алгоритм распознавания одной у него есть. Запустить его на пять не сложных картинок и склеить результат мне кажется не сложно.
          Здесь на хабре были примеры алгоритмов и я думаю за полчаса даже мне с готовым алгоритмом удастся сделать робота. Может конечно утрирую, но все-таки…
          • 0
            Я не сказал что это не выполнимо. Такая каптча может подойти для форумов (vb, ipb..) при регистрации хрумером.
    • +2
      Было бы ещё интересней, если бы эта картинка резалась на случайное число прямоугольников, которые бы потом выводились в случайном порядке и позиционировались в одну картинку посредством CSS.
      • 0
        Согласен. Я просто подал идею…
    • 0
      Придумали ещё несколько лет назад, даже была реализация. Картинка резалась по матрице на разное кол-во кусочков и рандомно генерировались уникальные id слоёв, потом генерировалось css и js для собирания этих слоёв в картинку. Даже защиты были, одно из которых куски картинок должны были в определённом порядке подгружаться, это отслеживалось в сессии на стороне сервера. Всё хорошо, только когда мы начали тестировать, масштабно в рамках одного крупного проекта для которого и делалась уникальная каптча, то был написан софт на с++ который сохранял кусок скриншота этой каптчи одной картинкой и отправлял на распознавание.
  • 0
    Идеальная CAPTCHA – отсутствующая CAPTCHA.
    • 0
      Действительно, а я и не заметил
      • 0
        Вы все правильно написали. Спасибо Вам за статью. Если уместить всю статью в одно предложение, то будет именно это предложение.
  • +1
    Упомяните, пожалуйста, OpenID рядом с Janrain, а то может сложиться впечатление что он уже умер.
  • –1
    Мы убрали капча создавала много проблем «людям с ограниченными способностями». Поэтому мы убрали ее. А заодно и о тупых бло… эээ… «представителях женской половины со светлым типом волос и ограниченными умственными способностями» позаботились ;)))
  • 0
    Спасибо, отличная статья!

    Вот так же мое видение решения проблемы: пускай контент можно будет размещать только после регистрации. А регистрацию будет необходимо подтвердить при помощи SMS.

    Чем данный способ хорош: спамеры не станут покупать кучу номеров, ибо это накладно, мобильные телефоны на данный момент есть уже практически у всех, впрочем, в случае его отсутствия никто не мешает сделать альтернативное подтверждение звонком на городской, для пользователя совсем не сложно ввести код из SMS.
    Минусы: это дорого для администрации сайта (хотя высокодоходные проекты могут себе это позволить).
    • –1
      Алсо, более дешевый метод: звонок по Skype. Т.е. при регистрации пользователь указывает свой Skype, туда звонят и называют код.

      Плюсы:
      — недорого
      — с распознаванием речи у компьютеров плохо
      Минусы:
      — Skype есть не у всех
      — Так же не у всех есть наушники или колонки
      — Конечно же время.

      Но если делать это один раз (при регистрации), получится нормально, на мой взгляд.
      • 0
        Расскажу историю про скайп: есть у меня приятель, фанат всевозможных линуксов. Только вот всё время так получается что в скайпе под его любимый на этой неделе дистрибутив что-то там чуть-чуть недопилено, поэтому по скайпу с ним никак не поговорить.
        • 0
          Не спорю, я написал это в «минусах». Я же не говорю, что нужно использовать именно Skype, а про саму схему.
    • 0
      Вы упустили очень важную мысль, высказанную в топике:
      Если метод слишком медленный, значит, он не стоит того
    • 0
      Вот только не надо SMS. Будете терять всё заграничную аудиторию. Как мне объяснить такой патриотичной форме ввода 8-[___]-[_______] что у меня сотовый начинается с +44, а не с +7 или 8?

      А российскую симку раз в пол-года оператор зачем-то деактивирует, спасибо ему преагромное. Каждый раз, как приезжаю домой — здравствуй, родина — сразу в аэропорту иду новую симку покупать.
      • 0
        В общем форма не должна начинаться с 8-рки ;) Посмотрите, как это реализовано при регистрации в Gmail.
        • 0
          О боги, я же только что на это натыкался. Покупал авиабилеты у АвиаНова. Два часа пытался купить, не понимал, что форме регистрации не нравится. Поменял +7 на 8 — вуаля!
    • +1
      Мне кажется, люди сейчас в пору махинаций с подписками на «рассылки», настороженно отнесутся к требованию вести номер телефона а потом пришедгий на него код на незнакомом сайте.
    • 0
      Минусы: многие не захотят палить свой телефон ради регистрации на вашем сайте. Я бы точно не стал.
  • +3
    Какое число из 3, двадцать девять, 70, 46, 65 является наименьшим?
    Вот это порадовало. Что мне там писать, «три», «3», «первое», «вы дебилы, чисел четыре», «двадцать девять», «29», или «писец нимагу панять».

    Наверное, я просто бот…
    • 0
      Я думаю, неудачные ответы надо сохранять в логи и просматривать на предмет альтернативных решений, которые стоит добавить в список правильных.
      • 0
        Да, но тем временем куча народу будет просто получать от ворот поворот.
    • 0
      Предположу, что три то же вошло в ряд.
      Т.е. вопрос звучал
      «Какое число из: 3, двадцать девять, 70, 46, 65 является наименьшим?»
      • 0
        Это один из вариантов ответа, да.
  • 0
    > Модерация везде, где только возможно
    Ручная — модераторов мало, а автоматическая — это ещё большее зло. Был у меня узкий и срочный вопрос то ли по дайвингу, то ли по паяльным делам, я зарегистрировался на специализированном форуме. А открыть тему не даёт — надо сначала написать десять сообщений в других темах. Пришлось работать роботом, писать в каждую тему что-то вроде «ух ты», «плюс адин» и «поддерживаю».
    А если ручная регистрация, то опять же, вопрос срочный, а модератор, видимо, в запое третий день. Чего делать?
    А на одном форуме модератор отклонил мою регистрацию, сказал что я бот, так как я ему по соображениям безопасности не расписал в форме всю свою биографию с телефоном и номером квартиры где деньги лежат.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Регистрировался на одном специализированном форуме, так пришлось легкие задачи по ТОЭ решать, и вспоминать, какие выводы бывают у полевого транзистора. В общей сложности заняло 10 минут. К чему это я. Необходимо будет человеку зарегистрироваться, он какую хочешь вырвиглазную капчу распознаст.
  • +1
    А если например как нибудь так сделать:
    Image and video hosting by TinyPic
    • 0
      Т.е. берем фото, из одной части цвет берем и в другой части текст этим цветом вставляем(ну и чуток текст искривляем, буковки делаем частично прозрачными).
  • 0
    Для людей с нарушениями зрения, слуха или моторики будет создана программа по распознаванию капчь как часть accessebility пакета в операционке.
  • –1
    У меня немного оффтопный вопрос. Вот вы пишете: «при обязательном указании авторства», но кто автор — не написано. И хрен знает, как автора указывать. Посетитель, впервые зашедший на хабр, автора вообще не найдёт. Что должен делать человек в таком случае?
    • 0
      Автор указан.
      Оригинал статьи: In Search Of The Perfect CAPTCHA, David Bushell, 03/04/2011.
      • 0
        Я так понял, что по условиям лицензии я должен указывать автора этого топика (т.е. перевода), а не автора оригинала (а вообще, и того и другого, конечно же). Если с автором оригинала всё понятно, то с автором топика у меня возникают проблемы следующего характера:
        1) Юзернейм топикстартера на хабре могут найти только внимательные юзеры. Я не очень внимательный, и иногда с этим затрудняюсь (всё время ищу в начале поста).
        2) Даже если догадаться, где искать автора поста, непонятно, как его указывать при копировании. Формулировки «Хабраюзер Adiost» будет достаточно с юридической точки зрения? Или необходимо давать ссылку на профиль хабраюзера?

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

        С неюридической точки зрения мне, конечно же, проще поставить гиперссылку «стырено отсюда» и не париться, но думается мне, что это не согласуется с условиями лицензии.
        • 0
          Честно говоря, переводы — больное место CC. Фактически я взял оригинальный текст и перевел его. Это вроде как модификация. Но! Я модифицировал его фактически на 100%. В таком случае, это полностью моя работа и авторство мое (на что я и рассчитываю).
          Никнейм с юридической точки зрения — пустой звук. Зайдите в мой профиль, там есть имя и фамилия.
          • 0
            Добавить блок «автор текста XXX, переводчик YYY» думаю достаточно.
            И при копипейсте скорее всего останется.
  • +1
    > Либо бороться со спамом вручную, либо просто забыть про интересы пользователей – выбор за вами.
    Бороться со спамом модерацией может предлагать лишь человек проекты которого никогда не спамили. Я честно пытался обойтись без капчи, но когда спам начал сыпаться быстрее чем его возможно удалять, пришлось поставить рекапчу. Спам продолжает идти, но уже терпимо.

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