Обновленная авторизация Вконтакте (PHP, CURL)
Примерно месяц назад социальная сеть Вконтакте немного изменила алгоритм авторизации, в виду чего скрипты использующие автоматическую авторизацию по средствам curl (впрочем это касается вообще любых скриптов и программ), перестали правильно авторизироваться.
В рамкам небольшой заметки привожу фрагмент кода обновленной авторизации на PHP.
Просмотр кода 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 позволяющие дальше работать с ВК будучи уже авторизированным.

Автор:







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