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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2011, 19:53   #1
Евгений79
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 19
По умолчанию Авторизация synapse проблема с location

заполняю пост данные
Код:
Data:=TStringStream.Create('');
 Data.WriteString('username='+Login);
 Data.WriteString('password='+Password);
 Data.WriteString('submitlogin=Вход');
 HTTPSend.Document.LoadFromStream(Data);
 HTTPSend.HTTPMethod('post','http://www.domain.com/login.php');
В возвращенном ответе есть код редиректа 302 и ссылка для дальнейшего перехода logw.php?USR=&pass=9857e233124a4e02 cd5fbbc56f986
При логине через браузер USR= имеет какое-то слово в виде кракозябликов USR=ЕлыПалы&pass
При логине через же HTTPSend кракозяблики отсекаются

Куда исчезает usr ? Почему оно в виде кракозябликов, видимо надо еще работать с кодировками чтобы перейти по правильной ссылке.

Надо отметить, что логин - слово русскими буквами.

Последний раз редактировалось Евгений79; 26.05.2011 в 19:56.
Евгений79 вне форума Ответить с цитированием
Старый 26.05.2011, 23:43   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Покажите адрес, откуда такой запрос делается.
А то я нашел только http://www.domain.com/account/ , и там совсем другой запрос
Voody вне форума Ответить с цитированием
Старый 27.05.2011, 11:35   #3
Евгений79
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 19
По умолчанию

http://www.mojaderewnja.ru/login.php?start=1

тестовый акк
сервер 1
логин: проверка
пас: qwerty


Еще куки не принимаются почему-то. Из-за этого тоже авторизация не пройдет.
Евгений79 вне форума Ответить с цитированием
Старый 27.05.2011, 22:47   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

После первого post-запроса идет редирект по ссылке вида:
Код:
http://s1.mojaderewnja.ru/logw.php?USR=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0&pass=d8578edf8458ce06fbc5bb76a58c5ca4
Где "%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1% 80%D0%BA%D0%B0" - слово "проверка" (логин). Закодировать можно так:

Код:
uses HTTPApp;

HTTPEncode(UTF8Encode('проверка'))
И md5-хэш пароля.

Если не давать программе делать редирект самой, а формировать его самому, то авторизация происходит без проблем (тестировал на Indy)
Voody вне форума Ответить с цитированием
Старый 28.05.2011, 20:40   #5
Евгений79
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 19
По умолчанию

Большое спасибо!
Залогиниться получилось. Теперь второй этап, надо код страницы по этой ссылке
http://s1.mojaderewnja.ru/stadt/mark...lter=0&guild=0
выполняю запрос HTTPSend.HTTPMethod('get','http://s1.mojaderewnja.ru/stadt/markt.php?page=1&order=&id=&filter= 0&guild=0');
потом HTTPSend.Document загружаю информацию
memo1.LoadFromStream(HTTPSend.Docum ent);
и.. вижу только часть документа, код яваскрипта в начале страницы и все.
а если залогиниться в браузере и открыть страницу рынка, то там значительно больше данных. Сниффер не показывает в чем заковыка, по его наблюдениям тоже страница загружается полностью от одного гет запроса.
Евгений79 вне форума Ответить с цитированием
Старый 28.05.2011, 21:31   #6
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Полный код авторизации под вашим аккаунтом и получение кода нужной страницы:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 idhttp1.HandleRedirects:=false;
  try
  idhttp1.get('http://s1.mojaderewnja.ru/logw.php?USR=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0&pass=d8578edf8458ce06fbc5bb76a58c5ca4');
  except
 end;
  Memo1.Text:=idhttp1.get('http://s1.mojaderewnja.ru/stadt/markt.php?page=1&order=&id=&filter=0&guild=0');
end;
Всё. В Memo1 полный код страницы
Voody вне форума Ответить с цитированием
Старый 29.05.2011, 07:17   #7
Евгений79
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 19
По умолчанию

вот блин если handleRedirects:= false
то программа выдает ошибку
Project Project1.exe raised exception class EIdHTTPProtocolException with message 'HTTP/1.1 302. Found'.Process stopped
и останавливается на строчке
IdHTTP1.Post('http://www.mojaderewnja.ru/login/proxy_login.php',LoginInfo);

если handleRedirects:= true перед post данными то авторизация не происходит.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var data:tstringlist;
begin
 data:=tstringlist.Create;
 data.Add('ref=');
 data.Add('ef_id=');
 data.Add('server=1');
 data.Add('username=проверка');
 data.Add('password=qwerty');
 data.Add('submitlogin=Вход');
 idhttp1.HandleRedirects:=false;
 try
  idhttp1.Post('http://www.mojaderewnja.ru/login/proxy_login.php', data);
 except
 end;
  idhttp1.HandleRedirects:=true;
  idhttp1.get('http://s1.mojaderewnja.ru/logw.php?USR=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0&pass=d8578edf8458ce06fbc5bb76a58c5ca4');

 data.Free;
end;
Евгений79 вне форума Ответить с цитированием
Старый 29.05.2011, 07:51   #8
Евгений79
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 19
По умолчанию

уже и так попробовал

Код:
try
  idhttp1.Post('http://www.mojaderewnja.ru/login/proxy_login.php', data);
 except
  idhttp1.HandleRedirects:=true;
  idhttp1.get('http://s1.mojaderewnja.ru/logw.php?USR=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0&pass=d8578edf8458ce06fbc5bb76a58c5ca4');
 end;
тоже самое, спотыкается на idhttp1.Post
Евгений79 вне форума Ответить с цитированием
Старый 29.05.2011, 08:40   #9
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Вне среды запускайте, скомпилированный Project1.exe.
Или включите игнорирование этой ошибки. В окне ошибки галочка снизу
Voody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript: безопасность location maxipub JavaScript, Ajax 7 22.04.2011 16:49
Excel диаграмма на лист Location funball Microsoft Office Excel 2 24.11.2010 10:25
Location FonFon Общие вопросы C/C++ 1 06.08.2010 16:44
Проблема с Location hoza_syl JavaScript, Ajax 4 23.10.2009 18:14
header, location, referer проблема eurusd PHP 10 23.12.2008 10:05