Обновленная авторизация Вконтакте (PHP, CURL)

Author Роман Чернышов    Category PHP     Tags , Комментариев 4 Дата 13 Ноя

vklogin Обновленная авторизация Вконтакте (PHP, CURL)Примерно месяц назад социальная сеть Вконтакте немного изменила алгоритм авторизации, в виду чего скрипты использующие автоматическую авторизацию по средствам curl (впрочем это касается вообще любых скриптов и программ), перестали правильно авторизироваться.

В рамкам небольшой заметки привожу фрагмент кода обновленной авторизации на PHP.

<?
$mail = ""; //e-mail или логин от контакта
$pass = ""; //пароль от контакта
 
$otvet=connect("http://login.vk.com/?act=login&email=$mail&pass=$pass");
If(!preg_match("/hash=([a-z0-9]{1,32})/",$otvet,$hash)){
die("Login incorrect");
}
$otvet=connect("http://vk.com/login.php?act=slogin&hash=".$hash[1]);
preg_match("/remixsid=(.*?);/",$otvet,$sid);
$cookie = "remixchk=5; remixsid=$sid[1]";
 
 
function connect($link,$cookie=null,$post=null){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
if($cookie !== null)
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
if($post !== null)
{
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$otvet = curl_exec($ch);
curl_close($ch);
return $otvet;
}?>

Данный фрагмент кода сильно упрощен, но все же наглядно показывает процесс получения недостающего HASH и последующую его передачу в запрос. Результат на выходе Cookie позволяющие дальше работать с ВК будучи уже авторизированным.

4 комментария to “Обновленная авторизация Вконтакте (PHP, CURL)”

  • Алексей 04.06.2013 в 12:05 пп

    Здравствуйте, Роман. Пытаюсь сделать авторизацию по вашему примеру.
    После получения куков запрашиваю также функцию connect нужной страницы с указанием вторым параметром переменной $cookie. Но страница ответа всё равно содержит текст о том, что нужно авторизоваться.
    Тем более, что смотрю заголовки овтета от Вконтакта, и там кажется remixsid всегда пустой. Как и почти все другие remixs…
    В чём может быть ошибка?

    • Роман Чернышов 04.06.2013 в 12:22 пп

      Доброго времени, ВК может не пускать по причинам
      — Отличия гео-IP, локации вашего хостинга на котором вы запускаете скрипт и вашего IP с которого вы обычно входите в ВК.
      — Проверьте правильно ли скрипт получает параметр $hash

      • Алексей 04.06.2013 в 5:04 пп

        Да, $hash всё верно записывается.

  • Александр 04.01.2014 в 1:36 дп

    Вот спасибо помогло на TCL переписал буду контакт теперь контачить ))

Оставить комментарий

Консультации

Консультант Чернышов Р.В. Зайдайте вопрос на любую из тем:
Бесплатно и без регистрации!

Задать вопрос
Все вопросы
Последние вопросы
Поиск по блогу
Категории
Архив
Новое на сайте
Портфолио Все работы


www.detskiy-mir.net
www.detskydoctor.ru
www.betelit.ru
www.all-alliance.ru
www.videogonok.ru
www.carpfishing.by
www.property-greek.com
www.domcons.ru

с 2009 года по сегодняшний день, создано более 300 сайтов...