Python, авторизация на vk.com?

Имеется скрипт, который получает данные с vk.com/al_friends.php. Опытным путём установлено, что необходимо только куки remixsid. Пытаюсь получить по инструкциям из интернета (используется requests):

auth_params = {'act': 'login', 'email': 'мыло', 'pass': 'пароль'}
r = requests.get('http://login.vk.com', params=auth_params)
# на данном этапе всё хорошо, возвращается страница пользователя, как будто авторизовались

# далее надо получить параметр __q_hash. Его (по мануалу) вытягиваем со страницы:
parse_hash = re.search('hash=([a-z0-9]+)', r.text)
hash = parse_hash.group(1)
# единственное место, где встречается hash= в коде страницы — ссылка «выйти» (https://login.vk.com/?act=logout&hash=…)

# теперь нужно сделать запрос к vk.com/login.php, используя полученный хэш:
auth_params = {'act': 'slogin', 'role': 'fast', 'redirect': '1', 'to': '', 's': '1', '__q_hash': hash}
r = requests.get('http://vk.com/login.php', params=auth_params)
# а вот теперь облом, получаем страницу с формой авторизации. Хотя по мануалу мы должны получить из неё remixsid (опять же, регэкспом из кода страницы)



Пробовал с указанием юзер-агента ('User-Agent': 'Mozilla/5.0' — перекидывает на мобильную версию) и без (отдаёт полную версию).

Собственно, вопрос — что не так? Или я неправильно понял, или алгоритм авторизации изменили, и __q_hash теперь по-другому получать надо.


Также приветствуются предложения по альтернативному способу получения remixsid (скопировать самому из браузера не предлагать, хочется полной автономности :-)
  • Вопрос задан
  • 21687 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dimka665
Прорекламирую свой модуль для доступа к API vk.com: https://github.com/dimka665/vk

Реализована авторизация. Работает на Python2.7, Python3.3
Ответ написан
Комментировать
Tsyganov_Ivan
@Tsyganov_Ivan
Я когда-то тоже парсил страницу и имел очень много головной боли из-за этого =) Бросьте пока не поздно)

Советую посмотреть в сторону github.com/dzhioev/vk_api_auth
Использую эту библиотеку в своем скриптике, вытягивающем музыку) Работает безукоризненно.
Автор просто использует urllib2.HTTPCookieProcessor(cookielib.CookieJar())
Ответ написан
Комментировать
Парсинг более затратный чем использование апи. Чем Вас запрос на апи не устраивает?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы