Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   как авторизоваться на Мой мир, delphi (https://forum.antichat.xyz/showthread.php?t=162504)

SultanOFF 10.12.2009 21:28

как авторизоваться на Мой мир, delphi
 
Здравствуйте. Подскажите пожалуйста как авторизоваться на delphi в Моем мире? Надо делать get\post запросы как Я понимаю? но дело в том что из хелпов доступных в гугле Я ничего не понял :( вернее не понял как это применить к Моему миру. Помогите пожалуйста :)

HakaR 10.12.2009 22:54

Смотришь, что отправляет браузер, а потом post'ом отправляешь нужные данные и авторизируешся.

SultanOFF 10.12.2009 23:00

это Я тоже в гугле вычитал, но понять не получилось. Можешь привести пример как это сделать применимо к Моему миру?

HakaR 10.12.2009 23:02

Писать за тебя код я небуду:), а по сабжу посмотри здесь:
http://parsing-and-i.blogspot.com/2009/05/idhttppost.html

SultanOFF 10.12.2009 23:09

спасибо, именно такой хелп Я так долго и безутешно искал! Премного благодарен:)

Kusto 10.12.2009 23:23

Что тут сложного? Лови:

http://my.mail.ru/cgi-bin/auth?&Login=ЛОГИН&Domain=ЗДЕСЬ ДОМЕН ТИПА mail.ru&Password=ПАРОЛЬ

Просто надо было проснифать как и откуда передаються данные

SultanOFF 10.12.2009 23:50

делаю вот так
Код:

procedure TForm1.Button1Click(Sender: TObject);
var
  Http  : TidHttp;
  CM    : TidCookieManager;
  Data  : TStringList;
  StrPage, UserID,  UserName  :  String;
  i : integer;
  begin
  try
    Http := TIdHTTP.Create(Self);
    Data := TStringList.Create;
    CM := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := CM;
    Http.HandleRedirects := true;
    Http.Request.Host:='my.mail.ru';
    Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
    Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
    Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
    Http.Request.Referer:='http://my.mail.ru/';
    Data.Add('domain=mail.ru');
    Data.Add('login=' + Edit1.Text);
    Data.Add('password=' + Edit2.Text);
    Data.Add('page=http://my.mail.ru/');
    StrPage := Http.Post('http://my.mail.ru/cgi-bin/auth', Data);
  finally
    Data.Free;
    CM.Free;
    Http.Free;
  end;
  if Pos('Моя страница',StrPage) <> 0 then
    ShowMessage('ura')
  else
    ShowMessage('o');

  Memo1.Lines.Text := StrPage;

end;

но нихрена не работает! :( Почему?

ZdezBilYa 11.12.2009 00:18

Всё работает. Просто неправильно обрабатывается перенаправление.
После
StrPage := Http.Post('http://my.mail.ru/cgi-bin/auth', Data);
Добавь
StrPage := Http.Get('http://my.mail.ru/');

M_script_ 11.12.2009 05:45

На мэйлру общая авторизация для всех поддоменов.
Лучший вариант - через аякс:
http://games.mail.ru/mru/auth/login?login=МЫЛО&password=ПАРОЛЬ
Если ответ "{"ok":1}", то авторизация прошла успешна
Скорость авторизации будет максимальной ;)

SultanOFF 11.12.2009 06:36

ZdezBilYa да работает, спасибо ;) только смотри есть же в коде строчка
Код:

Memo1.Lines.Text := StrPage;
весь русский текст отображен крякозябрами! Можно это как то исправить?
Цитата:

Если ответ "{"ok":1}", то авторизация прошла успешна
а как проверить что авторизация прошла успешно кроме как загрузки и анализа html кода страницы? :)


Время: 19:59