Я взломал и доработал Яндекс.Станцию
На Яндекс.Станции неудобно смотреть YouTube. Нет рекомендаций, подписок и даже поиск нормально не работает. Поэтому я написал телеграмм бота для отправки на неё любого видео.
С чего все началось?
Я инженер. Постоянно изучаю, как работают разные технологии и вещи вокруг, а также делаю много интересных проектов сам. Когда друзья подарили мне Яндекс.Станцию, я зареверсил протокол активации и развил идею передачи данных, ориентированной на wow-эффект.
У меня глупый (не smart) телевизор, а в качестве основной медиа приставки я использую Станцию. Все отлично, да только YouTube смотреть на ней совсем неудобно. Нельзя войти в аккаунт Ютуба, а значит, никаких рекомендаций и подписок. Кроме того, поиск по видео в Станции, как я понял, осуществляется через Яндекс.Видео. К сожалению такая схема не очень хорошо работает. Иногда не находятся видео даже если дословно произнести название, а новые видео вообще нельзя посмотреть, пока поисковик Яндекса их не проиндексирует.
Я почти смирился с тем, что YouTube на Станции смотреть нельзя, но все изменилось пару недель назад.
Что же произошло?
В субботу утром я решил посмотреть последний сезон «Кремниевой долины». Зашел на «Кинопоиск» и увидел следующее:
После клика по кнопке видео улетело на Яндекс.Станцию и воспроизвелось дальше там. Прямо как ChromeCast или AirPlay. Восторг! Но я обрадовался не самому функционалу, а потенциальной возможности отправить любое видео на станцию.
Я и думать забыл про сериал — на все выходные ушел в реверс инжиниринг и разработку.
Взлом
Ну как "взлом". Я просто посмотрел, как работает отправка команды с сайта на станцию. Технические подробности, как всегда на Хабре. А тут вкратце.
Я посмотрел, какие запросы улетают на сервер при нажатии на эту кнопку. Понял, что их можно повторить, изменив ссылку на ролик, а Станция его воспроизведет.
В результате получилась программа, которая может отправить ссылку с видео на Станцию. Но это ещё должно быть удобно!
Интерфейс
Сначала я думал сделать расширение для Хрома, чтобы было совсем, как AirPlay, но потом понял, что удобнее управлять будет с мобильного телефона. Поэтому выбор пал на телеграм-бота.
Ему можно просто отправить ссылку на видео, а ботинки запустить программу, отправляющую ее на Станцию.
Что в итоге?
Сейчас у меня есть бот, через которого мы отправляем видео с Ютуба на Станцию. Просто нажимаем «Поделиться» в приложении YouTube и отправляем ссылку Боту. Кстати, я назвал его «Ящик» и сделал логотип)
Я не стал делать его публичным, чтобы не собирать логины и пароли. Но вы можете развернуть такого же для себя или доработать для OAuth авторизации или отправки видео с других сайтов. Все исходники доступны на GitHub.
А вот, как работает бот сейчас:
Заключение
Когда инженеру нахватает функционала, он доделывает его сам. Мы теперь действительно регулярно пользуемся этим ботом — очень удобно)
Разработчики Яндекса, пожалуйста не ломайте этот запрос. Это не уязвимость. Работает только с аутентификацией. А если есть возможность — сделайте API устройств публичным — столько всего можно еще создать!
Спасибо, что читаете мои статьи! Скоро я напишу про сервис, который делал почти каждый вечер последние несколько месяцев.
Надеюсь, вам было интересно.
Успехов!