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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2015, 21:12   #21
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

В общем, задачу решил таким вот способом. Может кому-то пригодится. Правда, не уверен, что так и надо, но работает.
Код:
Procedure Delay(mSec:Cardinal);
Var
  TargetTime:Cardinal;
Begin
      TargetTime:=GetTickCount+mSec;
      While TargetTime>GetTickCount Do
        begin
            Application.ProcessMessages;
            Sleep(1);
            If Application.Terminated then Exit;
        end;
End;


procedure TForm2.Button1Click(Sender: TObject);
var i,k:integer;
     html_tag: Variant;
begin
list:=0;
while list<>Memo1.Lines.Count do
begin
status:='';
try
    Form2.DeleteWebBrowserCache;
    Form2.CopyLP;
     Form2.Webbrowser1.Navigate('http://****.ру/');
      while Form2.WebBrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;

      if (Form2.WebBrowser1.OleObject.Document.all.tags('button').item(5).type='button') then Form2.WebBrowser1.OleObject.Document.all.tags('button').item(5).click;
      html_tag:=Form2.WebBrowser1.OleObject.Document.Forms.Item(4).Elements;
      If (html_tag.item(0).name='login') Then html_tag.item(0).value:=login;
      If (html_tag.item(1).name='passwd') Then html_tag.item(1).value:=pass;
      if (Form2.WebBrowser1.OleObject.Document.all.tags('button').item(10).type='submit') then Form2.WebBrowser1.OleObject.Document.all.tags('button').item(10).click;

     while Form2.WebBrowser1.ReadyState <> 3 do Application.ProcessMessages;

finally
Delay(6000);
\\тут код парсера
Memo1.Lines.Strings[list]:=status+' | '+Memo1.Lines.Strings[list];
list:=list+1;
if list=Memo1.Lines.Count then begin Form2.DeleteWebBrowserCache; Webbrowser1.Refresh;  end;

end;
end;
_ZixeL_ вне форума Ответить с цитированием
Старый 17.03.2015, 22:25   #22
_ZixeL_
Форумчанин
 
Регистрация: 04.11.2012
Сообщений: 151
По умолчанию

Только теперь новая проблема. Цикл прерывается, если два раза подряд логин и пароль неверные. Как исправить?
Continue не помогает.
_ZixeL_ вне форума Ответить с цитированием
Старый 20.03.2015, 22:39   #23
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

Цитата:
Только теперь новая проблема. Цикл прерывается, если два раза подряд логин и пароль неверные.
Капча наверно появляется и все остальные твои запросы бессмысленны?
Если да то это защита сервера от подбора.

Меняй юзер-агент, чисти куки после каждого запроса и тд.
Тебя просто серверные скрипты "раскололи".
NIKOLAYY2 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить цикл (for) чтобы цикл работал пока RegExp.Match не будет пустым? FleXik Общие вопросы Delphi 11 05.03.2014 14:49
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34