Веб-разработка

индекс
236,88

Звуковая капча

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

Значит так. Что заиметь у себя одновременно и графическую, и звуковую капчу, нужно для начала всё это дело скачать. Потом скопировать себе в удобное место и читать дальше. Кстати, лицензия у этой радости — BSD. Кто понимает, тот выбирает =).

В директории со скачанным скриптом самым главным является файл php-captcha.inc.php. Его будем подключать везде. Кроме того, понадобятся шрифты TrueType. Если под рукой их нет, можно скачать откуда-нибудь.

Собственно, процесс. Графическая капча. Пишем сие в файл visual-captcha.php.
<?php
    require('php-captcha.inc.php');
    $aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
    $oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
    $oVisualCaptcha->Create();
?>

Звуковая капча идёт в audio-captcha.php.
<?php
    require('php-captcha.inc.php');
    $oAudioCaptcha = new AudioPhpCaptcha('/usr/bin/flite', '/tmp/');
    $oAudioCaptcha->Create();
?>
/tmp — место временного хранения созданного файла.

Здесь стоит приостановиться и заметить, что был использован некий бинарник flite. Его, как нетрудно догадаться, необходимо предварительно скачать и протестировать.
flite -t 'Hello World' -o hello.wav

Как теперь отобразить созданное в документе?
<p><img src="visual-captcha.php" width="200" height="60" alt="Visual CAPTCHA" /></p>
<p><a href="audio-captcha.php">Can't see the image? Click for audible version</a></p>
Здесь автор отдельно отмечает, что необходимо звуковую капчу втыкать после графической. Это для корректного создания рандомного кода.

Всё, капча создана и отображается. Как теперь проверить пришедшего клиента?
<?php
    require('php-captcha.inc.php');
    if (PhpCaptcha::Validate($_POST['user_code'])) {
        echo 'Valid code entered';
    } else {
        echo 'Invalid code entered';
    }
?>
Важно то, что метод Validate вызывается статически.

Вот, собственно, и всё. В качестве бонуса — некоторые возможности по конфигурированию создаваемой капчи.
SetWidth(int iWidth) — задать ширину картинки. По умолчанию 200px.
SetHeight(int iHeight) — задать высоту картинки. По умолчанию 50px.
SetNumChars(int iNumChars) — число выводимых символов. По умолчанию 5.
SetNumLines(int iNumLines) — число шумовых линий. По умолчанию 70.
DisplayShadow(bool bShadow) — отображать или нет тени элементов.
SetOwnerText(sting sOwnerText) — текст «владелец», отображаемый внизу картинки. Предназначен для того, чтобы ваши капчи не отдавали на слом леммингам.
SetCharSet(variant vCharSet) — набор символов, используемых в капче. По умолчанию A-Z. Можно задавать массивом символов, например array('1', 'G', '3') или строкой символов, или даже диапазоны символов, например 'a-z,A-Z,0,3,7'.
CaseInsensitive(bool bCaseInsensitive) — проводить проверку с учётом регистра символов, или без. Если установлено в «false», нужно передать «false» вторым параметром в функцию «Validate» при проверке введённого кода.
SetBackgroundImages(variant vBackgroundImages) — определить одно (string) или несколько (array) картинок, которые будут отображаться вместо шумовых линий. При задании нескольких изображений, библиотека рандомно выбирает одно.
SetMinFontSize(int iMinFontSize) — минимальный отображаемый размер шрифта. По умолчанию 16.
SetMaxFontSize(int iMaxFontSize) — максимальный отображаемый размер шрифта. По умолчанию 25.
UseColour(bool bUseColour) — при установке в «true» отображает шумовые линии и символы рандомными цветами.
SetFileType(string sFileType) — выходной формат: jpeg, gif или png. По умолчанию jpeg.

Все конфигурационные параметры необходимо задавать перед вызовом Create(). Пример вызова и цветная картинка.
<?php
    require('php-captcha.inc.php');
    $aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
    $oPhpCaptcha = new PhpCaptcha($aFonts, 200, 50);
    $oPhpCaptcha->UseColour(true);
    $oPhpCaptcha->Create();
?>

Получилась картинка:


