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

Форум АНТИЧАТ (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 кода страницы? :)

DeaD_MoroZ 11.12.2009 14:49

Цитата:

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

Memo1.Lines.Text := StrPage;
весь русский текст отображен крякозябрами! Можно это как то исправить?
а как проверить что авторизация прошла успешно кроме как загрузки и анализа html кода страницы? :)

у меня всё нормально отображается... правда я в edit загружал

ZdezBilYa 11.12.2009 16:29

Цитата:

Сообщение от SultanOFF
весь русский текст отображен крякозябрами! Можно это как то исправить?

Варианты:
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

Цитата:

Сообщение от SultanOFF
но все теже глупые крякозябры :(
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

Цитата:

Сообщение от SultanOFF
а как проверить что авторизация прошла успешно кроме как загрузки и анализа html кода страницы? :)

По заголовку. Если куки пришли, то авторизация прошла.

SultanOFF 12.12.2009 06:57

оки спасибо :)

НTL 12.12.2009 14:39

ТС, я выкладывал авторизацию на сокетах, в соседней теме

Вот оно http://forum.antichat.ru/showthread.php?t=153807

.ATK 12.12.2009 15:05

Есть переменные там, константы... а как мне спамер написать? (с)

DeaD_MoroZ 13.12.2009 17:51

Цитата:

Сообщение от .ATK
Есть переменные там, константы... а как мне спамер написать? (с)

вот это вопрос :D :D :D в разделе о работе тебе его написать :D :D :D

LimeSoft 14.12.2009 00:28

_http://programmersforum.ru/showthread.php?t=38803


Тут описано как авторизироватся. Главное indy поновее ... также кукисменеджером не плохо бы пользоватся ...


Время: 23:23