Неправильно определяется тип каптчи

  • Автор темы Автор темы Vitalii72
  • Дата начала Дата начала

Vitalii72

Пользователь
Регистрация
01.07.2015
Сообщения
30
Реакции
2
Баллы
8
Очень часто капчу Mail.Ru определяет как AOL.
Нужна возможность отправлять тип каптчи в дополнительных параметрах API сервисов, либо определять тип на основе домена. Но лучше чтобы возможность через дополнительный параметр была.

CapMonsterModule=MailRu - это только через модуль зенно можно?
2ff966845d0ba5daa34207da7c78db40.jpg
 
У меня нет такой проблемы, все четко определяет
 
  • Спасибо
Реакции: Vitalii72
Это вы через модуль в зенно капмонстр определяете? Возможно через зенно и модуль капмонстр проблем нет. А попробуйте другим софтом капчу как на сервис отправить.
 
Да с зенки отсылаю
 
Тип Google капчи тоже некорректно определяет


15726d9e6d525de461cb062ee789c14c.jpg
 
Очень часто капчу Mail.Ru определяет как AOL.
Скиньте несколько таких каптч, есть подозрение, что они из используемой вами программы приходят с искажением.

Тип Google капчи тоже некорректно определяет
Увы пока так. Если приходят только слова как на скриншоте, то нужно поставить распознавать все каптчи как GoogleWords или отключить модуль GoogleDigits.
Сами понимаете, слова от цифр ничем не отличаются, кроме того, что на одной каптче буквы, на другой цифры, но это известно становится, только если каптчу распознать. В принципе это решаемо, чуть позже возьмемся за это.
 
  • Спасибо
Реакции: Vitalii72
Скиньте несколько таких каптч, есть подозрение, что они из используемой вами программы приходят с искажением.
Каптча оригинальная. Не из мобильной версии. С капчей ничего не делается, сразу на сервис отправляется. Прикрепил 100 штук. Они все определяются либо как AOL либо совсем никак.
 

Вложения

  • 100.zip
    100.zip
    393 KB · Просмотры: 374
  • mail.JPG
    mail.JPG
    31,4 KB · Просмотры: 834
Нет, у этой тоже размеры не совпадают, она обрезана в отличие от оригинальной, от сюда ее и не признает как mail ru каптчу
 
Может настройки по размерам каждого типа каптч вынесите в отдельные конфигурационные файлы?
Можете добавить этот размер каптч?
Браузером захожу пытаюсь зарегистрироваться - сохраняю каптчу, которая вылетает в Pop-Up окне и размер тотже. Ничто капчу не обрезает 100%. Возможно вам выдаётся один размер каптч, а мне другой.
 
Может настройки по размерам каждого типа каптч вынесите в отдельные конфигурационные файлы?
Нечто подобное есть, но вы пока не можете это редактировать

Можете добавить этот размер каптч?
Добавим в ближайшее время
 
Подскажите как использовать CapMonsterModule= не в зенно, хотя бы пример php скрипта. Капмонстер без четкого указания типа капчи отказывается распознавать (Answer is empty) в частности яндекс капчу.
 
Это возможно только в том случае, если программа ваша позволяет передавать дополнительные параметры запроса к сервисам типа антигейта.
CapMonsterModule=это такой же параметр как, скажем is_russian=1
 
Это возможно только в том случае, если программа ваша позволяет передавать дополнительные параметры запроса к сервисам типа антигейта.
CapMonsterModule=это такой же параметр как, скажем is_russian=1

Пробую в php передавать $CapMonsterModule = "ZennoLab.YandexRus", не определяет все равно. Распознаю с помощью примера антигейт http://antigate.com/code/phpnocurl.txt
 
ну как бы мало передать его в параметрах, его еще в тело запроса надо вкодировать.
должно быть примерно вот так:

PHP:
Развернуть Свернуть Копировать
<?php
/*
$filename - file path to captcha. MUST be local file. URLs not working
$apikey   - account's API key
$rtimeout - delay between captcha status checks
$mtimeout - captcha recognition timeout

$is_verbose - false(commenting OFF),  true(commenting ON)

additional custom parameters for each captcha:
$is_phrase - 0 OR 1 - captcha has 2 or more words
$is_regsense - 0 OR 1 - captcha is case sensetive
$is_numeric -  0 OR 1 - captcha has digits only
$min_len    -  0 is no limit, an integer sets minimum text length
$max_len    -  0 is no limit, an integer sets maximum text length
$is_russian -  0 OR 1 - with flag = 1 captcha will be given to a Russian-speaking worker

usage examples:
$text=recognize("/path/to/file/captcha.jpg","YOUR_KEY_HERE",true, "antigate.com");

$text=recognize("/path/to/file/captcha.jpg","YOUR_KEY_HERE",false, "antigate.com");  

$text=recognize("/path/to/file/captcha.jpg","YOUR_KEY_HERE",false, "antigate.com",1,0,0,5);  

*/