Да здравствуют полезные и удобные ресурсы! =).
+19
14 марта 2008, 11:49
24

комментарии (19)

+1
Yeah #
И все-таки, было бы неплохо использовать habracut
+1
Vamp #
Я не ковырял софт, озвучивающий текст, однако полагаю, что звуковые капчи легче распознать. Достаточно набрать базу паттернов звуко-символов и сравнивать спектрограммы.
НЛО прилетело и опубликовало эту надпись здесь
0
neudor #
ааа ччёрт! Так облажаться...
0
va1en0k #
а попробовать можно где?
0
pxx #
все бы ничего, но вот у нас в офисе например порезаны файрволлом все звуковые и видео файлы
0
pixx #
Звуковая капча сделана для тех, у кого проблемы со зрением, а не для тех, кто сидит в офисе и у кого порезаны файрволлом все звуковые и видео файлы ;)
0
vadimbelyaev #
Аудио-капча — это капча для людей со слабым зрением, которые испытывают затруднения с распознаванием надписи на картинке.

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

Если нет, в чем же проблема?
0
pxx #
К счастью у меня нет никаких физических отклонений, поэтому острой необходимости в такой капче для меня нет, просто попробовать не смогу. Хотя такой вариант не исключен и для человека, нуждающегося в такой капче.
–1
scvorec #
Хоть звуковая капча для слепых, но лучше об она была для глухих, так как понять невнятное звучание ноликов и единичек с динамиков компьютера с трудом поймет человек с отличным слухом.
Аудио-капча - гавно с понтами...
0
jerom #
Вот только стойкость этой картинки сомнительная
0
Borro #
Стойкость картинки, ИМХО, можно всегда поправить, ведь никто не отменял руки, голову и мануал :)
–3
AlexKolupaev #
Ваша капча - говно.
0
Dr_Logic #
О, вас как специалиста, хочу спросить. Вы не видели ли где-нибудь хороших капчей, не приминения, а имменно как бесплатный модуль. Просто сколько ни видел бесплатных капч - все что-то на подобии этой, что конечно же недопустимо.
0
fogx #
Эх, интересно было бы глянуть статистику большого посещаемого ресурса со звуковой капчей. Насколько эта вещь вообще в принципе востребована, скачивают ли аудиофайлы реальные не-спаммеры?

Что-то мне кажется, что потратить время на поддержку пользователей какой-нибудь там Opera 6.0 в итоге окажется продуктивней. К нам лично ни разу никто не обращался с просьбой сделать звуковую капчу, а вот всякие редкие старые броузеры - пожалуйста. Или странные пожелания, типа "хочу отдельно RSS по голосам за мои комментарии, в формате "+1 -1 -1 +1..."

Люди, я в общем, к чему.. А вам реально эта капча нужна? Или это мы программисты сами для себя работу придумываем, будучи в полном отрыве от своих посетителей, понимания их потребностей и т.д. Программируем сферического коня в вакууме. Некий "Идеальный Портал". Руководствуясь какими-то личными соображениями о том, "как надо", а вовсе не реальными потребностями аудитории.
0
vini #
спасибо, очень полезная информация, я еще первый пост на тему слепых отметил, но писать не люблю, а тут увидел критику.. ну в России же "инвалидов нет", и их точно меньше чем пользователей Opera 6.0.. Позвольте не согласиться, в России инвалидов есть и очень много. А то что в пендосии это заметно невооруженным взглядом, а у нас нет, так это вопрос отношения общества к ним.
Я думаю что звуковая капча важный и полезный аспект, который может помочь большому числу пользователей. Спасибо за ваш пост, буду пробовать в своей песочнице.
0
fogx #
Я не говорю, что инвалидов нет. Просто может быть мы бьемся над решением проблемы, которая изначально надумана?

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

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

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

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

Так вот я и спрашиваю, есть хоть где-нибудь реальная статистика загрузок звуковых капчей? То что в России много инвалидов - я знаю. А вот сколько из них станут нашими посетителями из-за звуковой капчи - вопрос.
+1
spelesto #
Спасибо автору за материал!
НЛО прилетело и опубликовало эту надпись здесь

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