- PVSM.RU - https://www.pvsm.ru -

ВКонтакте без джаббера и снова с ним

Это история про то, как пользоваться чатом ВКонтакте в том мессенджере, который вам нравится.
Пусть этой новости уже несколько месяцев, однако не всегда хорошие новости вовремя получают должное внимание.
В середине статьи — мануал для админов джаббер-серверов, в конце — обращение к питонистам.
Ссылки на пруфпики инклюдед.

Как известно, в начале сентября ВКонтакте закончил поддерживать XMPP для доступа к личным сообщениям. Джаббер-сообщество негодовало [pic] [1] и решило этот вопрос иначе.

Картинка про Jabber и ВКонтакте от Павла Дурова:
ВКонтакте без джаббера и снова с ним

Одновременно с закрытием XMPP, чат ВКонтакте перестал быть доступен для многих мессенджеров.
Назовём этих «счастливчиков».

ВКонтакте без джаббера и снова с ним Мобильные

iOS, Android: Talkonaut, Mail.ru Агент, Jasmine IM, IM+, Imo.im, Bombus, Jimm (Aspro, Multi), все старые J2ME клиенты (включая вышеупомянутые), все Symbian, Maemo & Meego клиенты (Баян ICQ, QIP PDA 2xxx, etc, кроме qutIM) и многие другие

ВКонтакте без джаббера и снова с ним Десктопные

Pidgin, Adium, Miranda NG, старые версии QIP (QIP Infium и QIP 2010), qutIM*

ВКонтакте без джаббера и снова с ним Веб-клиенты

IM+ Web, IMO, Jappix //других для произвольного XMPP-аккаунта, кажется-то и нету?

До появления Джаббера в ВКонтакте существовал транспорт pyvk-t. Его разработка активно велась до появления родного XMPP [2] в ВКонтакте в 2010-ом году. К 2013 году он оказался заброшеным, а последние разработчики, которые его ковыряли разрабатывали, сообщили, что в последних версиях транспорт работал с ошибками и его состояние они не знают.
Вопрос использования сообщений ВК без необходимости открывать браузер встал с новой силой.

1. Нативные протоколы (ВК API)

В настоящий момент сообщения ВКонтакте поддерживают три известных мультипротокольных клиента, причём два из них Windows only.
Это QIP 2012 (QIP IM), Miranda NG и qutIM. Если вам повезло любить один из этих мессенджеров, то XMPP для ВКонтакте вам, скорее всего и не нужен.
Протокол в QIP [3] был сделан задолго до отмены XMPP,
протокол для Миранды [4] появился буквально месяц назад (сильно после закрытия XMPP), переписан [5] с нуля.
протокол в qutIM был реализован довольно давно (чуть ли не раньше, чем в QIP?).

Из мобильных клиентов — поддержка сообщений ВК осталась только у QIP IM (для iOS и Android). Причём приложения под обе платформы поддерживают только сообщения (поддержка фото, аудио, пересылки и прочее не реализовано) и в обозримой перспективе не будут активно развиваться.
Месяц назад появился и активно развивается мессенджер M++ [6], который поддерживает XMPP, SMS и ВКонтакте (через API).

2. Транспорт VK4XMPP

Как я уже упоминал, транспорт pyvk-t был заброшен, неактуален, и не реализовывал дополнительный функционал сообщений ВКонтакте — разработчики транспорта, да и сообщество в целом, ожидали этого в родной реализации от ВКонтакте. Не случилось.

Поэтому, когда в 2013-ом году ВКонтакте закрыл XMPP, оказалось проще написать новый транспорт, с нуля.
Так появился VK4XMPP [7].
Дружба питона и XMPP продолжается. Но не только питона.

Чуть позже появился второй транспорт — VKXMPPGATE. Github [8] Описание [9]. Информация об авторе [10].
Он написан на Дельфи/Паскале и, вероятно, работает побыстрее. Однако последний коммит сделан 3 месяца назад. Поэтому, в данной статье речь пойдёт о VK4XMPP, как о единственном активном проекте.

