Delphi авторизация вКонтакте

В общем задумался я на досуге, что, было бы неплохо научиться постить с помощью делфей в одну из известнейших социальных сетей вКонтакте, задумался, да и решил попробовать свои силы ))) Самое интересное, что такой простой авторизации на мой взгляд еще не было, но не будем о лирике…
Кидаем на форму два эдита, и кнопку, которой дадим громкое название Login. Получим уродца как на скрине:

Далее в uses дописываем IdHTTP
Теперь в обработчике событий нажатия кнопки Login пишем следующее:

procedure TForm1.btnLoginClick(Sender: TObject);
var http: TIdHTTP;
    Data: TStringList;
    Coocies: string;
begin
  HTTP:= TIdHTTP.Create(Self);
  HTTP.HandleRedirects:= True;
  HTTP.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1';
  try
    HTTP.Get('http://login.vk.com/?act=login&q=1&al_frame=1&from_host=vkontakte.ru&email='+Edit1.Text+'&pass='+Edit2.Text);
  except
  end;
  Cookies:= SetCookies(HTTP.Response.RawHeaders.Text);
  if Pos('remix', Cookies)<>0 then ShowMessage('Авторизовались');
  HTTP.Free;
end;

SetCookies — самописная функция выгребающая кукисы, т.к. кукиманагеру инди я не доверяю, в одном проекте уж больно он мне подосрал))))

function SetCookies(Raw: string): string;
var PosCook: Integer;
    Cook: string;
begin
  Cook:= '';
  Cook:= 'Cookie: ';
  PosCook:= Pos('Set-Cookie:', Raw);
  while PosCook<>0 do
    begin
      Delete(Raw, 1, PosCook-1);
      Cook:= Cook + Copy(Raw, 12, Pos(';', Raw)-11);
      Delete(Raw, 1, Pos(';', Raw));
      PosCook:= Pos('Set-Cookie:', Raw);
    end;
  Result:= Cook+'remixlang=0;';
end;

А теперь внимание, как вы видите, у меня не стоит проверка на появление капчи при логине, скажем так, это есть домашнее задание!)))

Похожие посты

9 комментариев

  • Stertor
    4 года назад

    Капча у Вас возбуждающая )
    Хороший сайт, все нравится.

    • username
      4 года назад

      Спасибо, стараемся 🙂

  • великий инквизитор
    6 лет назад

    На костер поливающих парашей!

  • username
    6 лет назад

    А то юзать чужой код каждый может, а пораскинуть остатками мозгов, видимо уже нет времени!))))))

  • username
    6 лет назад

    Ну начем с того, что пост еще с того года, и вполне возможно изменили принцип авторизации, хотя тотже код успешно юзаю, но только в пхп.
    КТО МЕШАЕТ САМОМУ НАПИСАТЬ НЕ ПАРАШУ И ПОДЕЛИТЬСЯ С ЛЮДЬМИ?
    Тем более старт я дал, стоит только немного допилить тот код, что есть в статье.

  • Вася
    6 лет назад

    Параша все это, какие бы данные в полях не вводил на все будет писать ‘Авторизовались’, даже если пасс или мыло неверные

  • username
    7 лет назад

    у меня тут даже функция описана вытаскивающая куки, все что остается это присвоить их где надо и шариться по сайту

  • username
    7 лет назад

    ну обычно после авторизации необходимо вытягивать кукисы, и с ними шариться по сайту на котором авторизовались, иначе без кук вы просто неавторизованный пользователь и дальше страницы авторизации никуда не проползете ))))))

  • DragonSET
    7 лет назад

    Уважаемый Администратор, попробовал Ваш код — конечно, выдает «Авторизовались», но.. При обычном GET’е http://vkontakte.ru — выдает, что, мол, авторизовывайтесь, молодой человек…

Комментировать

Комментировать email не будет опубликован