[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация vk.com
devxypro
Добрый день господа!
Перед мной поставили задачу написать скрипт по удалению а группе всех заблокированных аккаунтов. Оч полезная штука.
Начал смотреть что и куда. Удаление происходило пост запросом, так что думал проблем не будет, про то что застряну на авторизации, вообще представить немог
_______________________________________
Так заходим на страничку vk.com пробуем ввести любое имя пароль и смотрим:

Параметры: application/x-www-form-urlencoded
_origin: http://vk.com
act: login
captcha_key:
captcha_sid:
email: login <- наш логин
expire:
ip_h: 02221c2b54714d864d <-айпи ключик, который легко парсится с странички, с которой посылается запрос
pass: password <- наш пароль
role: al_frame

Полный запрос:
act=login&role=al_frame&expire=&captcha_sid=&captcha_key=&_origin=http%3A%2F%2Fv k.com&ip_h=02221c2b54714d864d&email=login&pass=password

____
Исходя из хтмл кода, ясно, что пост запрос отправляется по адресу: https://login.vk.com/?act=login
______

Так, теперь непосредственно сам код php для авторизации:
Здесь все просто, вначале берем страничку с формой авторизации, чтобы вытянуть не нее куки и айпи ключ ip_h и сразу формируем все поля пост запроса (все это делает функция take)
Потом тупо выполняем запрос( функция login)

    
require 'simple_html_dom.php';
require ('phpQuery/phpQuery.php');
$vk= new Vk;
$vk->agent='Opera/9.62 (Windows NT 6.0; U; ru) Presto/2.1.1';
$x=$vk->take('login@mail.ru','vkpassword');
$cook=$vk->cookiefile;
$vk->login($x,$cook);
echo $vk->loginpage;


class Vk{
var $loginpage;
var $cookiefile;
var $agent;
function login($w,$cook){
$url='https://login.vk.com/?act=login';
$agent = $this->agent;
$ch = curl_init(); //инициализация библиотеки
//указываем адрес страницы

curl_setopt($ch, CURLOPT_URL,$url);
//указываем заголовок User-Agent
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
//т.е. нужно указать адрес страницы на которой находится форма
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_REFERER, 'http//vk.com');
//указываем, что мы отправляем данные методом post
curl_setopt($ch, CURLOPT_POST, 1);
//добавляем строку с post данными
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($w));
//указываем, что полученная страница должна быть сохранена в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//указываем, что cURL должен переходить по редиректам
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//curl_setopt($ch, CURLOPT_HEADER, 1);
//cookies

curl_setopt($ch, CURLOPT_COOKIEFILE, $cook);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cook);

//выполняем запрос
$this->loginpage = curl_exec($ch);

}

function take($email,$pass){
$agent=$this->agent;
$ch = curl_init(); //инициализация библиотеки
//указываем адрес страницы

curl_setopt($ch, CURLOPT_URL,'http://vk.com');
//указываем заголовок User-Agent
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
//т.е. нужно указать адрес страницы на которой находится форма
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
//curl_setopt($ch, CURLOPT_REFERER, $url);
//указываем, что полученная страница должна быть сохранена в переменную

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//указываем, что cURL должен переходить по редиректам
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
//curl_setopt($ch, CURLOPT_PROXY, $this->proxy);
//создаем файл для cookies

$this->cookiefile = tempnam('cook', 'cookie_');
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookiefile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookiefile);

$page=curl_exec($ch);
/////////////php Qurey////////////////Parser
$html = str_get_html($page);
$document=phpQuery::newDocument($html);
//выполняем запрос
$x['act']='login';
$x['role']='al_frame';
$x['expire']='';
$x['captcha_sid']='';
$x['captcha_key']='';
$x['_origin']='http://vk.com';
$x['ip_h']=$document->find('input[name=ip_h]')->attr('value');
$x['email']=$email;
$x['pass']=$pass;
return $x;

}


}


В результате получаю пустую страницу, в чем дело???
Кто подскажет???
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.