По словам автора, VK4XMPP представляет собой транспорт из ВК в XMPP и обратно. В отличие от ранее существующего pyvk-t, он не парсит страницы, а полностью работает с API ВКонтакте, что значительно повышает его надёжность и стабильность. Транспорт не хранит паролей, а использует для авторизации access-token.

На текущий момент транспорт может похвастаться следующими фичами:

  • Прием и отправка сообщений;
  • Не хранит пароль. Авторизация по ключу «access-token», выдаваемому ВКонтакте;
  • Автоматическое получение ключа при вводе пароля (для неопытных пользователей, пароль не сохраняется)
  • Вложения в сообщениях (только приём);
  • Пересланные сообщения и вложения в них (картинки, музыка, документы, метки на карте);
  • Список друзей в ростере;
  • Поддержка vCard для контактов;
  • Поддержка конференций (групповых диалогов; тестовая);
  • Автодобавление друзей, которых вы добавили через сайт (только если вы были онлайн);
  • Статистистика работы транспорта.

Неплохо, правда? Помнится, XMPP-сервер от ВКонтакте не мог похвастаться такими фичами.

Регистрация

В общих чертах, процесс регистрации на транспортах всегда одинаков. Инструкции для подключения популярных клиентов:
Psi+ [11] | Tkabber [12] | Gajim [13] | Miranda [14] | QIP [15] | jTalk [16] | Jimm [17] | JasmineIM [18] | Pidgin [19]
Лучи добра администрации jabberon.ru и прочим энтузиастам.

После успешной регистрации в вашем джаббер-аккаунте появятся контакты всех друзей с их именами и статусом онлайн из ВКонтакте.
В случае проблем, автор рекомендует отменить регистрацию и пройти её через Psi+.

Чтобы зарегистрироваться, потребуется выбрать один из существующих серверов. Список доступных серверов [20] можно найти в wiki проекта на гитхабе.

Установка транспорта

Если у вас есть джаббер-сервер, вы можете поднять транспорт у себя. Тогда даже токен ВКонтакте будет под вашем контролем. Потребуется джаббер-сервер и Python 2.7. Остальные библиотеки содержатся в репозитории.

Для установки и обновлений рекомендуется использовать git

git clone github.com/mrDoctorWho/vk4xmpp.git

Дальше потребуется скопировать дефолтный конфиг и изменить несколько значений.
Переходим в папку с транспортом и копируем файл конфигурации:

cd vk4xmpp
cp Config_example.txt Config.txt

Конфиг неплохо прокомментирован, а также есть несколько инструкций по установке:
Ubuntu/Debian/etc + Ejabberd [21]
Arch + Prosody [22]
Prosody [23]

На закуску — если ваши нагрузки будут довольно велики, пригодится инструкция по оптимизации [24] скорости работы и потребления RAM.

Обратиться к разработчику за поддержкой и по другим вопросам можно в конференции simpleapps@conference.jabber.ru [25]

Чем помочь

Если вы дочитали до этого места, то ваша помощь была бы кстати.

1. Самое простое: подпишитесь на баг [26] API ВКонтакте, помогите разработчику добиться ответа администрации ВК. С этим багом столкнулись и разработчик VK4XMPP, и разработчик VKXMPPGATE.

2. Поболтайте в конференции. Пожелайте фич и удачи!

3. Посмотрите на открытые реквесты [27] и в частности — про user-friendly [28] поведение. Опишите поведение, которое бы вам понравилось.

4. Python-программеры! Чего греха таить, будет здорово, если кто-то присоединится к проекту. Девелоперс-девелоперс-девелоперс!©
Впрочем, помощь с дизайном (как минимум иконки) тоже будет очень полезной;)

Ссылки

«ВКонтакте» отключит поддержку XMPP 31 августа [29] — беседа на Роеме с комментариями ВКонтакте, моими вопросами к ним, а также комментариями разработчика QIP SegaZero [30] и MRA Java Bachin [31].

Пруфы как умерли Trillian [32] Miranda [33] qutIM [34], IM+ Web [35] (мобильный с опозданием, но переключили на API), Imo.im [36]

