[Delphi] Авторизация через Вконтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by PiNgVin07, 23 Oct 2011.

  1. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    Ку всем, не работает авторизация Вконтакте

    Весь код:
    Code:
     procedure TForm1.sButton1Click(Sender: TObject); //кнопка старт
     var PageProfile:string;
     begin
     IdHTTP1.HandleRedirects:=true;
     try
     PageProfile:=IdHTTP1.Get('http://vkontakte.ru/login.php?email='+sEdit1.Text+'&pass='+sEdit2.Text);
     except
     end;
     if Pos('logout', PageProfile)<>0 then
     sMemo1.Lines.Add('Авторизация удалась')
     else
     sMemo1.Lines.Add('Авторизация не удалась');
     end;
    
     end.
    Что нетак? Очень нужна Ваша помощь
     
  2. fuckyoupig

    fuckyoupig Member

    Joined:
    1 Mar 2011
    Messages:
    0
    Likes Received:
    11
    Reputations:
    2
    Как это проявляется?
     
  3. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Маловато параметров не? Мб авторизация выполняется на https://login.vk.com? А переадресация включена? А юзерагент актуален? Кукисы подключены? А аа аа аа А ГУГЛ поюзать не пробовали ?
     
    3 people like this.
  4. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    гугл юзал и много всего искал,

    IdHTTP1.AllowCookies:=true; //разрешить куки
    IdHTTP1.HandleRedirects:=false; //переадресация

    что за юзерагент?
     
  5. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    http://ru.wikipedia.org/wiki/Useragent
    А про сниффер Вы ничего не слышали?
     
  6. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    слышал, и просматривал запрос, вот что показывает:http://vkontakte.ru/login.php?act=slogin&al_frame=1&hash=06899d0df17b3eb579742be98fa3254c&s=1
     
  7. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Это уже редирект. Запрос с передаваемыми параметрами идет на https://login.vk.com.
    [​IMG]
    Все параметры необходимые для успешной авторизации видны на скрине.
     
  8. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    если не сложно напишите пожалуйста какие именно кроме http://login.vk.com/?act=login, и код на UserAgent
     
  9. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Думаю, рановато Вам пока авторизацию делать :D . Лучше почитайте про http протокол, запросы, заголовки. Все станет намного понятней. Параметры, которые передаются скрипту методом Post отображены слева внизу:
    Code:
    act
    q
    al_frame
    ... и тд.
    
    В правой части приведены значения этих параметров. Вот когда Вы напишите программу таким образом, что сниффер будет показывать практически одинаковый результат при открытии страницы в браузере и при использовании Вашей программы, вот тогда всё заработает ;)
     
  10. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    Поставлю вопрос чуть по другому, есть сайт где стоит Авторизация через Вконтакте и есть реферальная ссылка, нужно когда вводиш реферальную ссылку и нажимаеш войти через Вконтакте, происходила переадресация и рефералы засчитывались..
     
  11. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    Вот код:
    Code:
    var data:tstringlist;
         PageProfile:string;
         error:boolean;
    begin
     IdHTTP1.AllowCookies:=true;
     IdHTTP1.HandleRedirects:=false;
     data:=tstringlist.create;
     data.Add('email=ваш_логин'); // логин для авторизации
     data.Add('pass=пароль');  // пароль для авторизации
     data.Add('expire=');
     data.Add('vk=');
     error:=false;
     try
      PageProfile:=IdHTTP1.Post('http://login.vk.com/?act=login', data);
     except
      error:=true;
     end;
     
     if not(error) then
      begin
       data.Clear;
       data.Add('s='+Copy(PageProfile, Pos('value', PageProfile)+7, 56));
       data.Add('op=slogin');
       data.Add('redirect=1');
       data.Add('expire=0');
       data.Add('to=');
       IdHTTP1.HandleRedirects:=true;
       try
        PageProfile:=IdHTTP1.Post('http://vkontakte.ru/login.php', data);
       except
       end;
       Memo1.Lines.Add('Авторизация удалась');
      end
     else
      Memo1.Lines.Add('Авторизация не удалась');
     
     Data.Free;
    end;
    Когда врубаю, выскакивает ошибочка:
    [​IMG]
     
  12. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Потому, что http://login.vk.com/?act=login это не правильный адрес. Вернее не правильный протокол, нужно использовать https://login.vk.com/?act=login, что влечет за собой подключение SSLIOHandlerSocket, плюс ко всему параметры, которые передаются - некорректны.
     
  13. mironich:

    mironich: New Member

    Joined:
    7 Oct 2011
    Messages:
    25
    Likes Received:
    2
    Reputations:
    0
     
    1 person likes this.
  14. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
     
  15. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
     
  16. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    какие именно параметры некорректны?
     
  17. mironich:

    mironich: New Member

    Joined:
    7 Oct 2011
    Messages:
    25
    Likes Received:
    2
    Reputations:
    0
    Тс редирект раньше вкл...
    На скрине редирект после первого запроса.
    [​IMG]
    У тс исключение из-за редиректа.
    302 код редиректа, за это я инди и не люблю исключение при ответе от сервера не 200 или 302, есть некоторые сайты которые на постой ответ дают не 200 при этом сам документ будет в норм состояни..
    Code:
     IdHTTP1.AllowCookies:=true;
     IdHTTP1.HandleRedirects:=true;
     try
      PageProfile:=IdHTTP1.Post('http://login.vk.com/?act=login', data); //Тут редирект происходит
    
    end;
     
    #17 mironich:, 23 Oct 2011
    Last edited: 23 Oct 2011
  18. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Проснифайте запрос и вписывайте в программу те параметры, которые будут отображены в снифере. Кстати, значение для параметра ip_h нужно предварительно спарсить. Да здесь на форуме эта тема подымалась неоднократно. Воспользуйтесь поиском.
     
  19. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    61
    Likes Received:
    0
    Reputations:
    0
    Это я знаю, врубаю и там и там то ошибка, или наоборот тоже ошибка... как с этим бороться?
     
  20. mironich:

    mironich: New Member

    Joined:
    7 Oct 2011
    Messages:
    25
    Likes Received:
    2
    Reputations:
    0
    Включать один раз в начале, и отписаться о результате.