Авторизация VKontakte

Эта запись устарела. Обновленный скрипт авторизации

Иногда требуется авторизоваться  через php скрипт.  В данном случае разбор авторизации VKontakte.

Авторизовываться проще , используя мобильную страницу m.vkontakte.ru. На мобильных страницах проще html код и меньше мусора.  Вся авторизация сводится к двум POST запросам. Для начала, надо отправить логин, пароль на страницу login.vk.com.  Я все это делаю через curl, точнее через самописную обертку для него.

$sAnswer — содержимое страницы. В этой переменной будет примерно следующее.

Я особо не задумываясь, цепляю все input-ы регуляркой и отправляю методом POST . При этом страница ВКонтакта отдаст куку, ее надо сохранить для серфинга.

Всё, мы во VKontakt-е. Теперь можем спокойно уходить с мобильной страницы m.vkontakte.ru и с печенькой(сохраненной cookie) гулять по сайту..

Если сервер находится где нибудь в Занзибаре, то Вконтакт может запросить 4 последних цифры мобильного телефона из профиля. Требования безопасности. Получаем форму как в листинге номер 2 и отправляем  цифры точно также.

You may also like...

  • Не ясно конечно, зачем парсить всю страницу (по крайней мере без капчи). Не легче отправлять параметры запроса сразу?

    • мысль не понял
      я не знаю заранее параметров запроса, я парсингом вытаскиваю параметры

      • Аноним

        Когда я писал авторизацию для ВК, я просто подсмотрел тело отправляемого POST-запроса и по нему составил строку.
        $params=’act=login&q=1&al_frame=1&expire=&captcha_sid=&captcha_key=&from_host=vkontakte.ru&email=’.$user.’&pass=’.$pass;
        Хотя суть от этого по большому счету не меняется, просто лень было писать парсер да и не за чем.
        Функция Browser() у вас самописная? Или это следы какой-то библиотеки?
        И последний абзац несовсем понятен. Куда «мы получаем форму»?

        • Browser() самописная
          часто парсеры пишу ,чтобы не возиться постоянно с отправкой получением кук, заданием реферера и прочим в курле, написал свою обертку, аналогично виденной когда то в CI

          Вы я так понимаю просто get запросом отправляете. Это не принципиально. Но важно другое.
          Мне много запросов надо отправлять, поэтому я максимально полно эмулировал работу броузера. Чтобы скрипт нельзя было вычислить и заблочить по каким то особенностям отличающим его от броузера.

          И по идее без парсера не обойтись. login.vk.com отдает
          s=5cc41d0e2266226242c2199r8cc25f787f2rh9727f2fabf621054c689b86Вы без парсинга этот параметр не получите.

          • Nvrskozzy

            а функцию browser чего не выложил.. выложи плиз) без неё не пашет же)

          • Она привязана к фреймворку. А его весь выкладывать не хочется. В CI  если не ошибаюсь, есть аналогичный класс и метод выполняющий то же самое. Я предположил что аналогов достаточно и выкладывать поленился.

  • nikolay kokoulin

     а антикапчу к этому прикрутить можно? а то я слегка подзаебался(при попытке скачать картинку либо сохраняет 1 байт либо сохраняет картинку «ДОСТУП ЗАПРЕЩЕН» по иддее картинку надо качать в том же запросе что и происходит запрос авторизации но как это сделать я не вдуплю( ибо после того как мне вернулась страница с формой ввести символы с картинки, мне еще надо спарсить капча сид и загрузить картинку а это еще один запрос(

    • >>по иддее картинку надо качать в том же запросе что и происходит запрос авторизации 
      vkontakte тоже делает это в 2 запроса. Сначала форма, потом картинка.

      Так что все нормально. Надо просто проверить сниффером, что отдает форма. Обычно в таких случаях либо через POST либо через куки отдается ид сессии. Т.е. как только вы запросили картинку, в сессию на сервере записался  проверочный код.
      Т.е. вы просто отправляете отдаете post запросом все что должна отдавать форма, включая код капчи

    • Аноним

       Каждый уникальный адрес в сети загружается отдельным запросом. Как бы не генерировалась картинка, она будет загружаться отдельным запросом.

    • При чём тут авторизация? Авторизацию вы проходите и получаете remixid.
      И уже в других запросах, в зависимости от того, что вам надо, вы его юзаете как удостоверение.

  • Кому интересно, тут рабочий на сегодняшний день вариант.
    http://suvitruf.ru/2011/05/15/142/