Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Proxy в потоках


Автор: Rxd 11.10.2013, 11:16
И снова привет. Нужно отправить сообщения на сайт, у которого таймаут на отправку сообщений стоит 5 секунд. Но это слишком долго, поэтому я решил пойти через прокси, но и тут та же фигня - даже с прокси можно отправить всего 1 сообщение в 5 секунд. Как можно решить эту проблему? Вот код потока:
Код

procedure TParseThread.Execute;
var post,ast,dest:TStringList;
k:Integer;
temp,t,f,L:string;
begin

   IHttp:=TIdHttp.create;
   Icook:=TIdCookieManager.Create;

   ICook.CookieCollection.AddCookies(form1.idhttp1.cookiemanager.CookieCollection);
   IHttp.CookieManager:=ICook;

   IHttp.ProxyParams.ProxyServer:=ProxyAdr;
   IHttp.ProxyParams.ProxyPort:=StrToInt(ProxyPort);

   LoginList:=TStringList.Create;
   ast:=TStringList.Create;
   dest:=TStringList.Create;
 
  // Получаем код страницы с логинами

   while str2<str do
     begin
       Try
         tt:=IHttp.Get(_LINK+inttostr(str2)+'&view=epx&token='+token+'&pid='+pid);
       Except
         If str-str2<11 then str2:=str-str-str2 else str2:=str2-11;
       End;

    // Парсим логины

       while Pos('"Username":"',tt)>0 do
         Begin
           Delete(tt,1,pos('"Username":"',tt)+length('"Username":"')-1);
           m:=Copy(tt,1,pos('","Points"',tt)-1);
           LoginList.Add(m);
           Inc(IntS);
         End;

   // Собственно отправляем сообщения

         for k := 0 to LoginList.Count-1 do
           Begin
             temp:=CheckTextOfUnicode('"'+Loginlist[k]+'"');
             post:=TStringList.Create;
             Post.Add('messageWrite_Subject=Privet');
             Post.Add('guild=0');
             Post.Add('apply=0');
             Post.Add('messageReceiverRadio=username');
             Post.Add('messageInputUsername='+temp);
             Post.Add('messageWrite_Content=Kak dela');
             t:=IHttp.Post(_SMS+token+'&pid='+pid,post);
             L:=temp+'|'+inttostr(k)+'|'+t;
             Form1.Memo1.Lines.Add(L);
           end;
         End;
   ...
end;


Автор: Mifody 14.10.2013, 08:24
а прокси действительно рабочие?
попробуй тот же 2ip в многопотоке опросить и посмотреть что отвечает.
да, и кстати, есть, так сказать, "слабо" анонимные (не помню какого они так "по умному" уровня), когда прокся "палит" и заход с прокси, и реальный IP, и прочая.
И еще, есть прокси, которые совсем не анонимные, так называемые "прозрачные", так они в принципе все показывают smile

Так что в первую очередь, я бы посмотрел качество проксей. А по коду, с индейцами не работал - но очень похоже на правильно написанное

Автор: Illusion Dolphin 14.10.2013, 10:04
А тут не важно работает прокси или нет. Прокси - это в любом случае переадресация на ОДИН другой адрес. Показывает он ваш реальный айпи или нет - какя разница если в итоге это всё равно 1 внешний адрес? Сайт не пропускает чаще 1 раза в 5 секунд фильтруя по айпи а в случае с прокси будет тоже один айпи. Как решение - взять много разных прокси и пускать запросы по очереди - это позволит сделать задуманное.

Автор: Akella 14.10.2013, 12:27
и использовать анонимные прокси

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)