Страница 1 из 1

Капча от NotCaptcha, кто поможет?

Добавлено: 04 фев 2011, 22:51
duxabilii
Столкнулся с такой вот штукой.
Все о ней на http://notcaptcha.webjema.com/

Кто-то может сталкивался, как ее обойти используя HumanEmulator

Re: Капча от NotCaptcha, кто поможет?

Добавлено: 05 фев 2011, 02:00
satih
не сталкивался, но идея есть. в принципе сет картинок у них довольно ограниченый. нужно спарсить все/большинство сетов картинок, выбрать из каждого сета вертикальную, и потом сравнивать с тем что показано в каптче.
у обьекта $mouse есть функции которые позволяют перетаскивать мышью ползунок, т.е. убеждаемся что все три картинки каптчи из известных нам сетов (иначе просим новую каптчу), и двигаем ползунок нужное количество раз до вертикальной картинки (угол при сдвижении ползунка меняется одинаково, а весь сет картинок же уже есть, т.е. если начали с перевернутой картинки, знаем точно сколько раз сдвинуть ползунок до вертиакльной). сделать такое думаю за день можно, плюс в том, что затрат на решение каптчи не будет, да и не спамят пока с такой каптчей на автомате, значит сайты с ней не заспамленные.

Код: Выделить всё

<?php
require("../Templates/xweb_human_emulator.php");

// переходим на страницу каптчи
$browser->navigate('http://notcaptcha.webjema.com/?p=1#comments');
$browser->wait();

// ставим фокус на нужную часть экрана
$input->set_focus_by_name('url');

// y координата ползунков (все 3 на одном уровне высоты)
$y = $image->get_y_by_atribute('id','leftBegun_imgone');

// х координата левого ползунка
$x1 = $image->get_x_by_atribute('id','leftBegun_imgone');
// х координата среднего ползунка
$x2 = $image->get_x_by_atribute('id','leftBegun_imgtwo');
// х координата правого ползунка
$x3 = $image->get_x_by_atribute('id','leftBegun_imgthree');

sleep(15);

// двигаем первый ползунок на 5 пунктов
MoveSlider($x1, $y, 5);
sleep(5);
// двигаем средний ползунок на 1 пункт
MoveSlider($x2, $y, 1);
sleep(5);
// двигаем правый ползунок на 3 пункта
MoveSlider($x3, $y, 3);

$app->quit();

/*
передвижение ползунка на нужное количество пунктов
принимает:
$x - х координата ползунка
$y - y координата ползунка
$steps - количество сдвижений ползунка (количество переворотов картинки каптчи)
возвращает - ничего
*/
function MoveSlider($x, $y, $steps) {
	global $mouse;

	$mouse->left_button_down($x, $y);
	// 9 пикселей примерное передвижение ползунка для изменения 1 угла картинки
	$mouse->move($x + 9*$steps, $y);
	$mouse->left_button_up($x + 9*$steps, $y);
}
?>
нужно только найти чем сравнивать картинки, на пхп тулзы есть, может еще какие тулзы, тут сложно подсказать, нужно поискать что в сети пишут про сравнение картинок. ко всему они еще на многие картинки накладывают цветное пятно, но так как большинство картинки не заслонено, думаю для инструмента сравнивания картинок найти самую похожую не будет сложно.

---------------------------------------------------------------------------------------------

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

Код: Выделить всё

<?php
require("../Templates/xweb_human_emulator.php");

// выключаем js
$browser->enable_java_script(0,0);

// переходим на страницу каптчи
$browser->navigate('http://notcaptcha.webjema.com/?p=1#comments');
$browser->wait();

// сохраняем 3 картинки
$image->save_to_file_by_url($image->get_src_by_name('imgonePict'),  __DIR__.'\cap1.jpeg', true);
$image->save_to_file_by_url($image->get_src_by_name('imgtwoPict'),  __DIR__.'\cap2.jpeg', true);
$image->save_to_file_by_url($image->get_src_by_name('imgthreePict'),  __DIR__.'\cap3.jpeg', true);

// функция распознавания, которая сможет найти номер вертикальной картинки
$cap1 = RecognizeCapPosition(__DIR__.'\cap1.jpeg');
$cap2 = RecognizeCapPosition(__DIR__.'\cap2.jpeg');
$cap3 = RecognizeCapPosition(__DIR__.'\cap3.jpeg');

// ставим нужный номер картинки для каждой из 3-х каптч
$listbox->select_num_value_by_name('imgoneField', $cap1);
$listbox->select_num_value_by_name('imgtwoField', $cap2);
$listbox->select_num_value_by_name('imgthreeField', $cap3);

$app->quit();
?>

Re: Капча от NotCaptcha, кто поможет?

Добавлено: 05 фев 2011, 17:47
fangetehum
Вроде бы еще давно на хабре писали про взлом этой капчи

Re: Капча от NotCaptcha, кто поможет?

Добавлено: 06 фев 2011, 04:21
satih
нашел 2 статьи про нее на хабре, в одной только предлагают по оси поворачивать (хотя так не различить между вертикальными и горизонтальными картинками) или брутфорсом брать (с шансом 1/512), что имхо не легче чем напарсить все сеты картинок и искать нужную. в этом посте указали на реальную дырку, если автору не наплевать на проект, думаю он ее сразу и закрыл (кому интересно, проверьте, а может и нет), дыра была чисто в коде, не в идее системы. судя по стате каптча не такая уж распостраненая

Re: Капча от NotCaptcha, кто поможет?

Добавлено: 07 фев 2011, 13:45
duxabilii
Вытянул все стандартные картинки их плагина.
http://files.mail.ru/FMSVJW
Просмотрел выдаваемые результаты - картинка из 8 jpeg изображений размером 50х50рх, между которыми 1рх разделитель.
Нашел статьи по сравнению изображений средствами php
http://webiteam.ru/2009/03/sravnenie-iz ... shhyu-php/
http://habrahabr.ru/blogs/php/55926/
http://leopard.in.ua/2010/12/09/bystroe ... ostgresql/

Не могу найти что-то для разделения выдаваемой картинки на части для ее сравнения.

Re: Капча от NotCaptcha, кто поможет?

Добавлено: 07 фев 2011, 14:29
satih
не думаю что нужно изобретать колесо, например imagemagick, с которым работает пхп, несомневаюсь что может сделать такое сравнение, на нем кстати был частично основан проeкт cap-cap.ru . мне просто в лом курить весь ман сравнения картинок с той страницы, так как если скачали ее 4к раз, поставили может на 500 блогов, из которых процентов 30 нормальные. да можно и не на пхп разгадывать, другим софтом каким нибудь сравнить, главное чтоб с командной строки работал, но снова, используют ее не настолько чтоб это оправдать. подсказал бы если б было чем, но с распознаванием каптч особо не работал.