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

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


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

    Картинка про 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 в ВКонтакте в 2010-ом году. К 2013 году он оказался заброшеным, а последние разработчики, которые его ковыряли разрабатывали, сообщили, что в последних версиях транспорт работал с ошибками и его состояние они не знают.
    Вопрос использования сообщений ВК без необходимости открывать браузер встал с новой силой.

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


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

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

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


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

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

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


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

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

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

    Регистрация


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

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

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

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


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

    Для установки и обновлений рекомендуется использовать git
    git clone github.com/mrDoctorWho/vk4xmpp.git
    

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


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

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

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

    Чем помочь


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

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

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

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

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

    Ссылки


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

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

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

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



    Репозиторий VK4XMPP на гитхабе: github.com/mrDoctorWho/vk4xmpp
    Метки:
    Поделиться публикацией
    Похожие публикации
    Комментарии 20
    • +3
      Про всё есть XMPP. Исключений нет.

      Следует ли из этого, что все эти ваши транспорты — порнография?
      • 0
        Хе-хе. Нет, не значит. При желании такую позицию, конечно, можно оправдать — интерфейсы большинства джаббер-клиентов для транспортов сделаны довольно плохо, неопытным пользователям может быть сложно. Но мир знает примеры и хороших реализаций.
        Сами по себе транспорты — это прекрасный и незаменимый инструмент для обеспечения совместимости с другими сетями.
      • 0
        Я любил XMPP для ВК только из-за одной дырки: можно было читать сообщения от и до, несколько штук подряд, и они не помечались как прочитанные у собеседника. Но в последнее время эта фича стала мне не нужна, поэтому с уходом XMPP я не сильно расстроился.
        • 0
          Я, наверное, чего-то не понимаю, но по какому принципу вообще можно сравнивать Jabber, Facebook и Wikipedia? (КДПВ)

          Всё, понял, дурак.
          • +4
            Мне кажется смешным, что товарищ Дуров рассуждает об альтруистичности, информации — и закрывает XMPP.
            Мы, мол, не хотим быть про общение. Мы — про информацию.
            МЫ БЫЛИ СЛИШКОМ АЛЬТРУИСТИЧНЫ — как бы говорит он нам.
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              А точно баг с капчей связан с транспортом? У меня и на IM+ бывает (с родным протоколом), что по много раз подряд капча не проходит. С другой стороны, на транспорте капчу ещё ни разу не ловил, так что проверить не могу.
              • 0
                Нет, не точно. Потому-то и требуется разбирательство со стороны ВКонтакте.
                С другой стороны, насколько я помню — IM+ все протоколы реализует серверно, а с сервером общается по HTTP. То есть вы там тоже пользуетесь транспортом, использующим API. Но проприетарным.
                • 0
                  Что в IM+ тоже транспорт это понятно, я имел в виду прямую связь с vk4xmpp.
                  Отписался там.
              • 0
                И опять в нет поддержки бесед (более 2 человек) через XMPP…
                • +1
                  Отчего же, есть.
                  > Поддержка конференций (групповых диалогов; тестовая);
                • 0
                  А как это в Adium запилить? Не нашлё там браузер транспортов.
                • 0
                  Полгода работал транспорт без проблем, в последние дни что то начал запрашивать капчу —
                  [url=http://clip2net.com/s/inlzAA][img]http://clip2net.com/clip/m12150/thumb640/1403588495-clip-7kb.png[/img][/url]
                  что то в апи изменилось, и теперь транспорт онлайн, а конкакты vk — нет.
                  Это исправимо?
                  • 0
                    Вам в simpleapps@conference.jabber.ru, спросить mrDoctorWho. Не забудьте указать домен транспорта, которым пользуетесь.
                  • 0
                    отлетел что ли транспорт у jabberon.ru — понять ничего не могу… ничего не запрашивает, все вроде бы он-лайн, но ни единого клиента вконтакте не вижу. На jabberon вопрос завис без ответа…
                    Кто то может подсказать 100% работающий на сегодняшний день транспорт?
                    • 0
                      Попробуйте заново авторизоваться в транспорте (у меня транспорт-изменить, там перейти по ссылке, потом отдать ему получившийся ключ).
                      Сам на vk.jabberik.ru. Держит автор.
                      • 0
                        заработало — хотя и не с первого раза смог заново авторизоваться: вообще все выглядит как то странно: по началу все попытки повторной авторизации в транспорте vkontakte.jabberon.ru были неудачными, постоянно выплевывало с 401 ошибкой — не авторизован. Почитал в гугле, вроде как такое если пытаешься авторизоваться уже авторизованным…
                        Зарегился на vk.jabberik.ru — авторизация сразу же успешно прошла, но тут другая проблема: при новом входе в клиент транспорт оффлайн, т.е. приходится при каждом запуске miranda авторизовываться в транспорте. После того, как совсем было погрустнел, попробовал еще раз переавторизоваться vkontakte.jabberon.ru — и заработало.
                    • 0
                      удалено

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