
Сегодня я покажу как авторизоваться на сайте Vkontakte.ru с помощью компонента IdHTTP
1. Киньте на форму кнопку и IdHTTP с вкладки Indy Clients. У IdHTTP, handleredirects := True;
2. В обработчик события кнопки добавляем след. код :
procedure TForm1.Button1Click(Sender: TObject);
var
PostData : TStringList;
ResponseData : TStringList;
hash : string;
begin
PostData := TStringList.Create;
ResponseData := TStringList.Create;
PostData.Add('op=a_login_attempt');
ResponseData.Text := IdHTTP1.Post('http://vkontakte.ru/login.php',PostData);
PostData.Clear;
PostData.Add('email=' +[b]ЕМЕЙЛ[/b]);
PostData.Add('pass=' + [b]ПАРОЛЬ[/b]);
PostData.Add('vk=1');
ResponseData.Text := IdHTTP1.Post('http://login.vk.com/?act=login',PostData);
if Pos('''s''',ResponseData.Text)<>0 then
begin
hash := ResponseData.Text;
Delete(hash,1,Pos('value',hash)+6);
Delete(hash,Pos('''',hash),Length(hash));
end
else
begin
{Неверный логин/пасс }
Exit;
end;
PostData.Clear;
PostData.Add('s='+hash);
PostData.Add('op=slogin');
PostData.Add('redirect=1');
PostData.Add('expire=0');
ResponseData.Text := IdHTTP1.Post('http://vkontakte.ru/login.php',PostData);
If Pos('logout',ResponseData.Text) <> 0 then
MessageBox(Handle, 'Авторизовались :)' , 'Ура!', MB_OK+MB_ICONINFORMATION)
else
MessageBox(Handle, 'Не авторизовались :(' , 'Не ура!', MB_OK+MB_IConerror)
end;
var
PostData : TStringList;
ResponseData : TStringList;
hash : string;
begin
PostData := TStringList.Create;
ResponseData := TStringList.Create;
PostData.Add('op=a_login_attempt');
ResponseData.Text := IdHTTP1.Post('http://vkontakte.ru/login.php',PostData);
PostData.Clear;
PostData.Add('email=' +[b]ЕМЕЙЛ[/b]);
PostData.Add('pass=' + [b]ПАРОЛЬ[/b]);
PostData.Add('vk=1');
ResponseData.Text := IdHTTP1.Post('http://login.vk.com/?act=login',PostData);
if Pos('''s''',ResponseData.Text)<>0 then
begin
hash := ResponseData.Text;
Delete(hash,1,Pos('value',hash)+6);
Delete(hash,Pos('''',hash),Length(hash));
end
else
begin
{Неверный логин/пасс }
Exit;
end;
PostData.Clear;
PostData.Add('s='+hash);
PostData.Add('op=slogin');
PostData.Add('redirect=1');
PostData.Add('expire=0');
ResponseData.Text := IdHTTP1.Post('http://vkontakte.ru/login.php',PostData);
If Pos('logout',ResponseData.Text) <> 0 then
MessageBox(Handle, 'Авторизовались :)' , 'Ура!', MB_OK+MB_ICONINFORMATION)
else
MessageBox(Handle, 'Не авторизовались :(' , 'Не ура!', MB_OK+MB_IConerror)
end;
В общем то и все :) Успехов
