С антикапчой... разъясните

Discussion in 'Болталка' started by DeMoN_2009, 3 Jan 2010.

  1. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    Вот такое дело. У меня есть сайт. На нем нужно вводить капчу раз в десять минут. Можно ли сделать чтобы она автоматом шла в антикапчи и сама вставлялась на сайт?
    И как сделать чтобы я был на сайте онлайн всегда, даже если не в сети?
    P.S. Я неопытный =)
     
  2. fatalo

    fatalo Elder - Старейшина

    Joined:
    15 May 2008
    Messages:
    45
    Likes Received:
    46
    Reputations:
    5
    ВКонтакте?
     
  3. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    не не))
     
  4. fatalo

    fatalo Elder - Старейшина

    Joined:
    15 May 2008
    Messages:
    45
    Likes Received:
    46
    Reputations:
    5
    Тогда кинь в личку - подскажу,что делать.
     
  5. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    <?php
    /*
    $filename - полный путь к файлу
    $apikey - ключ для работы
    $rtimeout - задержка между опросами статуса капчи
    $mtimeout - время ожидания ввода капчи

    включить/выключить verbose mode (комментирование происходящего):
    $is_verbose - false(выключить), true(включить)

    дополнительно (дефолтные параметры править не нужно без необходимости):
    $is_phrase - 0 либо 1 - флаг "в капче 2 и более слов"
    $is_regsense - 0 либо 1 - флаг "регистр букв в капче имеет значение"
    $is_numeric - 0 либо 1 - флаг "капча состоит только из цифр"
    $min_len - 0 (без ограничений), любая другая цифра указывает минимальную длину текста капчи
    $max_len - 0 (без ограничений), любая другая цифра указывает максимальную длину текста капчи

    пример:
    $text=recognize("/path/to/file/captcha.jpg","ваш_ключ_из_админки",true);

    $text=recognize("/path/to/file/captcha.jpg","ваш_ключ_из_админки",false); //отключено комментирование

    $text=recognize("/path/to/file/captcha.jpg","ваш_ключ_из_админки",false,1,0,0,5); //отключено комментирование, капча состоит из двух слов, общая минимальная длина равна 5 символам

    */



    function recognize($filename, $apikey, $is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 0, $is_numeric = 0, $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($ch, CURLOPT_URL, 'http://www.anti-captcha.com/in.php');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_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://anti-captcha.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;
    }
    }
    ?>
     
  6. fatalo

    fatalo Elder - Старейшина

    Joined:
    15 May 2008
    Messages:
    45
    Likes Received:
    46
    Reputations:
    5
    На том сайте,что ты дал,это сделать реально.Флеша, вроде бы, нет.
    Делай скрипт авторизации и ставь на крон.А вот каптчу я там не могу найти.Не подскажешь где она вылезает?