Итак. Задумал я авторизоватья в контакте с помощю cur. Вот скрипт:
function vk_autoriz($login,$password){
$user_agent = "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0";
$login=$login;
$password=$password;
$cookie = '';
$ch = curl_init();
// true т.к. мы будем отправлять post запрос:
curl_setopt($ch, CURLOPT_POST, true);
// чтобы сайт думал, что мы - браузер:
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
// ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// по редиректам будем переходить автоматически.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');
//Формирование запроса таким образом, я счел более наглядным
$post = array(
'act' => 'login',
'q' => '',
'al_frame' => '1',
'expire' => '',
'captcha_sid' => '',
'captcha_key' => '',
'from_host' => 'vkontakte.ru',
'email' => $login,
'pass' => $password
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$answer = curl_exec($ch);
/* В $answer нам приходит javascript, который и устанавливает куки
с названием: remixsid Нам нужно cпарсить эти 60 символов,
идентификатора сессии. с помощью них vkontakte поймет,
что мы авторизировались.*/
$sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60);
$cookie = 'remixsid=' . $sid;
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
// укажем страницу, с которой мы получим данные для проверки
curl_setopt($ch, CURLOPT_URL, 'http://vk.com/mail.php');
$answer = curl_exec($ch);
echo $answer;
// echo $cookie;
curl_close($ch);
}
vk_autoriz($login,$password);
В итоге страницу mail своего акк я вижу, но перейти на другую страницу сайта не могу. ПОЧЕМУ? Денвер выдает, типа на компе такого файла нет (например /friends). Как зделать, что б я смог свободно лазить вконтакте?
|