Просмотр полной версии : как авторизоваться на Мой мир, delphi
SultanOFF
10.12.2009, 21:28
Здравствуйте. Подскажите пожалуйста как авторизоваться на delphi в Моем мире? Надо делать get\post запросы как Я понимаю? но дело в том что из хелпов доступных в гугле Я ничего не понял :( вернее не понял как это применить к Моему миру. Помогите пожалуйста :)
Смотришь, что отправляет браузер, а потом post'ом отправляешь нужные данные и авторизируешся.
SultanOFF
10.12.2009, 23:00
это Я тоже в гугле вычитал, но понять не получилось. Можешь привести пример как это сделать применимо к Моему миру?
Писать за тебя код я небуду:), а по сабжу посмотри здесь:
http://parsing-and-i.blogspot.com/2009/05/idhttppost.html
SultanOFF
10.12.2009, 23:09
спасибо, именно такой хелп Я так долго и безутешно искал! Премного благодарен:)
Что тут сложного? Лови:
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 кода страницы? :)
DeaD_MoroZ
11.12.2009, 14:49
ZdezBilYa да работает, спасибо ;) только смотри есть же в коде строчка Memo1.Lines.Text := StrPage;
весь русский текст отображен крякозябрами! Можно это как то исправить?
а как проверить что авторизация прошла успешно кроме как загрузки и анализа html кода страницы? :)
у меня всё нормально отображается... правда я в edit загружал
ZdezBilYa
11.12.2009, 16:29
весь русский текст отображен крякозябрами! Можно это как то исправить?
Варианты:
1) использовать Delphi 2010
2) использовать TMemoryStream
3) использовать Utf8Decode
SultanOFF
11.12.2009, 17:14
с авторизацией наконец разобрался, но с крякозябрами нет! нашел функцию:
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;
и применяю вот так
RussianToUnicode(StrPage );
но все теже глупые крякозябры :(
Utf8Decode тоже не сумел исправить положение, delphi 2010...менять пока нет возможности, а с TMemoryStream Я не умею. Как еще можно преоброзовать в норм кодировку?
ZdezBilYa
11.12.2009, 18:04
но все теже глупые крякозябры :(
Utf8Decode тоже не сумел исправить положение, delphi 2010...менять пока нет возможности, а с TMemoryStream Я не умею. Как еще можно преоброзовать в норм кодировку?
покажите "крякозябры"
Остается только TMemoryStream:
S:=TMemoryStream.Create;
Http.Post('...', S);
S.position:=0;
Memo1.Lines.LoadFromStream(S);
S.Free;
SultanOFF
11.12.2009, 22:16
крякозябры: <meta name="description" content="Ìîé Ìèð - Âàøè îäíîêëàññíèêè, îäíîêóðñíèêè, è äðóçüÿ ðÿäîì ñ Âàìè. Óäîáíûé ïîèñê áûâøèõ âûïóñêíèêîâ, ñòàðûõ äðóçåé, íîâûõ çíàêîìûõ." />
<meta name="keywords" content="çíàêîìñòâà, ñàéò çíàêîìñòâ, äðóçüÿ, äðóã, òîâàðèù, ïîèñê ëþäåé, íàéòè, îäíîêëàññíèê, îäíîêëàññíèöà, îäíîêëàññíèêè, îäíîêëàñíèêè, îäíîêóðñíèê, ñîêóðñíèê, âûïóñêíèê, êîëëåãè, øêîëà, èíñòèòóò, óíèâåðñèòåò, ïòó, òåõíèêóì, ó÷èëèùå, ãèìíàçèÿ" />
<script type="text/javascript">
чуть позже попробую с помощью TMemoryStream сделать, потом отпишусь)
M_script_
12.12.2009, 00:14
а как проверить что авторизация прошла успешно кроме как загрузки и анализа html кода страницы? :)
По заголовку. Если куки пришли, то авторизация прошла.
SultanOFF
12.12.2009, 06:57
оки спасибо :)
ТС, я выкладывал авторизацию на сокетах, в соседней теме
Вот оно http://forum.antichat.ru/showthread.php?t=153807
Есть переменные там, константы... а как мне спамер написать? (с)
DeaD_MoroZ
13.12.2009, 17:51
Есть переменные там, константы... а как мне спамер написать? (с)
вот это вопрос :D :D :D в разделе о работе тебе его написать :D :D :D
LimeSoft
14.12.2009, 00:28
_http://programmersforum.ru/showthread.php?t=38803
Тут описано как авторизироватся. Главное indy поновее ... также кукисменеджером не плохо бы пользоватся ...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot