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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 14:42   #1
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию WebBrowser, как узнать POST запрос и передать его?

вот форма с сайта
PHP код:
<div class="inner">
     <
form action="?q=user&destination=node"  accept-charset="UTF-8" method="post" id="user-login-form">
<
div><div class="form-item" id="edit-name-wrapper">
<
input type="text" maxlength="60" name="name" id="edit-name" size="15" value="" class="form-text required" />
</
div>
<
div class="form-item" id="edit-pass-wrapper">
<
input type="password" name="pass" id="edit-pass"  maxlength="60"  size="15"  class="form-text required" />
</
div>
<
div id="edit-submit-wrapper" class="form-sbmt">
   <
input type="submit" name="op" id="edit-submit" value="ВОЙТИ"  class="form-submit" /><ul class='userboxl'><li><a href="/user/register">Регистрация</a></li><li><a href="/user/password">Забыли пароль?</a></li></ul></div><div class="item-list">
</
div><input type="hidden" name="form_build_id" id="form-21245ee60c7f65b9082c0f0d2a04fdeb" value="form-21245ee60c7f65b9082c0f0d2a04fdeb"  />
<
input type="hidden" name="form_id" id="edit-form-id" value="user_login"  />
</
div></form
так отправляю POST запрос
Код:
var
   postdata : TstringList;
   str : string;
begin
   sMemo1.Clear;
   idhttp1.HandleRedirects := True;
   idhttp1.Host := 'http://bla-bla-bla.ru/';
 
   try
   postdata := TStringList.Create;
   postdata.Clear;
   postdata.Add('name=' + sEdit_Name.Text);
   postdata.Add('pass=' + sEdit_Pass.Text);
   postdata.Add('op=ВОЙТИ');
   postdata.Add('form_id=user_login');
   str := idhttp1.Post(idhttp1.Host + '?q=user&destination=node', postdata);
   sMemo1.Lines.Add(str);
   postdata.Free;
   except
   on e:Exception do PostData.Free;
   end;
 
end;
Вываливает ошибку 403... если
Код:
str := idhttp1.Post(idhttp1.Host + '?q=user&destination=node', postdata);
изменить на
Код:
str := idhttp1.Post(idhttp1.Host, postdata);
авторизация не происходит

Я так понимаю что либо адрес неправильный либо что-то нужно ловить в исключениях, но понятия не имею что и как, помогите
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 08.05.2013, 14:51   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

form_build_id игде?
eval вне форума Ответить с цитированием
Старый 08.05.2013, 14:56   #3
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
form_build_id игде?
Код:
...
    postdata.Add('name=' + sEdit_Name.Text);
    postdata.Add('pass=' + sEdit_Pass.Text);
    postdata.Add('op=ВОЙТИ');
    postdata.Add('form_build_id=form-21245ee60c7f65b9082c0f0d2a04fdeb');
    postdata.Add('form_id=user_login');
    str := idhttp1.Post(idhttp1.Host + '?q=user&amp;destination=node', postdata);
...
не помогло
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 08.05.2013, 17:09   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Берете любой сниффер (например, Charles) и смотрите, что отправляется при нажатии. Скорее всего, слово "Войти" должно быть в utf8 кодировке, а form_build_id задается динамически (т.е. сначала нужно запросить страницу, извлечь из нее значение, а потом авторизоваться).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.05.2013, 13:25   #5
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Берете любой сниффер (например, Charles) и смотрите, что отправляется при нажатии. Скорее всего, слово "Войти" должно быть в utf8 кодировке, а form_build_id задается динамически (т.е. сначала нужно запросить страницу, извлечь из нее значение, а потом авторизоваться).
Выловил сниффером что 'form_build_id' каждый раз передается разный, это может влиять на авторизацию, если да то как его выловить? Послать простой GET запрос и распарсить результат? ели так тогда вопрос в том не поменяется ли этот 'form_build_id' когда я отошлю другой POST запрос на авторизацию после того как распарсю и получу значению 'form_build_id' после первого запроса?

1. послал GET запрос через idhttp и выловил 'form_build_id'
2. подставил этот ИД и отправил POST запрос - результат тот же, авторизация не прошла

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

Может быть еще чтото в куки пишется, я уже не знаю в какую сторону смотреть...
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!

Последний раз редактировалось Stilet; 14.05.2013 в 16:32.
spirit-ua вне форума Ответить с цитированием
Старый 25.05.2013, 13:49   #6
niva622
Форумчанин
 
Регистрация: 31.12.2006
Сообщений: 114
По умолчанию

idhttp1 поменяй свойство HandleRedirects на True
niva622 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TWebBrowser передать post запрос fate Работа с сетью в Delphi 3 16.01.2011 21:49
узнать запрос POST целиком Bendebej PHP 3 05.02.2010 16:25
Как передать POST data через запрос в веб-приложение Anticrim Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 3 03.10.2007 18:19