CAPTCHA - Захист web-сервисов від спаму
Багато хто з вас бачив, що в гостьових книгах, форумах, при реєстрації нових користувачів часто у формах використовується захист від роботів - крівенькие букви і циферки. Цей вид захисту називається captcha. Ось, що із цього приводу сказане у Вікипедії:
CAPTCHA (англійська абревіатура від «Completely Automated Public Turing test to tell Computers and Humans Apart».) -. Комп'ютерний тест, використовуваний для того, щоб визначити, чи людина використовує систему. CAPTCHA найчастіше використовується при необхідності запобігти використанню інтернет-сервісів ботами, зокрема, для запобігання автоматичній реєстрації, скачування файлів, масових розсилок і тому подібне
Я сам використовував цей захист на своїх сайтах. Проте, якось мені попалося посилання на ресурс спамерів, де приведено близько 20 видів captcha, які їх програма може розпізнати. По ідеї все просто - досить пригадати програми розпізнавання тексту для сканерів. Контур букви А, як її не перекручуй, все одно принципово не змінюються, інакше людина, що пише повідомлення в гостьову, теж не зможе її дізнатися.
Думка про створення чогось такого, що людина зможе легко розпізнати, а робот ніколи, міцно засіла в голові. Першим прийшов в голову приклад, прочитаний колись давно в книзі, присвяченій штучному інтелекту: як пояснити машині різницю між кішкою і собакою. Людині достатньо одного погляду, а спробуйте хоч би розповісти, в чому відмінності.
Розпізнавання образів - ось в чому комп'ютер ще не скоро порівняється з людиною. Звідси і виникла ідея, яку зараз я пропоную вашій увазі.
Вибираємо декілька картинок (чим більше - тим краще), на який зображені різні об'єкти. Як в дитячих іграх - м'ячик, квіточка, дерево, машина. Кожному зображенню ставимо у відповідність його назву (текстове). Тепер потрібно пред'явити відвідувачеві сайту декілька картинок і поряд надрукувати назву однієї з них з проханням кликнути саме по ній. У цьому і є основний принцип цього захисту.
Зрозуміло, що робот може запам'ятати ваші картинки (адже їх не нескінченна кількість) або просто кликати в одну з них до тих пір, поки не вгадає - вірогідність попадання дуже велика. Тут починаються хитрощі.
По-перше, можна показувати не цілу картинку, а тільки її частина. Погодитеся, якщо ви побачите рот, ніс або око, то ви однозначно зрозумієте, що це особа. А для машини - це абсолютно різні картинки.
По-друге, поміщати наші фрагменти на який-небудь фон, робити їх напівпрозорими, можливо навіть частково перекривати їх друг іншому. Головне, щоб людині все одно залишалося зрозуміло, куди треба кликати.
І, по-третє, можна просити кликнути не на одну картинку, а на декілька в певному порядку. Від цього вірогідність попадання роботом зменшується на порядки.
Посилання на приклад такої captcha можна побачити в кінці даної статті. Я просив покликати всіх своїх родичів, включаючи дітей. Практично помилок не було. Більш того, це виглядало як гра (що, до речі, може додатково привернути відвідувачів на ваш сайт).
Декілька слів про технічну сторону реалізації цієї програми - мною використаний PHP із стандартною графічною бібліотекою і зовсім трішки Ajax. Якщо виникнуть труднощі з написанням такого скрипта - можу допомогти.
Буду радий почути ваші думки з приводу такого способу захисту web-форм від роботів і спаму.
Можливо, хто-небудь знає про подібні методи захисту - напишіть. Мої пошуки по Інтернету не увінчалися успіхом.
Ярослав Полещук. captcha. Opti-mail. Net