Давно не постил статьи про капчу, теперь я буду описывать принципы и алгоритмы с использование программы miniPoster, причины просты.
- Постер полностью заполнен функционалом необходимым для логического и брутального разгадывания капчи
- Как я понял, мало кого интересует исходный код функций так как он мало понятен, в реале проще состряпать свой велосипед для расширения навыков, поэтому я буду описывать лишь логическую последовательность.
Сама капча
Разгадывание любой капчи начинается с того что ее нужно загрузить в память и в файл.
[LOAD_CAPTCHA][http://carboks.ru/captcha/captcha-st/captcha.php?sid=2994269]
Дальше, чтобы работать с капчей остальными функциями ее нужно привести в черно белый вид, тоесть более темные пиксели закрасить в черный остальные в белый, для этого есть функция COLOR_TRESHOLD, вы устанавливаете средний цвет по шкале RGB, например 128, она создаст цвет RGB(128,128,128) — можно прямо имя цвета указать, и все пиксели ниже этого цвета станут белыми, а остальные черными
[LOAD_CAPTCHA][http://carboks.ru/captcha/captcha-st/captcha.php?sid=2994269] [COLOR_TRESHOLD][200] [DISPLAY_IMG]
теперь нужно поменять черные пиксели с белыми местами функцией APPLY_NEGATIVE
[LOAD_CAPTCHA][http://carboks.ru/captcha/captcha-st/captcha.php?sid=2994269] [COLOR_TRESHOLD][200] [APPLY_NEGATIVE] [DISPLAY_IMG] [SAVE_CAPTCHA]
Все, осталось посчитать звездочки, есть функция SPLIT_CIRCUIT, она ищет черный пиксель, и копирует его и всю цепочку пикселей что прилегают к нему и к его прилагающим, на отдельное изображение, далее записывает это все в массив-изображений который так же хранится в памяти.
[LOAD_CAPTCHA][http://carboks.ru/captcha/captcha-st/captcha.php?sid=2994269] [COLOR_TRESHOLD][200] [APPLY_NEGATIVE] [SPLIT_CIRCUIT] [DISPLAY_ARRAY_IMG]
таким образом получим все звездочки, каждая из которых на отдельной картинке
Все, в переменной $IMG_ARRAY_COUNT хранится количество картинок в буффере, это число и есть ответ капчи.
[LOAD_CAPTCHA][http://carboks.ru/captcha/captcha-st/captcha.php?sid=2994269] [COLOR_TRESHOLD][200] [APPLY_NEGATIVE] [SPLIT_CIRCUIT] [DISPLAY][Stars is $IMG_ARRAY_COUNT]
Круто!
desculpe, а не проще сразу белый фон?
сам понял что сказал?
тупо rgb=256,256,256=fff
помогите если в капче стоят цифры и знаки домино как расписать?
Распишите по красоте )))