В общем задумался я на досуге, что, было бы неплохо научиться постить с помощью делфей в одну из известнейших социальных сетей вКонтакте, задумался, да и решил попробовать свои силы ))) Самое интересное, что такой простой авторизации на мой взгляд еще не было, но не будем о лирике…
Кидаем на форму два эдита, и кнопку, которой дадим громкое название 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 комментариев. Оставить новый
Капча у Вас возбуждающая )
Хороший сайт, все нравится.
Спасибо, стараемся 🙂
На костер поливающих парашей!
А то юзать чужой код каждый может, а пораскинуть остатками мозгов, видимо уже нет времени!))))))
Ну начем с того, что пост еще с того года, и вполне возможно изменили принцип авторизации, хотя тотже код успешно юзаю, но только в пхп.
КТО МЕШАЕТ САМОМУ НАПИСАТЬ НЕ ПАРАШУ И ПОДЕЛИТЬСЯ С ЛЮДЬМИ?
Тем более старт я дал, стоит только немного допилить тот код, что есть в статье.
Параша все это, какие бы данные в полях не вводил на все будет писать ‘Авторизовались’, даже если пасс или мыло неверные
у меня тут даже функция описана вытаскивающая куки, все что остается это присвоить их где надо и шариться по сайту
ну обычно после авторизации необходимо вытягивать кукисы, и с ними шариться по сайту на котором авторизовались, иначе без кук вы просто неавторизованный пользователь и дальше страницы авторизации никуда не проползете ))))))
Уважаемый Администратор, попробовал Ваш код — конечно, выдает «Авторизовались», но.. При обычном GET’е http://vkontakte.ru — выдает, что, мол, авторизовывайтесь, молодой человек…