Вид авторизации ВК [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by TENMAX, 20 Jul 2011.

  1. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    Ку всем, при этом запросе каким то образом акк не логинится, а просто переходит на страницу этого человека.
    Руками проверял, работает, через прогу не пашет.

    Code:
    IdHTTP1.Get('http://vkontakte.ru/login.php?email=логин&pass=пасс');
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Реализуй поддержку переходов по редиректам и работу с Cookies. Скорее всего, должно помочь.
     
  3. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    подключил куки, включил хэндл редирект, все так же
     
  4. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Выложи свой код или перехвати все отправляемые пакеты с помощью сниффера и выложи их здесь, чтобы было более менее понятно.
     
  5. Kuteke

    Kuteke Banned

    Joined:
    26 Jun 2010
    Messages:
    179
    Likes Received:
    26
    Reputations:
    6
    HTML:
    IdHTTP1.Get('http://vkontakte.ru/login.php?email='+Edit1.Text+'&pass='+Edit2.Text);
    :D
     
  6. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    вот кусочек кода, выдраный из чужой проги, подшамань (там кажись какие-то лишние переменные) и все ок будет
    Code:
    function Pars(T_, ForS, _T: string; CaseSensitive:Boolean): string;
    var
      a, b: integer;
    begin
      Result := '';
      if (ForS = '') then
        Exit;
        if T_='' then a:=1
        else
        if CaseSensitive then a := Pos(T_, ForS)
        else a := Pos(UpperCase(T_), UpperCase(ForS));
        if a = 0 then
          Exit
        else
          a := a + Length(T_);
      ForS := Copy(ForS, a, Length(ForS) - a + 1);
      if _T='' then b:=Length(forS)+1
      else
       if CaseSensitive then b := Pos(_T, ForS)
        else b := Pos(UpperCase(_T), UpperCase(ForS));
      if b > 0 then
        Result := Copy(ForS, 1, b - 1);
    end;
    
    function auth(mail, pass: string): string;         {Функция авторизации}
    var
      l, nach, kon, res, c: string;
      h:tidhttp;
    begin
      h:=tidhttp.Create();
      h.HandleRedirects:=false;
      l := 'http://login.vk.com/?act=login&email=' + mail + '&pass=' + pass +
        '&expire=&vk=';
      try
        res := h.Get(l);
      except
        if pos('hash',h.Response.Location)>0 then
        begin
          try
          res:=h.Get(h.Response.Location);
          except
          auth := pars('remixsid=', h.Response.RawHeaders.GetText,'; expires',false);
          end;
        end
        else
          auth:='0';
      end;
    end;
     
  7. enigma

    enigma Member

    Joined:
    10 Jul 2011
    Messages:
    80
    Likes Received:
    15
    Reputations:
    7
    А этот параметр ты не парсишь?
    HTML:
     <input type="hidden" name="ip_h" value="8a9ge3c5d5d30e575b" />
    Вроде и без него можно авторизоваться, но думаю, это временно.

    Я так слал (https)
    Выдрать и потом перейти по этому
    В ответе будут куки. Ну я так авторизовывался.
     
    #7 enigma, 20 Jul 2011
    Last edited: 20 Jul 2011
    1 person likes this.
  8. TENMAX

    TENMAX Member

    Joined:
    20 Nov 2009
    Messages:
    0
    Likes Received:
    35
    Reputations:
    5
    кэп,проблема как бы была в другом.

    спс, так и сделал уже=)