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;

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

Поделись с друзьями:

Опубликовано 25.10.2011 в 22:14 · Автор komivlad · Ссылка
Рубрики: Delphi, Programming · Теги: , , ,

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

Подписаться на комментарии по RSS

  1. Написал(-а) Stertor
    16.08.2014 в 13:28
    Ответить · Ссылка

    Капча у Вас возбуждающая)

    Хороший сайт, все нравится.

  2. Написал(-а) великий инквизитор
    08.08.2012 в 14:41
    Ответить · Ссылка

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

  3. Написал(-а) komivlad
    08.08.2012 в 14:38
    Ответить · Ссылка

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

  4. Написал(-а) komivlad
    08.08.2012 в 14:37
    Ответить · Ссылка

    Ну начем с того, что пост еще с того года, и вполне возможно изменили принцип авторизации, хотя тотже код успешно юзаю, но только в пхп.

    КТО МЕШАЕТ САМОМУ НАПИСАТЬ НЕ ПАРАШУ И ПОДЕЛИТЬСЯ С ЛЮДЬМИ?

    Тем более старт я дал, стоит только немного допилить тот код, что есть в статье.

  5. Написал(-а) Вася
    08.08.2012 в 11:00
    Ответить · Ссылка

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

  6. Написал(-а) komivlad
    09.11.2011 в 18:48
    Ответить · Ссылка

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

  7. Написал(-а) komivlad
    09.11.2011 в 17:26
    Ответить · Ссылка

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

  8. Написал(-а) DragonSET
    09.11.2011 в 17:13
    Ответить · Ссылка

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

Подписаться на комментарии по RSS

Написать комментарий