Здравствуйте. Подскажите пожалуйста как авторизоваться на delphi в Моем мире? Надо делать get\post запросы как Я понимаю? но дело в том что из хелпов доступных в гугле Я ничего не понял вернее не понял как это применить к Моему миру. Помогите пожалуйста
это Я тоже в гугле вычитал, но понять не получилось. Можешь привести пример как это сделать применимо к Моему миру?
Писать за тебя код я небуду, а по сабжу посмотри здесь: http://parsing-and-i.blogspot.com/2009/05/idhttppost.html
Что тут сложного? Лови: http://my.mail.ru/cgi-bin/auth?&Login=ЛОГИН&Domain=ЗДЕСЬ ДОМЕН ТИПА mail.ru&Password=ПАРОЛЬ Просто надо было проснифать как и откуда передаються данные
делаю вот так Code: 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; но нихрена не работает! Почему?
Всё работает. Просто неправильно обрабатывается перенаправление. После StrPage := Http.Post('http://my.mail.ru/cgi-bin/auth', Data); Добавь StrPage := Http.Get('http://my.mail.ru/');
На мэйлру общая авторизация для всех поддоменов. Лучший вариант - через аякс: http://games.mail.ru/mru/auth/login?login=МЫЛО&password=ПАРОЛЬ Если ответ "{"ok":1}", то авторизация прошла успешна Скорость авторизации будет максимальной
ZdezBilYa да работает, спасибо только смотри есть же в коде строчка Code: Memo1.Lines.Text := StrPage; весь русский текст отображен крякозябрами! Можно это как то исправить? а как проверить что авторизация прошла успешно кроме как загрузки и анализа html кода страницы?
с авторизацией наконец разобрался, но с крякозябрами нет! нашел функцию: Code: function RussianToUnicode(S: String): String; var Wrd:Word; pW,pR:PWord; len:Integer; begin pW:=@S[1]; len:=Length(S); SetLength(Result,len); pR:=@Result[1]; while Len<>0 do begin Wrd:=pW^; case Wrd of $C0..$DF,$E0..$FF:pR^:=Wrd+50; else pR^:=Wrd; end; inc(pW); inc(pR); dec(Len); end; end; и применяю вот так Code: RussianToUnicode(StrPage ); но все теже глупые крякозябры Utf8Decode тоже не сумел исправить положение, delphi 2010...менять пока нет возможности, а с TMemoryStream Я не умею. Как еще можно преоброзовать в норм кодировку?
покажите "крякозябры" Остается только TMemoryStream: Code: S:=TMemoryStream.Create; Http.Post('...', S); S.position:=0; Memo1.Lines.LoadFromStream(S); S.Free;
крякозябры: Code: <meta name="description" content="Ìîé Ìèð - Âàøè îäíîêëàññíèêè, îäíîêóðñíèêè, è äðóçüÿ ðÿäîì ñ Âàìè. Óäîáíûé ïîèñê áûâøèõ âûïóñêíèêîâ, ñòàðûõ äðóçåé, íîâûõ çíàêîìûõ." /> <meta name="keywords" content="çíàêîìñòâà, ñàéò çíàêîìñòâ, äðóçüÿ, äðóã, òîâàðèù, ïîèñê ëþäåé, íàéòè, îäíîêëàññíèê, îäíîêëàññíèöà, îäíîêëàññíèêè, îäíîêëàñíèêè, îäíîêóðñíèê, ñîêóðñíèê, âûïóñêíèê, êîëëåãè, øêîëà, èíñòèòóò, óíèâåðñèòåò, ïòó, òåõíèêóì, ó÷èëèùå, ãèìíàçèÿ" /> <script type="text/javascript"> чуть позже попробую с помощью TMemoryStream сделать, потом отпишусь)
ТС, я выкладывал авторизацию на сокетах, в соседней теме Вот оно http://forum.antichat.ru/showthread.php?t=153807