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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 14:36   #1
Verst
Пользователь
 
Аватар для Verst
 
Регистрация: 22.11.2009
Сообщений: 12
По умолчанию Перехват POST передачу данных

В webbrowser загружается страница, после чего человек заполняет форму входа (Логин и пароль), форма передается на сервер методом post, мне нужно узнать какой логин был отправлен на сервер, и если он не совпадает с тем что указан в программе перекинуть его на главную страницу.

Как я понял все это делается с помощью
Код:
BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
, в url содержится только адрес страницы куда переходит страница, а мне надо узнать параметры, в частности логин.
У тебя нет права судить человека до тех пор, пока ты не сможешь сделать то же, что он, лучше, чем он.
Verst вне форума Ответить с цитированием
Старый 24.11.2009, 14:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

WebBrowser.Document работает также что и в JavaScripte
Вот через это свойство достучись к полям с логином и паролем и получай их.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2009, 14:49   #3
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

если поле логина что-то вида
<input type=text id=user name=username>
то можно в BeforeNavigate2 сделать типа такого:

Код:
var s:string;
....
s:=Webbrowser1.OleObject.Document.GetElementByID('user').value;
//или
//s:=Webbrowser1.OleObject.Document.GetElementByName('username').value;
if s<>'mylogin' then URL:='http://myurl.com'; //меняем урл, который пришел к нам через параметры var URL, Flags, ....
Хотя тут возможен бесконечный цикл, что перед navigate браузер снова захочет выполнить beforenavigate. Надо проверить.

Второй вариант, который я юзал - более геморройный, но действующий: внедриться в код страницы, дописать OnSubmit к форме. Т.е. отпарсить страницу, внедрить в нее javascript, загрузить снова в браузер (юзер этого не заметит), и уже тогда сама форма выполнит яваскрипт с проверкой юзернейма и заменой Action=... на нужный урл.

Последний раз редактировалось mosq; 24.11.2009 в 15:21. Причина: не углядел, что в параметрах урл передается, его, наверное, корректней менять, нежели делать еще один Navigate..
mosq вне форума Ответить с цитированием
Старый 24.11.2009, 15:24   #4
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

можно перебрать все поля ввода текста, сейчас приведу примерный код

вот конкретная тема, из неё можно много чего почерпнуть
http://www.programmersforum.ru/showt...686#post201686

Код:
procedure gettext;
var
  f, i: integer;
begin
  for f := 0 to webbrowser1.OleObject.Document.forms.Length - 1 do
  begin
    for i := 0 to webbrowser1.OleObject.Document.forms.Item(f).elements.Length - 1 do
      if webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).type = 'INPUT' then
        showmessage(webbrowser1.OleObject.Document.forms.Item(f).elements.item(i).value);
  end;
end;
код не проверял, но должен работать. Вместо type можно подставить много чего..
[Ferox]

Последний раз редактировалось postal2; 24.11.2009 в 15:30.
postal2 вне форума Ответить с цитированием
Старый 24.11.2009, 15:34   #5
Verst
Пользователь
 
Аватар для Verst
 
Регистрация: 22.11.2009
Сообщений: 12
По умолчанию

mosq, postal2
Спасибо большое все получилось
У тебя нет права судить человека до тех пор, пока ты не сможешь сделать то же, что он, лучше, чем он.
Verst вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка данных методом post ANDEREY Работа с сетью в Delphi 4 11.08.2011 10:09
Перехват данных с формы brato4karik Win Api 8 20.11.2009 13:38
Проблема с передачей данных методом POST Aiden Работа с сетью в Delphi 0 21.09.2008 21:11
Перехват данных Socol Работа с сетью в Delphi 1 19.02.2007 13:47