Знаете правило 34?

Про всё есть XMPP. Исключений нет.

Репозиторий VK4XMPP на гитхабе: github.com/mrDoctorWho/vk4xmpp [7]

Автор: Santiago26

Источник [37]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/vkontakte/50622

Ссылки в тексте:

[1] негодовало [pic]: http://habrastorage.org/storage3/2b2/006/34c/2b200634cc958a423b71cd788dfca676.png

[2] родного XMPP: http://habrahabr.ru/company/vkontakte/blog/98907/

[3] Протокол в QIP: http://wiki.qip.ru/ВКонтакте

[4] протокол для Миранды: http://wiki.miranda-ng.org/index.php?title=Plugin:VKontakte/ru

[5] переписан: http://forum.miranda-ng.org/index.php?topic=28.msg457#msg457

[6] мессенджер M++: http://habrahabr.ru/post/180493/

[7] VK4XMPP: https://github.com/mrDoctorWho/vk4xmpp

[8] Github: https://github.com/vsevols/VkXmppGate

[9] Описание: http://vsevols.livejournal.com/11841.html

[10] Информация об авторе: http://habrastorage.org/storage3/316/74a/988/31674a98860f126495a2bf43650c8bb2.png

[11] Psi+: http://jabberon.ru/index.php?option=com_content&view=article&id=138:2013-09-04-08-27-31&Itemid=57

[12] Tkabber: http://dsy.name/?q=vk4xmpp

[13] Gajim: http://xmppserv.ru/gajim/

[14] Miranda: http://jabberon.ru/index.php?option=com_content&view=article&id=141:vktransportmiranda&Itemid=57

[15] QIP: http://jabberon.ru/index.php?option=com_content&view=article&id=140:---qip-2012&Itemid=57

[16] jTalk: http://jabberon.ru/index.php?option=com_content&view=article&id=142:vktransportjtalk&Itemid=57

[17] Jimm: http://xmppserv.ru/jimm/

[18] JasmineIM: http://xmppserv.ru/jasmine/

[19] Pidgin: http://xmppserv.ru/pidgin/

[20] Список доступных серверов: https://github.com/mrDoctorWho/vk4xmpp/wiki/Список-доступных-серверов-(для-пользователей)

[21] Ubuntu/Debian/etc + Ejabberd: https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-(только-для-серверов)

[22] Arch + Prosody: https://github.com/mrDoctorWho/vk4xmpp/wiki/Установка-на-ArchLinux-с-Prosody

[23] Prosody: https://github.com/mrDoctorWho/vk4xmpp/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-VK4XMPP-%D0%BD%D0%B0-Prosody

[24] инструкция по оптимизации: https://github.com/mrDoctorWho/vk4xmpp/wiki/Оптимизация-транспорта

[25] simpleapps@conference.jabber.ru: http://xmpp:simpleapps@conference.jabber.ru?join

[26] подпишитесь на баг: https://vk.com/bugs?act=show&id=26250615_1

[27] открытые реквесты: https://github.com/mrDoctorWho/vk4xmpp/issues

[28] про user-friendly: https://github.com/mrDoctorWho/vk4xmpp/issues/21

[29] «ВКонтакте» отключит поддержку XMPP 31 августа: http://roem.ru/2013/07/24/xmpp76818/

[30] SegaZero: http://habrahabr.ru/users/segazero/

[31] Bachin: http://habrahabr.ru/users/bachin/

[32] Trillian: http://help.trillian.im/discussions/suggestions/5700-plugin-for-vkcom-with-using-api

[33] Miranda: http://forum.miranda.im/showthread.php?p=54597

[34] qutIM: http://habrastorage.org/storage3/ec7/f50/10a/ec7f5010a93b2736d8d82a8ed370fd47.png

[35] IM+ Web: http://habrastorage.org/storage3/62c/698/ea0/62c698ea03e9913b57562ac52cfadf74.png

[36] Imo.im: http://habrastorage.org/storage3/c13/f47/820/c13f47820f6208bdfa76c389fed60d1c.png

[37] Источник: http://habrahabr.ru/post/178317/