PDA

Просмотр полной версии : [Руководство] Чекер мыл.


kawaii.prince
21.11.2013, 20:24
Как сделать чекер мыл на примере регистрации в Twitter. Вся работа будет идти в Delphi XE, для работы с сетью буду использовать Indy.Браузер Mozila FireFox(Через него отлавливаются запросы с SSL).

Первый Этап.Подготовка.
Нам понадобится HTTP сниффер, коих в сети огромное количество. Я буду использовать HTTP Analyzer(Линк на рутрекер ([Ссылки могут видеть только зарегистрированные и активированные пользователи])).
Идем на [Ссылки могут видеть только зарегистрированные и активированные пользователи] и запускаем HTTP Analyzer.
На сайте видим такую табличку:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
В сниффере включаем логирование(кнопочка Start):[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Вводим в поле Адрес Электронной почты мыло, на которое уже есть рега(например [Ссылки могут видеть только зарегистрированные и активированные пользователи]), и видим такую картину:[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Значит отослался какой либо запрос, так как у нас включено логирование в сниффере-идем туды. Смотрим, и вправду, отослался GET запрос:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Смотрим его структуру:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

И сразу же видим, что в параметр email вставляется наше мыло.
Так же надо посмотреть ответ от сервера, для этого в сниффере переходим во вкладочку Response Content:[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Смотрим структуру ответа:
{"suggestions":[],"color":"red","msg":"\u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442. \u041e\u0434\u0438\u043d \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u 043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u 043d \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043e\u0434\u043d\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0432 \u0422\u0432\u0438\u0442\u0442\u0435\u0440\u0435.","valid":false}
Как видно, в конце стоит:
"valid":false}
По этому куску ответа, мы и будем определять, есть ли рега, или нет)
Но для полной уверености, делаем тоже самое, только для мыла которое не зарегено(например [Ссылки могут видеть только зарегистрированные и активированные пользователи]), и точно так же смотрим структуру ответа:
{"color":"green","suggestions":[{"sources":["email"],"suggestion":"yob123a","technique":"make_individuals"}],"msg":"\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e!","valid":true}
Тут уже видим:
"valid":true}

Вот впринципе и всё. На этом этап подготовки закончен. Переходим непосредственно к Delphi.

Этап два. Подготовка формы, и нужных нам компонентов.
Создаем новый проект:
File->New->VCL Form Application.
Закидываем на форму:
TidHTTP
TOpenDialog
TButton(2 штуки)
TMemo
TIdSSLIOHandlerSocketOpenSSL
TidAntiFreeze
TGroupBox
Теперь поподробнее о том, зачем они нам нужны.

Tid[Ссылки могут видеть только зарегистрированные и активированные пользователи] компонент для работы с сетью. Через него мы все и будет отправлять, и тд.
TOpenDialog - через него мы будем загружать наши email'ы в программу.
TButton - кнопка, при нажатии на которую, будет совершатся какое либо действие.
TMemo - в него будем писать весь лог.
TIdSSLIOHandlerSocketOpenSSL - компонент для работы с SSL. Так как твиттер работает через него, то без этого компонента ничего не будет работать.
TidAntiFreeze - без этого компонента, будут лаги с GUI интерфейсом(проще говоря, во время работы, форма будет оч сильно лагать)
TGroupBox - В него мы будем добавлять метки(TLABEL) по мере разработки программы.

Теперь настраиваем их. При выделении любого компонента, в Object Inspektor'е появляются 2 вкладки:
Properties и Events
Properties- непосредственно свойства данного компонента.
Events- события, которые возможны с данным компонентом.

Сейчас работаем только со вкладкой Properties.
Выделяем id[Ссылки могут видеть только зарегистрированные и активированные пользователи] в строчке IOHandler ставим IdSSLIOHandlerSocketOpenSSL1 , получится вот так:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Далее Memo1.
Строчка Lines, напротив неё TStrings. Жмем на три точки. Стираем всё там, чтобы просто было пусто.

GroupBox1.
Меняем Caption на "Статистика:"

Button1
Меняем Caption на "Emails"

Button2
Меняем Caption на "Начать"

Теперь добавляем TLabel для статистики.

Нам их нужно 6 штучек. Выделяем их в Tool Palette , и кидаем их непосредственно в GroupBox1(тобишь не на форму, а именно прям на GroupBox1)

Располагаем по типу:
1 2
3 4
5 6

Меняем у нечетных номеров(1,3,5) свойства Caption на следующие:
All:
Good:
Bad:

А у четных(2,4,6) Caption очищаем.

В итоге наша форма теперь примерно выглядит так:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Этап подготовки формы закончен. Перейдем к коду.

Этап 3. Код.

Переходим к коду(Жмем на F12).
Для начала добавим переменные.В Var добавляем:
Mails:TStringList;
Link:String;
i:Integer;
В Mails мы будем загружать мыла, для последующей отправки запросов.
В Link мы будем писать исходник ответа от сервера.
В i будет хранится номер текущей строчки из TStringList.
Список маленький, впринципе нам больше ничего и не нужно.

Идем обратно на форму, жмем на пустое место на форме, в Object Inspector'е идем во вкладку Events, напротив OnCreate выделяем строчку, жмакаем туды два раза, и пишем туда код:
Mails:=TstringList.Create;
Теперь займемся кнопками.
Возвращаемся на форму, жмем два раза на Emails. Пишем туда код:
OpenDialog1.InitialDir:=ExtractFilePath(Applicatio n.ExeName);
if OpenDialog1.Execute then
begin
Mails.Clear;
Mails.LoadFromFile(OpenDialog1.FileName);
Label2.Caption:=inttostr(Mails.Count);
end;
Данный код загружает в программу файл, его содержимое пишется в Mails, а в Label2 пишется общее количество строк в данном текстовике.

Ну а теперь самое интересное. Обратно к форме, и жмем два раза на Начать.
пишем туда код:
if mails.Count<>0 then // Если количество строк в Mails не равно нулю, тогда начинается цикл.
begin
Label4.Caption:='0';
Label6.Caption:='0';
for i := 0 to mails.Count-1 do
begin
try
Link:=id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]'+Mails[i]+'&suggest_on_username=false&context=signup'); //Гет запрос с емейлом
except
end;
if Pos('"valid":false}',Link)<>0 then //если в ответе от сервера содержится "valid":false} тогда:
begin
Memo1.Lines.Add('Good:'+Mails[i]); //В мемо1 пишется что емейл зареген
Label4.Caption:=IntToStr(StrToInt(Label4.Caption)+ 1); //К Гудам добавляется значение +1
end
else
begin
Memo1.Lines.Add('Bad:'+Mails[i]); //в Мемо1 пишется что акк не валид.
Label6.Caption:=IntToStr(StrToInt(Label6.Caption)+ 1); //к бедам добавляется значение +1
end;
end;
end
else
ShowMessage('Вы не загрузили емейлы'); //если количество строк в Mails = 0 программа просто не заработает.
Далее сохраняем наш проект в новосозданную папку.
Теперь тестируем.
Нажимаем на F9, программа откомпилируется,и сохранится в папку, куда мы всё и сохранили. Далее она сама запустится. Грузим любой текстовик с мылами. Я для теста сделал текстовик с тремя строчками:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Жмем на Emails, открываем наш тестовик.
Нажимаем начать, и узреваем результат:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

На этом собственно всё. Надеюсь вам понравилась статья, она предназначена исключительно для новичков. Статья не моя.
И зачем вы минусуете то ?