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

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

Примерно месяц назад социальная сеть Вконтакте немного изменила алгоритм авторизации, в виду чего скрипты использующие автоматическую авторизацию по средствам 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 переписал буду контакт теперь контачить ))

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

Об авторе и блоге Чернышов Р.В. Сертификат. Топ 10% лучших фрилансеров, Чернышов Р.В.

Друзья, всем привет!

Меня зовут Роман Чернышов, я веб-разработчик и данный блог посвящен моим проектам и бизнесу.

Тут я делюсь личным опытом
и отвечаю на вопросы. Я всегда готов к сотрудничеству с вами, готов реализовать проект любой сложности(опыт 10+ лет).

Если у вас есть вопросы, предложения, вы хотите совершить покупку моих решений или заказать работу, пишите!



Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка