Clubhouse без iPhone. How-to инструкция

Дисклеймер

В этой статье я расскажу, как запустить Clubhouse без iphone с помощью консольного python приложения, которое позволит пользоваться большинством функций социальной сети. Clubhouse оказался прикольной теплой ламповой площадкой, но для владельцев андройдов вроде меня эта соцсеть недоступна, а версия для андройда, по слухам, выйдет не ранее мая.
Автор статьи отказывается от любой ответственности за неправомерное использование полученных знаний и напоминает что статья сделана с обучающей и справочной целью. Создание ботов, кибербуллинг и прочие плохие вещи делать крайне не рекомендуется.

Шаг 1. Виртуальный iPhone

Для того, чтобы зарегистрироваться в приложении вам понадобится сервис, предлагающий автоматизированное тестирование мобильных телефонов. В целом можно обойти это требование и зарегистрироваться с использованием реверснутой библиотеки, но вероятно вас смогут вычислить и забанить. К тому же в виртуальной лабе вы сможете потыкать приложение до выхода андройд версии и зафолловить понравившихся людей, чтобы у вас был список комнат с вашими интересами. На рынке есть несколько таких сервисов. Я остановился на browserstack.com — там есть возможность получить доступ к реальному iphone, который лежит где-то в серверной и его экран расшаривается на веб-приложение. Нам понадобится функционал App Live — он доступен только по подписке. Я честно отдал порядка 40 долларов за один месяц тестирования. Кроме этого, нам понадобится любое .ipa приложение, чтобы сервис позволил вам запустить выбранную модель iPhone’а:

iPhone 11 на app-live.browserstack.comiPhone 11 на app-live.browserstack.com

Никаких дополнительных настроек не надо — заходим в App Store под своим Apple ID и устанавливаем Clubhouse:

Установка приложения ClubhouseУстановка приложения Clubhouse

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

Поиск людей в приложении Clubhouse через онлайн-доступ к реальному iPhoneПоиск людей в приложении Clubhouse через онлайн-доступ к реальному iPhone

У всех онлайн-сервисов по тестированию мобильных телефонов есть недостаток: они не умеют перенаправлять звук и микрофон на ваш браузер. То есть с этого «эмулятора» вы не сможете послушать в Clubhouse ни одной беседы и сами сказать ничего не сможете. Чтобы общаться в комнатах и слушать, что говорят другие, вам придется запустить python приложение на своем компьютере.

Шаг 2. Сlubhouse-py

Для прослушивания комнат и для диалогов будем использовать консольное pyhton приложение. Брать отсюда: https://github.com/stypr/clubhouse-py

Оно основано на реверснутом протоколе clubhouse’а и автор обещает удалить приложение после выхода нормальной версии для андройда. Для работы приложения требуется Python версии 3.7 и выше. Приложение работает под Windows и macos.
Установка простая:

git clone https://github.com/stypr/clubhouse-py
cd ./clubhouse-py
pip3 install -r requirements.txt
pip3 install agora-python-sdk

Для запуска выполните:

python3 cli.py

Если у вас все заработало с первого раза — поздравляю!

Но скорей всего будут проблемы.
Во-первых, на 19 февраля 2021 сборка библиотеки agora-python-sdk под Windows сломана, поэтому вместо установки через pip лучше собрать проект руками. Инструкция здесь: https://github.com/AgoraIO-Community/Agora-Python-SDK#installation

Во-вторых, для macos надо дать разрешения на доступ к Микрофону (Microphone) и Универсальный Доступ (Accessability) для терминала и python’а. А также, вероятно, потребуется изменить комбинацию клавиш для «поднятия руки», так как в двуязычном маке нормально не работает модуль для биндинга горячих клавиш. Для этого откройте в любом редакторе cli.py и измените:

if not channel_speaker_permission:    
  print("[*] Press [Ctrl+Shift+H] to raise your hands for the speaker permission.")    
  keyboard.add_hotkey(        
    "ctrl+shift+h",        
    _request_speaker_permission,        
    args=(client, channel_name, user_id)    
  )

на что-то подобное:

if not channel_speaker_permission:    
  print("[*] Press [3] to raise your hands for the speaker permission.")    
  keyboard.add_hotkey(        
    "3",        
    _request_speaker_permission,        
    args=(client, channel_name, user_id)    
  )

В-третьих, в macos из-за биндинга клавиш приложение надо запускать под рутом:

sudo python3 cli.py

После запуска приложение попросит указать номер телефона и ввести код для аутентификации, после чего сохранит полученный токен в settings.ini
Вот так выглядит запущенное клиентское приложение:

консольный интерфейс управления clubhouse-pyконсольный интерфейс управления clubhouse-py

Еще важный момент: консольное приложение по-умолчанию отображает 20 записей в списке каналов и 20 пользователей в каналах. Чтобы увеличить лимиты можно изменить значение переменной max_limit в файле cli.py:

max_limit = 30

Вывод

Я смог протестировать Clubhouse и полноценно зарегистрировать себя и еще нескольких друзей таким способом. И уже несколько дней слушаю беседы и периодически общаюсь в них.
У приложения на python’е есть недостатки: самый главный — это консольный интерфейс. Вы не увидите обновления списка спикеров и не сможете включать/выключать ваш микрофон из приложения. Как workaround включайте/выключайте микрофон другими способами. Кроме того, список доступных бесед ограничен количество строк и возможна ситуация, когда вы не увидите нужную вам беседу. Немного поэкспериментировав, я не нашел способа выводить больше 30 записей в списке бесед, но думаю что такой способ точно есть. Иногда помогает сохранить channel_name отдельно и подключаться напрямую по адресу. Адрес беседы можно взять из ссылки на событие, например: https://www.joinclubhouse.com/event/M1e7eO3N. Приложение не создает подписку на события (это не реализовано в протоколе clubhouse-py), поэтому вы не сможете получать приглашения на приватные беседы и прочие оповещения. Но часть проблем можно решить, используя виртуальные лабы с iPhone’ами. Например, это удобно для того, чтобы посмотреть список предстоящих мероприятий, подписаться на каких-то известных людей и просто поискать своих друзей.

В общем, если нет айфона, но есть мозги, то решить проблему с популярным приложением можно. Обратное не работает.
Спасибо за внимание!

© Habrahabr.ru