Цитата WikipediaCAPTCHA (от англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) — товарный знак Университета Карнеги — Меллона, в котором разработали компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.

Данный тест широко применяется при регистрации, при добавлении сообщений, комментариев, объявлений и т.д.

Примеры капч для распознавания:

Примеры капч для распознавания

Примеры капч для распознавания

В Human Emulator есть три функции для распознавания капчи:

recognize_captcha – распознать картинку с диска как капчу

recognize_by_anticaptcha – распознать капчу картинки через сервис антикапча

recognize_by_captchabot – распознать капчу картинки через сервис капчабот

recognize_captcha функция самостоятельно разгадывает 10 видов простых капч. Что за капчи и каков процент их правильного разгадывания
можно посмотреть в документации к программе http://humanemulator.net/objects/DOM/image/recognize_captcha.php

recognize_by_anticaptcha и recognize_by_captchabot используют сервисы распознания antigate.com и captchabot.com. Для расширения работы с этими сервисами были добавлены объекты anticapcha(http://humanemulator.net/objects/DOM/anticapcha.php)
и captchabot(http://humanemulator.net/objects/DOM/captchabot.php).

Так же для ручного распознания в Хумане есть функции, которые показывают капчу в отдельном диалоге и
дают вам возможность ввести капчу самому:

dlg_captcha_from_image_number – диалог ввода капчи из картинки c заданным номером

dlg_captcha_from_url – показать диалог ввода капчи из картинки по заданному урлу

dlg_captcha_from_url_exactly – показать диалог ввода капчи из картинки по заданному урлу с соотвествием урла
(см. http://humanemulator.net/objects/WINDOW/app.php)

Приведём несколько примеров скриптов для использования различных капч.

Для начала используем функцию для распознания капч средствами Human Emulator. Для примера возьмём форму регистрации на сайте xanga.com. Этот сайт использует капчу 9 типа, которую Хуман разгадывает с 45%-м правильным разгадыванием.

Функция $image->recognize_captcha($file_path,$type); на вход принимает путь к файлу с картинкой и тип картинки. Поэтому перед тем как вызывать эту функцию нам нужно сохранить картинку в файл на диск. Для этого используем функцию $image->screenshot_by_src.

Примечание: Лучше всего работать с картинками по их src или по части их src. Для того, что бы посмотреть src картинки можно открыть информацию о ней в Инспекторе Элементов, щёлкнув на ней правой кнопкой мыши и в появившемся контекстном меню выбрать пункт “Посмотреть в инспекторе элементов” или в этом же меню можно выбрать Щёлкнуть и далее $image->click_by_src и в скрипт вставиться функция клика с полным src, из которого можно будет взять нужный кусок, который будет одинаковый при каждом обновлении страницы.

В данном случае функция будет выглядеть следующим образом: $image->screenshot_by_src(«C:\\Temp\\tmp.jpeg»,»randletters.aspx?fy»,false);
Тогда функция $image->recognize_captcha(«C:\\Temp\\tmp.jpeg»,9);

Теперь добавим в этот же скрипт вызов диалога ввода капчи $str_captcha=$app->dlg_captcha_from_url_exactly(«randletters.aspx?fy»,false); и переменную-флаг для настройки работы через распознание или через диалог ввода. В итоге наш скрипт будет:

$xhe_host ="127.0.0.1:7011";

// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// показывать через диалог
$b_show_dlg=true;

// переход на добавление объявления
$browser->navigate("http://www.xanga.com/register.aspx");
// строка с символами
$str_captcha="";
// распознать капчу
if($b_show_dlg)  // используя диалог
   $str_captcha=$app->dlg_captcha_from_url_exactly("randletters.aspx?fy",false);
else
{
    // сохранить картинку в файл по части src 
    $image->screenshot_by_src("C:\\Temp\\tmp.jpeg","randletters.aspx?fy",false);
    // распознать картинку
    $str_captcha=$image->recognize_captcha("C:\\tmp.jpeg",9);
}
// задать значение в поле ввода капчи
$input->set_value_by_name('registrationModule$txtLetters',$str_captcha);

// Quit
$app->quit();

Теперь напишем скрипт, который использует сервисы распознавания antigate.com и captchabot.com. Для примера возьмём сайт с flash капчей http://snappages.com/register. В данной форме регистрации для отображения капчи используется flash объект, который проигрывает символы в flash проигрывателе. Для того что бы распознать такую каптчу, мы используем одну из функций screenshot_by_*, которая сохраняет картинку элемента на диск и затем уже будем отправлять сохранённую картинку на сервис распознания.

Примечание: К сожалению, описания функций screenshot_by_* пока нет в документации к Human Emulator. Данные функции работают для всех объектов и сохраняют их снимок на диск по заданному пути. То есть вы можете сделать фотографию любого элемента страницы, используя тот или иной атрибут элемента. Для вызова этих функций можно использовать контекстное меню элемента->пункт меню «Сохранить» и выбрать нужную функции из появившегося списка.

Для http://snappages.com/register сохранение флэш объекта будет выглядеть следующим образом:

$object->screenshot_by_name("C:\\Temp\\tmp.jpeg","captchaSwf");

, а вызов фунций для сервисов распознания:

// распознать капчу с помощью antigate.com 
$str_captcha=$image->recognize_by_anticaptcha("","C:\\Temp\\tmp.jpeg",$api_key,$path='http://antigate.com',$is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 1, $is_numeric = 0, $min_len = 0, $max_len = 0);

// распознать капчу с помощью captchabot.com 
$str_captcha =$image->recognize_by_captchabot($api_key,"C:\\Temp\\tmp.jpeg","");

, где $api_key – это ключ сервиса распознания

Обернём все вызовы для распознания капчи в оператор switch и добавим флаг для выбора механизма распознавания. Теперь наш скрипт будет выглядеть следующим образом:

$xhe_host ="127.0.0.1:7011";
// The following code is required to properly run XWeb Human Emulator
require("../../Templates/xweb_human_emulator.php");

// что использовать для распознания
// 0 - диалог ввода каптчи
// 1 - antigate.com
// 2 - captchabot.com
$b_use=2;

// ключ антикаптчи
$api_key_antg="ваш ключ";
// ключ каптчабот
$api_key_cpt="ваш ключ";
// путь куда сохранить картинку
$img_path="C:\\Temp\\tmp.jpeg";

// переход на добавление объявления
$browser->navigate("http://snappages.com/register ");
// строка с символами
$str_captcha="";
// сохраним элемент на диск
$object->screenshot_by_name($img_path,"captchaSwf");
// распознать капчу
switch($b_use)  // используя диалог
{
   case 0:
   {
		// показать диалог ввода каптчи
		$str_captcha=$app->dlg_captcha_from_url($img_path);
		break;
   } 
   case 1:
   {
     // распознать капчу с помощью antigate.com 
     $str_captcha=$image->recognize_by_anticaptcha('',$img_path,$api_key_antg,$path='http://antigate.com',$is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 1, $is_numeric = 0, $min_len = 0, $max_len = 0);
     break;
   }
   case 2:
   {
     // распознать с помощью captchabot
     $str_captcha =$image->recognize_by_captchabot($api_key_cpt,$img_path);
     break;
   }
   default: // показать диалог ввода каптчи
    	$str_captcha=$app->dlg_captcha_from_url($img_path);
    
}
// задать значение капчи
$input->set_value_by_name("captcha",$str_captcha);

// Quit
$app->quit();

Скрипты написаны в XHE 4.4.19 MT.

скачать примеры скриптов

Добавить комментарий

*
*

девятнадцать − 13 =

Required fields are marked *