Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с логином на сайт, собсно топик 
:(
    Опции темы
papaP
Дата 10.7.2006, 17:55 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Мастера Delphi!Взываю к вашей помощи.
Вобщем к делу:
Код

   function TForm1.GetUrlContent(
      url: string;
            paramString : String;
            useGet : boolean;
            ): string;
var
   Params : TStringStream;
begin
  Params := TStringStream.Create('');
  IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.40607)';
  if useGet then
  begin
    Params.WriteString(paramString);
    //IdHTTP1.Options('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.40607)');
    IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
    IdHTTP1.Request.Method := hmPost;
    IdHTTP1.Post(url,Params);
   end;
  IdHTTP1.CookieManager.CookieCollection.Add;
    result := IdHTTP1.Get(url);
  Params.Free;

        end;
procedure TForm1.Button1Click(Sender: TObject);
const
  Target = 'x(.*)';
Var
  LoginParams,viewState : String;
  r : TRegExpr;
  cook : TCookieCollection;
  f: TextFile;
  response: TStringList;
  i,j : Integer;
  p : TStringList;
begin
  AssignFile(f,'c:\get.html');
  Rewrite(f);
  response := TStringList.Create;
  r := TRegExpr.Create;
  r.Expression := Target;
  IdHTTP1.CookieManager := TIdCookieManager.Create(IdHTTP1);
  IdHTTP1.CookieManager.CookieCollection.Create(IdHTTP1);
  viewState :='dDwyMTQxMjc4NDIxO3Q8O2w8aTwyPjs%2bO2w8dDw7bDxpPDA%'; //ExtractViewState(TIdURI.URLDecode(GetUrlContent('http://www.gotdotnet.ru/','',false,cook)));
  viewState := viewState + '2bOz47bDx0PDtsPGk8NT47aTw2Pjs%2bO2w8d';
  viewState := viewState + 'DxwPHA8bDxWaXNpYmxlOz47bDxvPGY%2bOz4%';
  viewState := viewState + '2bOz47Oz47dDw7bDxpPDA%2bOz47bDx0PDtsP';
  viewState := viewState + 'Gk8MD47PjtsPHQ8O2w8aTwwPjs%2bO2w8dDxw';
  viewState := viewState + 'PHA8bDxUb3RhbFJlY29yZHM7PjtsPGk8MTU%2';
  viewState := viewState + 'bOz4%2bOz47Oz47Pj47Pj47Pj47Pj47Pj47Pj';
  viewState := viewState + '47bDxfY3RsMDpfY3RsMDpfY3RsMDpjaGtQZXJzaXN0Oz4%2bNTsm5BIbhJvxe8DdM%2bvt6Kl0dvg%3d';
  if r.Exec(TIdURI.URLEncode('http://www.gotdotnet.ru/default.aspxpapaP')) then
     LoginParams := '_ctl0:_ctl0:_ctl0:txtUsername='+ r.Match[1]+'&';
  if r.Exec(TIdURI.URLEncode('http://www.gotdotnet.ru/default.aspxXXXXXX')) then
     LoginParams := LoginParams + '_ctl0:_ctl0:_ctl0:txtPassword='+ r.Match[1]+'&';
     LoginParams := LoginParams +'__VIEWSTATE='+ viewState +'&';
  if r.Exec(TIdURI.URLEncode('http://www.gotdotnet.ru/default.aspxВход')) then
     LoginParams := LoginParams + '_ctl0:_ctl0:_ctl0:btnLogin='+ r.Match[1];
  response.Text := GetUrlContent('http://www.gotdotnet.ru/',LoginParams,true,cook);
  response.SaveToFile('c:\get.htm');
  CloseFile(f);
  r.Free;
end;

 Вылетаю с ошибкой http 1.1 302 found
Аналогичный код работает под .Net
В чем загвоздка не могу разобрать.
Наедеюсь на помошь
заранее спасибо
  
PM MAIL   Вверх
_hunter
Дата 10.7.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



HandleRedirrects поставь 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
papaP
Дата 10.7.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Спасибо! ошибка перестала вылетать, однако и логин не происходит. Параметры верные, т.к. в .Net все работает на Ура, че то опять видно упускаю...

Добавлено @ 20:26 
да и еще если добавить  IdHTTP1.Post(url,Params, aStream), то aStream - пустой. ??? 
PM MAIL   Вверх
papaP
Дата 10.7.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Получается следующая картина:
-- когда я убираю. строку  LoginParams := LoginParams + '_ctl0:_ctl0:_ctl0:btnLogin='+ r.Match[1]; - т.е. программное нажатие на кнопку "вход", то на выходе получаю страничку с заполненным полем логин пароль => вьюстейт работает правильно.
Во т, вопрос остается такой, в .Net передаю следующие параметры для нажатия кнопки - name_кнопки=value_кнопки , может при использовании инди надо по другому передавать?(хотя врядли), а может проблемы с кодировкой?? Перепробовал URLEncode и брал строку, получаемую после перекодировки, юзая .Net все рано astream - пустой!Хелп, Плиз
 
PM MAIL   Вверх
papaP
Дата 10.7.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Да и еще, когда ввожу НЕВЕРНЫЙ пароль, то возвращает страницу, с красным(типа неправильным) полем пароль!! То есть когда пароль правильный - возвращает куки? и их надо подставить  и сделать ГЕТ? Делаю, ничего не выходит... Надеюсь на ВАшу помощь, хотя и сам неплошаю)), дуплю дальше... 
PM MAIL   Вверх
Snowy
Дата 11.7.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ух. Слишком много мест, где может глючить.
Вообще странно, что вообще работает.
Но, если брать часть с запросом, то раз уж ты заполняешь реквест, то и делай DoRequest, а не Post.


