Эта запись устарела. Обновленный скрипт авторизации
Иногда требуется авторизоваться через php скрипт. В данном случае разбор авторизации VKontakte.
Авторизовываться проще , используя мобильную страницу m.vkontakte.ru. На мобильных страницах проще html код и меньше мусора. Вся авторизация сводится к двум POST запросам. Для начала, надо отправить логин, пароль на страницу login.vk.com. Я все это делаю через curl, точнее через самописную обертку для него.
1 2 3 4 5 6 |
$aPost['email'] = _VkUser; $aPost['pass'] = _VkPwd; $su = 'http://login.vk.com?act=login&to=&from_host=m.vkontakte.ru&pda=1'; $suRef = 'http://m.vkontakte.ru/login?op=slogin'; $sAnswer = Browser($su, $suRef, $aPost); |
$sAnswer — содержимое страницы. В этой переменной будет примерно следующее.
1 2 3 4 5 6 7 8 9 |
<body onload="try { document.getElementById('l').submit(); } catch(e) { document.getElementsByTagName('form')[0].submit(); }"> <form id='l' method='post' action='http://m.vkontakte.ru/login'> <input type='hidden' name='s' value='5cc41d0e2266226242c2199r8cc25f787f2rh9727f2fabf621054c689b86' /> <input type='hidden' name='op' value='slogin' /> <input type='hidden' name='redirect' value='1' /> <input type='hidden' name='expire' value='' /> <input type='hidden' name='to' value='' /><input type='hidden' name='to' value='' /><input type="submit" value="Продолжить"/> </form> </body> |
Я особо не задумываясь, цепляю все input-ы регуляркой и отправляю методом POST . При этом страница ВКонтакта отдаст куку, ее надо сохранить для серфинга.
1 2 3 4 5 6 7 8 9 10 |
$sPreg = "~name='(.*)' value='(.*)' />~U"; preg_match_all($sPreg, $sAnswer, $aRet); if(empty($aRet[1])) return 0; $aPost = array_combine($aRet[1], $aRet[2]) ; $suRef = 'http://login.vk.com?act=login&to=&from_host=m.vkontakte.ru&pda=1'; $su = 'http://m.vkontakte.ru/login'; $doSaveCookie = TRUE; $sAnswer = Browser($su, $suRef, $aPost, $doSaveCookie); |
Всё, мы во VKontakt-е. Теперь можем спокойно уходить с мобильной страницы m.vkontakte.ru и с печенькой(сохраненной cookie) гулять по сайту..
Если сервер находится где нибудь в Занзибаре, то Вконтакт может запросить 4 последних цифры мобильного телефона из профиля. Требования безопасности. Получаем форму как в листинге номер 2 и отправляем цифры точно также.
Свежие комментарии