function recognize(
        $filename,
        $apikey,
        $is_verbose = true,
        $sendhost = "antigate.com",
        $rtimeout = 5,
        $mtimeout = 120,
        $is_phrase = 0,
        $is_regsense = 0,
        $is_numeric = 0,
        $min_len = 0,
        $max_len = 0,
        $is_russian = 0, 
        $capMonsterModule = "")
{
    if (!file_exists($filename))
    {
        if ($is_verbose) echo "file $filename not found\n";
        return false;
    }
    $fp=fopen($filename,"r");
    if ($fp!=false)
    {
        $body="";
        while (!feof($fp)) $body.=fgets($fp,1024);
        fclose($fp);
                $ext=strtolower(substr($filename,strpos($filename,".")+1));
    }
    else
    {
        if ($is_verbose) echo "could not read file $filename\n";
        return false;
    }
   
    if ($ext=="jpg") $conttype="image/pjpeg";
    if ($ext=="gif") $conttype="image/gif";
    if ($ext=="png") $conttype="image/png";
   
   
    $boundary="---------FGf4Fh3fdjGQ148fdh";
   
    $content="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"method\"\r\n";
    $content.="\r\n";
    $content.="post\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"key\"\r\n";
    $content.="\r\n";
    $content.="$apikey\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"phrase\"\r\n";
    $content.="\r\n";
    $content.="$is_phrase\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"regsense\"\r\n";
    $content.="\r\n";
    $content.="$is_regsense\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"numeric\"\r\n";
    $content.="\r\n";
    $content.="$is_numeric\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"min_len\"\r\n";
    $content.="\r\n";
    $content.="$min_len\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"max_len\"\r\n";
    $content.="\r\n";
    $content.="$max_len\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"is_russian\"\r\n";
    $content.="\r\n";
    $content.="$is_russian\r\n";
    $content.="--$boundary\r\n";
    $content.="Content-Disposition: form-data; name=\"CapMonsterModule\"\r\n";
    $content.="\r\n";
    $content.="$capMonsterModule\r\n";
    $content.="--$boundary\r\n";   
    $content.="Content-Disposition: form-data; name=\"file\"; filename=\"capcha.$ext\"\r\n";
    $content.="Content-Type: $conttype\r\n";
    $content.="\r\n";
    $content.=$body."\r\n";
    $content.="--$boundary--";
   
   
    $poststr="POST http://$sendhost/in.php HTTP/1.0\r\n";
    $poststr.="Content-Type: multipart/form-data; boundary=$boundary\r\n";
    $poststr.="Host: $sendhost\r\n";
    $poststr.="Content-Length: ".strlen($content)."\r\n\r\n";
    $poststr.=$content;
   
   // echo $poststr;
   
    if ($is_verbose) echo "connecting $sendhost...";
    $fp=fsockopen($sendhost,80,$errno,$errstr,30);
    if ($fp!=false)
    {
        if ($is_verbose) echo "OK\n";
        if ($is_verbose) echo "sending request ".strlen($poststr)." bytes...";
        fputs($fp,$poststr);
        if ($is_verbose) echo "OK\n";
        if ($is_verbose) echo "getting response...";
        $resp="";
        while (!feof($fp)) $resp.=fgets($fp,1024);
        fclose($fp);
        $result=substr($resp,strpos($resp,"\r\n\r\n")+4);
        if ($is_verbose) echo "OK\n";
    }
    else 
    {
        if ($is_verbose) echo "could not connect to anti-captcha\n";
        if ($is_verbose) echo "socket error: $errno ( $errstr )\n";
        return false;
    }
   
    if (strpos($result, "ERROR")!==false or strpos($result, "<HTML>")!==false)
    {
        if ($is_verbose) echo "server returned error: $result\n";
        return false;
    }
    else
    {
        $ex = explode("|", $result);
        $captcha_id = $ex[1];
        if ($is_verbose) echo "captcha sent, got captcha ID $captcha_id\n";
        $waittime = 0;
        if ($is_verbose) echo "waiting for $rtimeout seconds\n";
        sleep($rtimeout);
        while(true)
        {
            $result = file_get_contents('http://antigate.com/res.php?key='.$apikey.'&action=get&id='.$captcha_id);
            if (strpos($result, 'ERROR')!==false)
            {
                if ($is_verbose) echo "server returned error: $result\n";
                return false;
            }
            if ($result=="CAPCHA_NOT_READY")
            {
                if ($is_verbose) echo "captcha is not ready yet\n";
                $waittime += $rtimeout;
                if ($waittime>$mtimeout) 
                {
                    if ($is_verbose) echo "timelimit ($mtimeout) hit\n";
                    break;
                }
                if ($is_verbose) echo "waiting for $rtimeout seconds\n";
                sleep($rtimeout);
            }
            else
            {
                $ex = explode('|', $result);
                if (trim($ex[0])=='OK') return trim($ex[1]);
            }
        }
       
        return false;
    }
}
?>
 
  • Спасибо
Реакции: Scov
работает, спасибо
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)