tclcaptcha - простой текстовый captcha генератор

$Id: tclcaptcha.ru.texinfo,v 1.5 2007/06/19 13:26:01 alex Exp $

Copyright © 2006 Alexander Gromnizki <iwerdon.at.gmail.com>.

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

  1. Наиболее трудно декодируемые невозможно прочесть.
  2. Я по умолчанию всегда имею изображения отключенными по идеологическим причинам. Как я увижу картинку?
  3. Звуковой captcha тест почти всегда невозможно прослушать из-за наличия отсутствия динамиков у конторских ПК.
  4. Вариация п.2: а если у меня текстовый броузер (elinks), а иксы пускать не очень удобно? Например, я иду по ssh к определенному хосту, чтобы не одна сволочь не могла сниффить в локальной сети куда и зачем я хожу по http. Как я увижу картинку?

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

Единственный выход: captcha тест может фильтровать боты задавая мягко, но настойчиво вопросы на общеизвестные темы. Например, "в какое место Черчилль прятался от лейбористов?" или "какова величина (в байтах) MTU у Ethernet?".

Такой подвид тестов не любят по причинам того, что:

  1. Базу вопросов и ответов нужно регулярно трансформировать.
  2. Напрягать свои мозги даже над простейшими вопросами 8 из 10 откажутся и покинут защищаемый от спамеров ресурс навсегда.

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

Годится ли он вам, решать не мне. Для не крупного сайта, дабы отпугнуть начинающих спамеров одного его наличия уже достаточно (как и любого другого captcha теста), но у него есть, как вы понимаете, преимущество в технической всеядности. Если его "поломали", выхода, кроме как опросных тестов, увы нет.

Как выглядит наша ASCII-графика? Вот пример фамилии Уильяма Блейка:

     
     ####  #       #   #  ## #####
     #   # #      # #  # ##  #
     ####  #     ##### ##    #####
     #   # #     #   # # ##  #
     ####  ##### #   # #  ## #####

Для генерации текстового captcha теста используются только прописные латинские буквы и цифры.

Возможно масштабирование по ширине и высоте. Например, возьмем название ОС единственно верной, как КПСС, с масштабом 2 по ширине:

     
     ##      ## ####    ##   ######   ##      ##
     ##      ## ######  ##     ##       ##  ##
     ##      ## ##  ##  ##     ##         ##
     ##      ## ##  ######     ##       ##  ##
       ######   ##      ##   ######   ##      ##

Или даже с маштабом 2 по высоте и ширине:

     
     ##      ## ####    ##   ######   ##      ##
     ##      ## ####    ##   ######   ##      ##
     ##      ## ######  ##     ##       ##  ##
     ##      ## ######  ##     ##       ##  ##
     ##      ## ##  ##  ##     ##         ##
     ##      ## ##  ##  ##     ##         ##
     ##      ## ##  ######     ##       ##  ##
     ##      ## ##  ######     ##       ##  ##
       ######   ##      ##   ######   ##      ##
       ######   ##      ##   ######   ##      ##

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

     
      ###   ###   ###  #   # #####  ###   ###   ###
     #   #   #   #  ## #   # #     #  ##   #   #   #
     #   #   #     #   #   # ##### # # #   #   #   #
     #  #  # #    #    #   # #     ##  #   #   #  #
      ## # ###   #####  ###  #####  ###   ###   ## #

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

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

 ###  #   # #   # ##### #   # ####    #    ###
#  ## ## ## #   # #      # #  #   #  # #    #
# # # # # # #   # #####   #   ####  #####   #
##  # #   # #   # #      # #  #  #  #   #   #
 ###  #   #  ###  ##### #   # #  ## #   #  ###

Реализацию такого captcha теста можно скачать здесь: tclcaptcha-0.1. Лицензия X11 (BSD-like). Документации, кроме исходного кода, нет :) Сам генератор написан на тикле, к нему для примера идет обкладка на PHP.

Чтобы с чего-нибудь начать, напечатайте после распаковки архива:

     ./captcha -h