Цитата(papaP @  10.7.2006,  17:55 Найти цитируемый пост)
Params := TStringStream.Create('');

Цитата(papaP @  10.7.2006,  17:55 Найти цитируемый пост)
Params.WriteString(paramString);

Params := TStringStream.Create(paramString);

Цитата(papaP @  10.7.2006,  17:55 Найти цитируемый пост)
  AssignFile(f,'c:\get.html');
вообще не нужно. Так ты ничего не сохранишь. 
Цитата(papaP @  10.7.2006,  17:55 Найти цитируемый пост)
response.SaveToFile('c:\get.htm');
сохраняется без всяких доисторических AssingFile и т.п.
 
PM MAIL   Вверх
_hunter
Дата 11.7.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



ну и стандартный совет: возьми любой сниффер и сравни что отправляет твоя программа и что отправляет браузер 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
papaP
Дата 11.7.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



DoRequest попробобовал и них... ((
Вообще как бы пост и не должен возвращать нужную страницу, получает гет. т.е. должно работать так:
-постом отправляем запрос,
-получаем куки
-и с использованием оных сделать гет т получить нужную страницу...
Вообще у меня закрадываются сомненье насчет этого ИНДИ..., способ неважен, главное на Delphi.
Простто, кто-нибудь делал программный логин, использую ИНДИ?

Добавлено @ 18:27 
Вот то есть как получилдось у меня - при успешном входе  получаю пустую страницу, а в хедере переадресацию на другую страницу... А как это обрабатывать в Indy - не знаю...(( 
PM MAIL   Вверх
papaP
Дата 12.7.2006, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Итак, когда HandleRedirrects=true, не идет переадресовка, ставлю в фалс, вылетаю с ошибкой http 1.1 302 found, короче проблема осталось в онредирект.... 
PM MAIL   Вверх
Snowy
Дата 12.7.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Вот пример авторизации: http://forum.vingrad.ru/index.php?showtopic=81091 
PM MAIL   Вверх
mogikan
Дата 12.7.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.6.2006

Репутация: нет
Всего: нет



А как можно прямо попасть на страницу "Входяшие" из Делфи приложения ?  На пример в Маил.Ру Агенте и ГууглТалке есть такой возможность.
Если можно с примерами smile 
PM MAIL   Вверх
papaP
Дата 12.7.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Если ты имеешь ввиду мыло, то проблем никаких - юзай  TIdPOP.
Вот небольшой пример:
Код

          IdPOP.Port := 110
          IdPOP.Username := 'test';
          IdPOP.Host :=  'pop.mail.ru';
          IdPOP.Password := 'test';
      try
        IdPOP.Connect;
      except
      end; 
 
PM MAIL   Вверх
papaP
Дата 12.7.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Snowy, спасибо! на vingrad логинюсь без проблем, а вот на gotdotnet, где юзается  вьюстейт не получается... покаместь 
PM MAIL   Вверх
papaP
Дата 12.7.2006, 17:52 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Итак вот код:
Код

var
  str,str2:TStringList;
  ms: TMemoryStream;
  viewState : String;
begin
  str:=TStringList.Create;
  str2:=TStringList.Create;
  ms := TMemoryStream.Create;
  IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.40607)';
  viewState :='dDwyMTQxMjc4NDIxO3Q8O2w8aTwyPjs+O2w8dDw7bDxpPDA+';
  viewState := viewState + 'Oz47bDx0PDtsPGk8NT47aTw2Pjs+O2w8dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+';
  viewState := viewState + 'Oz4+Oz47Oz47dDw7bDxpPDA+Oz47bDx0PDtsPGk8MD47PjtsPHQ8O2w8aTwwPjs+';
  viewState := viewState + 'O2w8dDxwPHA8bDxUb3RhbFJlY29yZHM7PjtsPGk8MTU+Oz4+Oz47Oz47Pj47Pj47P';
  viewState := viewState + 'j47Pj47Pj47Pj47bDxfY3RsMDpfY3RsMDpfY3RsMDpjaGtQZXJzaXN0Oz4+NTsm5BIbhJvxe8DdM+vt6Kl0dvg=';
 // str.Add('referer=');
  str.Add('_ctl0:_ctl0:_ctl0:txtUsername=papaP');
  str.Add('_ctl0:_ctl0:_ctl0:txtPassword=!!!!!!!!');
  str.Add('__VIEWSTATE='+ viewState);
  str.Add('_ctl0:_ctl0:_ctl0:btnLogin=');
  str.Add('CookieDate=1');
  try
//  [URL=http://forum.vingrad.ru/index.php?act=Login&CODE=01]http://forum.vingrad.ru/index.php?act=Login&CODE=01[/URL]
 //   IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
    IdHTTP1.Post('http://www.gotdotnet.ru/default.aspx', str, ms);
    ms.Position := 0;
    str2.LoadFromStream(ms);
    str2.SaveToFile('c:\1.htm');
  finally
    ms.Free; str.Free;
  end;
end;

На выходе получаю пустую страницу ((( - ума уже не приложу что делать
все, что можно повключал, то есть:HandleRedirrects := true, печенюшки добавил
  
PM MAIL   Вверх
papaP
Дата 12.7.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 10.7.2006

Репутация: нет
Всего: нет



Да и еще раз - под дот нет ВСЕ пашет!!!!! Редирект мне как раз в тру ставить и не нужно, тк там идет переадрессация, но ставя его в фалс - болт, получаю 302 эксепшон!!! может через этот инди-ху..ди вообще нельзя логинится на страницах где есть переадрессация?? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1183 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.