Регер почты Rambler в 15 строк кода

Регер почты Rambler в 15 строк кода

Многопоточный. С проксями и антигейтом. И нормальным интерфейсом и статистикой. Пишется с помощью ViKing.ApplicationFramework.

Регистратор почты Rambler

Я, конечно, не считал комментарии, пустые и автоматически сгенерированные строки (в новом ConsoleApplication уже 15 таких строк). В этом уроке я буду больше фокусироваться на работе фреймворка, спарсить запросы к рамблеру вы думаю уже умеете. Кстати, мы уже писали mail регер rambler.ru, там был подробный разбор, что делать с запросами. С тех пор сайт изменился, но принципы все те же.

Прокси и антигейт

Во фреймворке уже есть поддержка и того и другого. Для того чтобы включить их достаточно добавить к классу Job атрибут с настройками

[GuiSettings(UseAntigate=true, UseProxies=true)]
public class Job : JobBase

Фреймворк автоматически добавит нужные поля в интерфейс. Если ввести ключ antigate, то функция PostCaptcha вместо вывода юзеру окна с капчей будет отправлять ее на antigate. При включении проксей инициализируется ProxyManager. Он подставляет новый прокси в каждый поток. Если на потоке возникает ошибка, то она приписывается к текущему прокси. Если у сервера много ошибок, то он выкидывается из менеджера.

Атрибут с настройками также есть и у свойств. Например, мы можем создать свойство для файла с акками и указать значение по умолчанию и надпись в интерфейсе

[PropertyDescription(Caption="Akks file", DefaultValue="mail")]
public static string AkksFile { get; set; }

Для записи файла акков будем использовать класс FileWriter. Он ведет себя как StringBuilder, только пишет в файл и ведет статистику

FileWriter akks = new FileWriter(AkksFile);

Теперь осталось написать только код для регистрации. С прошлого урока мы помним, что у каждого потока автоматически поддерживаются свои куки и прокси, так нам ничего не нужно указывать, просто писать запросы.

Регистрация почты

Сначала нужно скачать страницу регистрации, и вытащить оттуда ключ сессии, по нему мы будем регистрироваться

var doc = Request("http://id.rambler.ru/profile/create").GetHtmlDocument();
var key = doc.SelectSingleNode("//input[@name='request.key']").Attributes["value"].Value;

Дальше нужно заполнить первую страницу регистрации

var post = String.Format("request.key={0}&action=step2&profile.firstname=qweqwe&profile.lastname=qweqwe&profile.username={1}&profile.domain=rambler.ru", key, login);
doc = Request("http://id.rambler.ru/profile/create", post).GetHtmlDocument();

Вытаскиваем адрес капчи и разгадываем ее

var img = doc.GetElementbyId("secimage").Attributes["src"].Value;
var captcha = PostCaptcha("http://id.rambler.ru" + img);

И заполняем вторую страницу регистрации

post = String.Format("request.key={0}&action=step3&profile.password1={1}&profile.password2={1}&captcha.code={2}&profile.question=qweqwe&profile.customquestion=qweqwe&profile.answer=qweqwe&profile.gender=m&profile.birthday.day=13&profile.birthday.month=12&profile.birthday.year=1985", key, pass, captcha);
var ans = Request("http://id.rambler.ru/profile/create", post);

На всякий случай проверим, что регистрация успешна и запишем акк в файл

if (ans.Headers["Location"] != "/checkcookie") throw new Exception("Not registered");
akks.AppendLine(String.Format("{0}:{1}", login, pass));

Вот и все, авторегер готов. Скачать исходник и скомпилированную прогу можно тут.

upd: Обновил совместимость с .NET 4.0 и 4.5

Comments are closed.