15.10.09 16:44Как авторизоваться «ВКонтакте».
Для авторизации «Вконтакте» необходимо отправить POST запрос с логином, паролем и двумя служебными параметрами expire и vk скрипту http://login.vk.com/?act=login, после этого из ответа выдернуть параметр value и отправить POST запрос с этим параметром скрипту http://vkontakte.ru/login.php?op=slogin&redirect=1 и получить cookie.
Реализация на php с использованием libcurl выглядит примерно так:
$email="name@domain";
$passwd="password";
$ch=curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,"http://login.vk.com/?act=login");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "email=".$email."&pass=".$passwd."&expire=&vk=");
$buf=curl_exec($ch);
curl_close($ch);
if (strpos($buf,"value")==FALSE)
{
echo($email." is not a valid account. Maybe banned or incorrect password");
continue;
}
preg_match('/value=\'(\w+)\'/',$buf,$s);
$s=$s[1];
$ch=curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$host."http://vkontakte.ru/login.php?op=slogin&redirect=1");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "s=".$s);
$buf=curl_exec($ch);
curl_close($ch);
Обработки капчи тут нет, потому что при обращении к скрипту http://login.vk.com/?act=login она не появляется. Появляется она при обращении к http://vkontakte.ru/login.php, но к данному скрипту обращение с недавних пор не требуется.
Комментарии 2 | Теги: php, vkontakte.ru, Программирование, Социальные сети