Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics,
- Controls, Forms, Dialogs, StdCtrls, IdAntiFreezeBase,
- IdAntiFreeze, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
- IdHTTP, SyncObjs, ComCtrls, IdIOHandler, IdIOHandlerSocket,
- IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
- type
- TForm1 = class(TForm)
- OpenDialog1: TOpenDialog;
- IdHTTP1: TIdHTTP;
- IdAntiFreeze1: TIdAntiFreeze;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Label4: TLabel;
- Button2: TButton;
- ProgressBar1: TProgressBar;
- Edit1: TEdit;
- IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
- Button3: TButton;
- Memo1: TMemo;
- procedure FormCreate(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- TNewThread = class(TThread)
- private
- FProxy :string;
- FPPort:integer;
- get: string;
- Rez : Integer;
- protected
- procedure Execute; override;
- public
- procedure Sync;
- constructor Create(CreateSuspended: Boolean);
- end;
- var
- Form1: TForm1;
- Proxys:Tstringlist;
- Thread, Acc, proxy:integer;
- Work:boolean;
- CS:TcriticalSection;
- GoodFile, BadFile: textfile;
- implementation
- {$R *.dfm}
- constructor TNewThread.Create(CreateSuspended: Boolean);
- begin
- inherited Create(CreateSuspended);
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- label1.Caption:='0';
- label2.Caption:='0';
- ProgressBar1.Max:=Proxys.Count;
- ProgressBar1.Position:=0;
- Acc:=-1;
- Proxy:=-1;
- Work:=true;
- for Thread:=1 to strtoint(Edit1.Text) do
- TNewThread.Create(false);
- Thread:=strtoint(Edit1.Text);
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
- if OpenDialog1.Execute then
- begin
- Proxys.Clear;
- Proxys.LoadFromFile(OpenDialog1.FileName);
- end;
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- Proxys.Free;
- CS.Free;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Proxys:=Tstringlist.Create;
- CS:=TCriticalSection.Create;
- end;
- procedure TNewThread.Execute;
- var
- CurProxy:integer;
- HTTP: TIdHTTP;
- ssl: TIdSSLIOHandlerSocketOpenSSL; //Если отключаем все идет гладко
- begin
- while Work do
- begin
- CS.Enter;
- Inc(proxy);
- if proxy<Proxys.Count then CurProxy:=proxy else Work:=false;
- CS.Leave;
- if Work then
- begin
- FProxy:=Copy(Proxys[CurProxy],1,Pos(':',Proxys[CurProxy])-1);
- FPPort:=StrToInt(Copy(Proxys[CurProxy],Pos(':',Proxys[CurProxy])+1,Length(Proxys[CurProxy])));
- HTTP:=TIdHTTP.create;
- ssl:=TIdSSLIOHandlerSocketOpenSSL.Create(nil); //Если отключаем все идет гладко
- HTTP.IOHandler:=ssl; //Если отключаем все идет гладко
- http.ConnectTimeout:=5000;
- http.ReadTimeout:=5000;
- HTTP.ProxyParams.ProxyServer:=FProxy;
- HTTP.ProxyParams.ProxyPort:=FPPort;
- HTTP.HandleRedirects:=false;
- try
- if Pos('www.artlebedev.ru', HTTP.get('http://ya.ru'))<>0 then
- Rez:=1 // В случае если наши в коде artlebedev.ru
- else
- rez:=-1; // В случае если НЕ наши в коде
- except
- Rez:=-1; // Прокси не ответил
- end;
- HTTP.Free;
- Synchronize(Sync);
- end;
- end;
- dec(Thread);
- if Thread=0 then ShowMessage('OK');
- end;
- procedure TNewThread.Sync;
- begin
- case Rez of
- 1:begin // Если валидный
- Form1.Memo1.Lines.Add(FProxy+':'+inttostr(FPPort));
- Form1.label1.Caption:=IntToStr(StrToInt(Form1.label1.Caption)+1);
- Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
- end;
- -1:begin // Не валидный
- Form1.label2.Caption:=IntToStr(StrToInt(Form1.label2.Caption)+1);
- Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment