Clubhouse без iPhone. How-to инструкция
Дисклеймер
В этой статье я расскажу, как запустить Clubhouse без iphone с помощью консольного python приложения, которое позволит пользоваться большинством функций социальной сети. Clubhouse оказался прикольной теплой ламповой площадкой, но для владельцев андройдов вроде меня эта соцсеть недоступна, а версия для андройда, по слухам, выйдет не ранее мая.
Автор статьи отказывается от любой ответственности за неправомерное использование полученных знаний и напоминает что статья сделана с обучающей и справочной целью. Создание ботов, кибербуллинг и прочие плохие вещи делать крайне не рекомендуется.
Шаг 1. Виртуальный iPhone
Для того, чтобы зарегистрироваться в приложении вам понадобится сервис, предлагающий автоматизированное тестирование мобильных телефонов. В целом можно обойти это требование и зарегистрироваться с использованием реверснутой библиотеки, но вероятно вас смогут вычислить и забанить. К тому же в виртуальной лабе вы сможете потыкать приложение до выхода андройд версии и зафолловить понравившихся людей, чтобы у вас был список комнат с вашими интересами. На рынке есть несколько таких сервисов. Я остановился на browserstack.com — там есть возможность получить доступ к реальному iphone, который лежит где-то в серверной и его экран расшаривается на веб-приложение. Нам понадобится функционал App Live — он доступен только по подписке. Я честно отдал порядка 40 долларов за один месяц тестирования. Кроме этого, нам понадобится любое .ipa приложение, чтобы сервис позволил вам запустить выбранную модель iPhone’а:
Никаких дополнительных настроек не надо — заходим в App Store под своим Apple ID и устанавливаем Clubhouse:
Приложение попросит ваш телефонный номер, пришлет код на ваш реальный телефон, и тут вам понадобится приглашение в Clubhouse, заранее позаботьтесь, чтобы кто-то из друзей в приложении вам его отправил на ваш номер телефона. После получения приглашения заполните информации о себе в био — это единственное место в приложении, где можно рассказать о себе текстом. Интерфейс простой, главное подписаться на интересных вам людей, чтобы дальше можно было легко находить комнаты для прослушивания в консоли:
У всех онлайн-сервисов по тестированию мобильных телефонов есть недостаток: они не умеют перенаправлять звук и микрофон на ваш браузер. То есть с этого «эмулятора» вы не сможете послушать в 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
Вот так выглядит запущенное клиентское приложение:
Еще важный момент: консольное приложение по-умолчанию отображает 20 записей в списке каналов и 20 пользователей в каналах. Чтобы увеличить лимиты можно изменить значение переменной max_limit в файле cli.py:
max_limit = 30
Вывод
Я смог протестировать Clubhouse и полноценно зарегистрировать себя и еще нескольких друзей таким способом. И уже несколько дней слушаю беседы и периодически общаюсь в них.
У приложения на python’е есть недостатки: самый главный — это консольный интерфейс. Вы не увидите обновления списка спикеров и не сможете включать/выключать ваш микрофон из приложения. Как workaround включайте/выключайте микрофон другими способами. Кроме того, список доступных бесед ограничен количество строк и возможна ситуация, когда вы не увидите нужную вам беседу. Немного поэкспериментировав, я не нашел способа выводить больше 30 записей в списке бесед, но думаю что такой способ точно есть. Иногда помогает сохранить channel_name отдельно и подключаться напрямую по адресу. Адрес беседы можно взять из ссылки на событие, например: https://www.joinclubhouse.com/event/M1e7eO3N. Приложение не создает подписку на события (это не реализовано в протоколе clubhouse-py), поэтому вы не сможете получать приглашения на приватные беседы и прочие оповещения. Но часть проблем можно решить, используя виртуальные лабы с iPhone’ами. Например, это удобно для того, чтобы посмотреть список предстоящих мероприятий, подписаться на каких-то известных людей и просто поискать своих друзей.
В общем, если нет айфона, но есть мозги, то решить проблему с популярным приложением можно. Обратное не работает.
Спасибо за внимание!