Авторегер для memori.ru ? Ну так вот он = )
[+] Регистрирует аккаунты на memori.ru
[+] Работа с antigate.com
[+] Автоматическая отправка отчётов о плохой капче
[+] Ручной ввод капчи
[+] Поддержка прокси
[+] Рандомный User-agent
[+] Log и progressbar в реальном времени
[+] Все настройки производятся через браузер
(не нужно лезть в файлы и редактировать их)
[+] Поддержка Ajax
(при вводе кода капчи страница не перезагружается)
Данный скрипт создавался довольно долго, т.к. можно сказать писался “фреймворк” для будущих работ. Если сравнивать данную программу с тем, что я писал раньше, то явно чувствуется прогресс (надеюсь в лучшую сторону). Добавлено очень много новых функций и возможностей, которые будут присутствовать и в разработке последующих проектов.
Капча
Программа поддерживает работу с сервисом “антикапчи”, что позволяет вам, имея оплаченный аккаунт на этом сайте, не предпринимать ни каких действий, а лишь наблюдать за процессом регистрации.
Если работники антикапчи случайно (а может и нет) ошиблись и ввели не тот код, что на картинке, то программа автоматически отправит отчёт об этом и ваши деньги не спишут (данную функцию можно отключить в настройках)
Если же вы любитель вводить капчу самостоятельно, то и такая возможность имеется, нужно лишь активировать её в настройках
Настройки через браузер
Раньше, для редактирования опций скрипта, приходилось подключаться к FTP и править файлы вручную для изменения настроек работы скрипта. В данном скрипте в этом нет необходимости, все настройки можно изменять через браузер (на вкладе Настройки). Значения переменных хранятся в файле config.php
Рандомный User-agent
В файле user_agent.txt хранится 907 разнообразных User-agent‘ов, при каждом обращении к серверу берётся и используется один их них. При регистрации с прокси + не рандомные логины + рандомный user_agent вы практически никак не выдаёте себя = )
Ajax
В программе используется технология Ajax. Для “юзабельности” применяются вкладки, с помощью которых можно намного увеличить свободное пространство на экране и пользователь сразу понимает, “что, где лежит” = )
Для большей наглядности, при работе программы показывается progressbar, по мере выполнения работы скрипта, он заполняется.
При вводе кода капчи вручную, страница не перезагружается, что намного удобнее при работе с программой.
Код
Файлов относительно много и выкладывать их код тут смысла нет, поэтому покажу лишь код основного файла core.php, именно он производит регистрацию аккаунтов.
Если будут вопросы/предложения по коду, буду рад выслушать
Скачать авторегер Memori.ru
<?php include ('config.php'); @set_time_limit(0); function post($url,$post,$refer,$ua,$proxy) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, trim($ua)); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook"); curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook"); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); return $result; } function login() { $letters = 'abcdefghijklmopkqrstuvwxyz'; for ($p = 0; $p < 7; $p++) { $login .= $letters{rand(0, strlen($letters) - 1)}; } return $login; } function logs($text,$progressbar,$captcha_form) { file_put_contents('style/log.html','<html><head><meta http-equiv="Refresh" content="1; URL=log.html"></head><body bgcolor="#ffffd5">'.$text.file_get_contents('style/log.html').'</body></html>'); file_put_contents('style/progress.html','<html><head><meta http-equiv="Refresh" content="1; URL=progress.html"><link type="text/css" href="theme/jquery-ui-1.7.2.custom.css" rel="stylesheet" /><script type="text/javascript" src="js/jquery-1.3.2.min.js"></script><script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script><script type="text/javascript">$(function(){$(\'#dialog\').dialog({autoOpen: '.$captcha_form.',width: 600});$("#progressbar").progressbar({value: '.$progressbar.'});});</script><style type="text/css">body{ font: 62.5% "Trebuchet MS", sans-serif; margin: 50px;}.demoHeaders { margin-top: 2em; }#dialog_link {padding: .4em 1em .4em 20px;text-decoration: none;position: relative;}#dialog_link span.ui-icon {margin: 0 5px 0 0;position: absolute;left: .2em;top: 50%;margin-top: -8px;}ul#icons {margin: 0; padding: 0;}ul#icons li {margin: 2px; position: relative; padding: 4px 0; cursor: pointer; float: left; list-style: none;}ul#icons span.ui-icon {float: left; margin: 0 4px;}</style></head><body><div id="dialog_link"></div><div id="dialog" title="Ввод капчи"><p><center><img src="captcha.jpg"><p><form name="enter_captcha" action="../core.php" method="POST">Код: <input type="text" name="captcha_code" value="" /><br><p><input type="submit" value="OK"></form></p></center></div><div id="progressbar"></div></body></html>'); } /* Функция для распознавания капчи */ function recognize($filename, $apikey, $is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 1, $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://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].'|'.$captcha_id); } } return false; } } if ($_POST['captcha_code']) { file_put_contents('style/captcha_code.capt',trim($_POST['captcha_code'])); echo '<meta http-equiv="Refresh" content="0; URL=style/progress.html">'; exit; } echo '<br> <form name="captcha_form" action="core.php" method="POST"> <font color="#FF4500">Количество регистраций: <input type="text" name="ammount" value="" /><br><p> <font color="#FF4500">Пароль: <input type="text" name="password" value="" /><br>(Оставьте пустым для рандомного)<br><p> <font color="#FF4500">Рандомный логин: <input type="checkbox" name="login_rand" /><br><p> <font color="#FF4500">Работать с прокси: <input type="checkbox" name="proxy_true" /><br><p> <font color="#FF4500">Debug - режим: <input type="checkbox" name="debug" /><br><p> <input type="submit" value="Начать"> </form>'; if($_POST['ammount']) { $p = 0; $l = 0; $end_result = 0; $login_array = file('txt/'.$login); $proxy_array = file('txt/'.$proxy); $ua_array = file('txt/user_agent.txt'); $count_login = count($login_array); $count_proxy = count($proxy_array); logs('['.date('H:i:s').'] <font color="#32CD32">Начало работы</font><br><br>',0,'false'); /* Пока не достигнем нужного количества аккаунтов, не заканчиваем регистрацию */ for ($e = 0; $end_result <= trim($_POST['ammount'])-1; $e++) { $activation[1] = null; /* User-agent */ if($user_agent == 'on') { $ua = $ua_array[rand(0,905)]; } else { $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4'; } /* Прокси */ if($_POST['proxy_true']) { while($proxy_check[1] != 'e') { if($p != count($proxy_array)) { /* Выходим из аккаунта и проверяем прокси */ $result = post('http://memori.ru/logout/',null,'http://memori.ru/',$ua,$proxy_array[$p]); if(preg_match('#le>M(.*?)m#i',$result,$proxy_check)) { $proxy = $proxy_array[$p]; $p++; logs('['.date('H:i:s').'] <font color="#32CD32">'.$proxy.'</font><br>',10,'false'); } else { logs('['.date('H:i:s').'] <font color="#FF0000">'.$proxy_array[$p].'</font><br>',10,'false'); $p++; } } else { logs('['.date('H:i:s').'] <font color="#FF0000">Закончились прокси</font><br>',100,'false'); logs('['.date('H:i:s').'] <font color="#FA8072">Зарегистрировано: <font color="#CD0000"><b>'.$end_result.'</b></font></font><br><br>',100,'false'); exit; } } $proxy_check[1] = ''; } else { $proxy = null; post('http://memori.ru/logout/',null,'http://memori.ru/',$ua,$proxy); } /* Пароль */ if ($_POST['password']) { $password = trim($_POST['password']); } else { $password = rand(123456,7777777); } /* Если нужен рандомный логин */ if($_POST['login_rand']) { $login = login(); } else { $login_check[1] = 'я'; while($login_check[1] != null) { if($l != $count_login) { /* Проверяем login на занятость */ $result = post('http://memori.ru/register/','login='.trim($login_array[$l]),'http://memori.ru/register/',$ua,$proxy); if(preg_match('#е зан(.*?)т#i',$result,$login_check)) { logs('['.date('H:i:s').'] <font color="#FF0000">Логин '.$login_array[$l].' занят</font><br>',10,'false'); $l++; } else { if(preg_match('#логин нельз(.*?) и#i',$result,$login_check)) { logs('['.date('H:i:s').'] <font color="#FF0000">Логин '.$login_array[$l].' занят</font><br>',10,'false'); $l++; } else { logs('['.date('H:i:s').'] <font color="#32CD32">'.$login_array[$l].'</font><br>',40,'false'); $login_check[1] = null; $login = trim($login_array[$l]); $l++; } } } else { logs('['.date('H:i:s').'] <font color="#FF0000">Закончились логины</font><br>',100,'false'); logs('['.date('H:i:s').'] <font color="#FA8072">Зарегистрировано: <font color="#CD0000"><b>'.$end_result.'</b></font></font><br><br>',100,'false'); exit; } } $login_check[1] = ''; } /* Начинаем регистрацию */ $result = post('http://memori.ru/register/',null,'http://memori.ru/registration/',$ua,$proxy); /* Получаем значения */ preg_match('#en" value="(.*?)"#i',$result,$token); if($token[1] != null) { logs('['.date('H:i:s').'] <font color="#32CD32">Получили страницу регистрации</font><br>',60,'false'); } else { logs('['.date('H:i:s').'] <font color="#FF0000">Страница регистрации не загружена</font><br><br>',100,'false'); exit; } /* Создаём картинку капчи */ file_put_contents('style/captcha.jpg',post('http://memori.ru/captcha/',null,'http://memori.ru/registration/',$ua,$proxy)); /* Распознаём её */ if ($captcha_input == 'on') { logs('['.date('H:i:s').'] <font color="#32CD32">Введите код капчи</font><br>',70,'true'); while(!file_exists('style/captcha_code.capt')) { } $text[0] = file_get_contents('style/captcha_code.capt'); unlink('style/captcha_code.capt'); } else { if ($ac_key == null) { logs('['.date('H:i:s').'] <font color="#FF0000">Не задан ключ antigate.com</font><br><br>',100,'false'); exit; } else { $text = explode('|',recognize(getcwd()."/style/captcha.jpg",$ac_key,false)); } } logs('['.date('H:i:s').'] <font color="#32CD32">Регистрируем аккаунт</font><br>',95,'false'); if ($_POST['debug']) { /* Регистрируем аккаунт */ echo $result = post('http://memori.ru/register/','login='.$login.'&email='.$login.'@antireg.ru&password='.$password.'&password_confirm='.$password.'&captcha='.$text[0].'&inviter=&token='.$token[1],'http://memori.ru/registration/',$ua,$proxy); } else { $result = post('http://memori.ru/register/','login='.$login.'&email='.$login.'@antireg.ru&password='.$password.'&password_confirm='.$password.'&captcha='.$text[0].'&inviter=&token='.$token[1],'http://memori.ru/registration/',$ua,$proxy); } /* Если капчу ввели не верно */ if(preg_match('#совп(.*?)дает#i',$result)) { logs('['.date('H:i:s').'] <font color="#FF0000">Код капчи не верен!</font><br>',95,'false'); /* Отправляем отчёт о плохой капче */ if(($reportbad == 'on') && ($captcha_input != 'on')) { file_get_contents('http://antigate.com/res.php?key='.$ac_key.'&action=reportbad&id='.$text[1]); logs('['.date('H:i:s').'] <font color="#FF0000">Отчёт о плохой капче отправлен!</font><br>',95,'false'); } } else { while($activation[1] == null) { /* Проверяем почту */ $email = post('http://'.$login.'.antireg.ru',null,'http://antireg.ru/',$ua,$proxy); if(preg_match('#u=(.*?)"#i',$email,$activation)) { /* Активируем аккаунт */ $email = post('http://antireg.ru/go?u='.$activation[1],null,'http://antireg.ru/',$ua,$proxy); logs('['.date('H:i:s').'] <font color="#FA8072">Зарегистрирован '.$login.'</font><br>',100,'false'); /* Сохраняем результат */ $fh = fopen('txt/'.$accounts, "a+"); $success - fwrite($fh, $login.$divider.$password."\r\n"); fclose($fh); $end_result++; } else { logs('['.date('H:i:s').'] <font color="#32CD32">Ждём письма</font><br>',95,'false'); sleep($sleep); } } } } logs('['.date('H:i:s').'] <font color="#FA8072">Зарегистрировано: <font color="#CD0000"><b>'.$end_result.'</b></font></font><br><br>',100,'false'); } /* geforse.name */ ?>
Пользуйтесь на здоровье (:
ВАЖНО: Скрипт писал не я — это перепечатка статьи. Автор по линку источник.
Источник: Авторегер Memori.ru