Cd-m.ru

ПК Журнал СД-М
122 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как сканировать код Спотифай на смартфоне? (adsbygoogle google || ). push( )

Как сканировать код Спотифай на смартфоне?

Как сканировать код Спотифай на телефоне и зачем нужна эта функция? Сделали подробный обзор, где расскажем, как правильно пользоваться идентификаторами, чтобы пополнить библиотеку новыми классными песнями!

Как это работает

Подробно расскажем, как сканировать код Spotify, но начнем с попытки разобраться, что это такое и зачем это может понадобиться. У всех треков, подкастов, плейлистов и исполнителей на платформе есть свой уникальный идентификатор, которым можно поделиться. Присмотритесь – это изображение звуковой волны, которое находится в нижней части обложки!

Вы можете сканировать код Spotify, чтобы отправить его другу – тогда друг найдет и добавит классную композицию, плейлист или подкаст. Можно сканировать идентификатор на сторонних площадках, чтобы быстро добавить новый крутой трек в свой плейлист. Не придется забивать и искать вручную! Очень удобно.

Поделиться скриншотом

Давайте начинать разбираться, как сканировать код в Спотифай. Первый способ очень простой – вы можете попросить друга сделать скриншот классной песни или исполнителя. Достаточно сделать снимок экрана, раскрыв обложку. Теперь делаем следующее:

  • Откройте приложение;
  • Нажмите на лупу на нижней панели;
  • В открывшемся окне нажмите на поиск;

  • После найдите значок камеры – он наверху справа;

  • Если ранее не давали разрешение на доступ к галерее – сейчас самое время;

  • Откроется камера, но мы кликаем по кнопке «Выбрать фото»;

  • Выбираем сделанный скриншот из альбома;
  • Меняем кадрирование, двигаем рамку, если это необходимо и нажимаем «Выбрать» ;
  • Ждем несколько секунд – на экране загрузится плейлист/трек/подкаст или артист.

Теперь смело жмите на кнопку воспроизведения или «Добавить», чтобы наслаждаться композициями.

Работа с камерой

Второй ответ на вопрос, как отсканировать код Спотифай, не сложнее первого. Мы вновь воспользуемся смартфоном (функция доступна только в мобильных приложениях Android и iOS).

Этот способ подходит, если вы нашли информацию в сети или просто не хотите просить товарища сделать скриншот – достаточно лишь секундной фотографии экрана смартфона.

  • Откройте сервис, нажмите на лупу снизу;
  • Кликните по значку камеры наверху справа;
  • Наведите открывшееся окно на экран смартфона/компьютера;
  • Сканирование производится моментально – можете наслаждаться музыкой!

Вот как найти песню в Спотифай по коду – за несколько секунд вы можете значительно пополнить список своих любимых треков. Очень удобно!

Как сделать свой идентификатор

Логично предположить, что ваш следующий вопрос – а как сделать код Спотифай для своих плейлистов и любимых композиций? Вам не придется ничего делать, все уже готово. Каждая песня в рамках сервиса автоматически получает уникальный идентификатор. То же касается плейлистов, даже созданных вами. Формируете список? Система автоматически присвоит идентификатор – где его искать, вы уже знаете, просто посмотрите на обложку.

Но вы можете сделать код Спотифай для размещения специальной иконки на сторонних ресурсах. Если вы активно раскручиваете свой профиль или ведете блог, можно выложить симпатично оформленную ссылку на ваш аккаунт – так вы поделитесь своими любимыми композициями с большим количеством людей.

Переходим на специальный сайт – это официальный продукт платформы, найти который можно здесь.

Теперь заходите в свой аккаунт на компьютере. найдите то, чем хотите поделиться (трек, профиль, подкаст – что угодно) и нажмите правой кнопкой мышки. Тапните по значку «Поделиться» и удерживайте клавишу ALT (для Windows) или Option (для Mac), чтобы скопировать Spotify URI.

Вернемся к сервису и вставим скопированную ссылку в открывшееся окно. Теперь творите – выберите цвет фона и шрифта, размер и формат! Сохраните получившуюся «открытку» и делитесь ей на любых сайтах!

Кодирование Spotify URI в коды Spotify

Коды Spotify -это небольшие штрих-коды, которые позволяют вам делиться песнями, исполнителями, пользователями, плейлистами и т. Д.

Они кодируют информацию на разных высотах «bars». Существует 8 дискретных высот, которыми могут быть 23 бара, что означает 8^23 различных возможных штрих-кодов.

Spotify генерирует штрих-коды на основе их схемы URI. Этот URI spotify:playlist:37i9dQZF1DXcBWIGoYBM5M сопоставляется с этим штрих-кодом:

Spotify code barcode

В URI содержится гораздо больше информации (62^22), чем в коде. Как бы вы сопоставили URI со штрих-кодом? Похоже, вы не можете просто закодировать URI напрямую. Дополнительные сведения см. В моем ответе «answer» на этот вопрос: https://stackoverflow.com/a/62120952/10703868

3 ответа

  • Преобразование Echo Nest track ID в Spotify URI

Я хотел бы использовать Echo Nest API, чтобы получить треки и воспроизвести их в Spotify, но я не смог найти хороший способ получить трек Spotify URI из трека Echo Nest ID. Одним из окольных путей было бы захватить имя исполнителя/трека из ответа на трек Echo Nest и найти песни, которые.

Я хочу запустить поиск Spotify из приложения Spotify (чтобы найти треки для исполнителя, для которого у меня нет Spotify URI, только имя). Я не нашел функциональности в App API для запуска поиска. Альтернативой является разговор с ws.spotify.com , чтобы получить доступ к поиску Spotify, но эти.

Патент объясняет общий процесс, вот что я нашел.

Используя Burp Suite, при сканировании кода через Spotify приложение отправляет запрос на API: https://spclient.wg.spotify.com/scannable-id/id/[CODE]?format=json, где [CODE] — ссылка media, которую вы искали. Этот запрос может быть сделан через python, но только с помощью [TOKEN], который был сгенерирован через приложение, поскольку это единственный способ получить правильную область действия. Срок действия токена приложения истекает примерно через полчаса.

Читать еще:  Как поменять канал Wi-Fi на роутере

Таким образом, 26560102031-это ссылка media для вашего плейлиста.

В патенте говорится, что код сначала обнаруживается, а затем, возможно, преобразуется в 63 бита с использованием Серой таблицы. Например 361354354471425226605 кодируется в 010 101 001 010 111 110 010 111 110 110 100 001 110 011 111 011 011 101 101 000 111.

Однако код, отправленный в API, равен 6875667268, я не уверен, как генерируется ссылка media, но это номер, используемый в таблице поиска.

Ссылка содержит целые числа 0-9 по сравнению с серой таблицей 0-7, что означает, что использовался алгоритм, использующий обычный двоичный код. В патенте говорится об использовании сверточного кода, а затем алгоритма Витерби для исправления ошибок, так что это может быть результатом этого. Что — то, что невозможно воссоздать без штатов, в которые я верю. Однако мне было бы интересно, сможете ли вы лучше интерпретировать патент.

Эта ссылка media состоит из 10 цифр, однако другие имеют 11 или 12.

Вот еще два примера необработанных расстояний, двоичный файл серой таблицы, а затем ссылка media:

000 011 011 101 100 010 010 111 011 001 100 001 101 101 011 000 010 011 110 101 000

111 100 110 001 110 101 101 000 011 110 100 010 110 101 100 111 111 101 000 111 000

Немного дополнительной информации: В Интернете есть несколько сообщений, описывающих, как вы можете закодировать любой текст, такой как spotify:playlist:HelloWorld, в код, однако это больше не работает.

Я также обнаружил через прокси-сервер, что вы можете использовать домен для получения обложки альбома трека над кодом. Это предполагает более тесную интеграцию Spotify’s API и этого scannables url, чем считалось ранее. Поскольку он не только хранит URIs и их коды, но также может проверять URIs и возвращать обновленную обложку альбома.

  • Неверный редирект URI для spotify

Я пытаюсь заставить Spotify API работать с AngularJS. Я получаю недопустимую ошибку перенаправления URI на этапе авторизации ( https://developer.spotify.com/web-api/authorization-guide/ ). Я добавил redirect_uri в белый список, и он работает, когда у меня есть URI, например http://localhost:3000.

Я пытаюсь реализовать spotify в своем приложении Android через Spotify Android Api, когда я пытаюсь получить маркер доступа, я получаю # вместо?, чтобы установить параметры GET в перенаправлении uri следующим образом.

Ваше подозрение было верным — они используют таблицу поиска. Для всех интересных технических деталей соответствующий патент доступен здесь: https://data.epo.org/публикация-server/rest/v1.0/publication-dates/20190220/patents/EP3444755NWA1/document.pdf

Очень интересная дискуссия. Меня всегда привлекали штрих-коды, поэтому мне пришлось взглянуть. Я провел некоторый анализ только штрих-кодов (не получил доступа к API для media ссылок) и думаю, что у меня есть основной процесс кодирования. Однако, основываясь на двух приведенных выше примерах, я не уверен, что у меня правильное отображение от media ref до 37-битного вектора (т. Е. Оно работает в случае 2, но не в случае 1). В любом случае, если у вас есть еще несколько пар, эта последняя часть должна быть простой для разработки. Дайте мне знать.

Для тех, кто хочет разобраться в этом, не читайте спойлеры ниже!

Оказывается, что основной процесс, описанный в патенте, является правильным, но ему не хватает деталей. Я подведу итог ниже, используя приведенный выше пример. На самом деле я проанализировал это в обратном порядке, поэтому я думаю, что описание кода в основном правильно, за исключением шага (1), т. Е. Я сгенерировал 45 штрих-кодов, и все они совпадали с этим кодом.

UPDATE: Я добавил декодер штрих-кода (уровней) (при условии отсутствия ошибок) и альтернативный кодер, который следует описанию выше, а не эквивалентному методу линейной алгебры. Надеюсь, это немного более ясно.

UPDATE 2: Избавился от большинства жестко закодированных массивов, чтобы проиллюстрировать, как они генерируются.

Метод линейной алгебры определяет линейное преобразование (spotify_generator) и маску для отображения 37-битного ввода в 60-битные сверточно закодированные данные. Маска является результатом сверточного кодирования 8-битного инвертированного CRC. spotify_generator-это матрица 37×60, которая реализует произведение генераторов для CRC (матрица 37×45) и сверточных кодов (матрица 45×60). Вы можете создать матрицу генератора из функции кодирования, применив эту функцию к каждой строке матрицы генератора соответствующего размера. Например, функция CRC, которая добавляет 8 бит к каждому 37-битному вектору данных, применяемому к каждой строке матрицы идентификаторов 37×37.

Похожие вопросы:

Я делаю приложение, которое содержит интеграцию spotify, я перешел по этой ссылке https:/ / developer.spotify.com/технологии / spotify-android-sdk / учебник / по ссылке этой ссылки мне поставили.

Я работаю над своим первым приложением, использующим ruby на rails, и столкнулся с несколькими проблемами при развертывании на Heroku. Когда я вхожу в Spotify в своем приложении, я получаю сообщение.

Я пытаюсь вытащить Spotify id из spotify uri (например, spotify:track:5xioIP2HexKl3QsI8JDlG8) Я знаю, что это должно быть довольно легко, но я, кажется, не могу ничего проверить на.

Я хотел бы использовать Echo Nest API, чтобы получить треки и воспроизвести их в Spotify, но я не смог найти хороший способ получить трек Spotify URI из трека Echo Nest ID. Одним из окольных путей.

Я хочу запустить поиск Spotify из приложения Spotify (чтобы найти треки для исполнителя, для которого у меня нет Spotify URI, только имя). Я не нашел функциональности в App API для запуска поиска.

Читать еще:  Hola для Chrome — где скачать, как установить и как с ним работать?

Я пытаюсь заставить Spotify API работать с AngularJS. Я получаю недопустимую ошибку перенаправления URI на этапе авторизации ( https://developer.spotify.com/web-api/authorization-guide/ ). Я добавил.

Я пытаюсь реализовать spotify в своем приложении Android через Spotify Android Api, когда я пытаюсь получить маркер доступа, я получаю # вместо?, чтобы установить параметры GET в перенаправлении uri.

Я пытаюсь сделать OmniAuth в rails 4 для spotify. Я почти получил его, но по какой-то причине перенаправление URI не работает. Я использую Devise с omniauth это мои файлы: User.rb class User <.

После того, как я войду в Spotify и подключу его к своему приложению, появится сообщение об ошибке: INVALID_CLIENT: недопустимое перенаправление URI. Я зарегистрировал свой редирект URI в Spotify и.

Я пытаюсь разрешить своему приложению входить в Spotify через поток кода авторизации . Я могу получить авторизацию code от Spotify на начальном этапе авторизации, но при попытке получить маркер.

Как спрятать мусор в базе Spotify и превратить это в квест

Опасный хакер прячет Spotify-код с секретной информацией

Опасный хакер прячет Spotify-код с секретной информацией

Введение

Одной бессонной ночью мы с приятелем разговорились о Spotify-кодах.

Это такие картинки, которые можно отсканировать приложением и попасть на нужный трек/альбом/плейлист. Придуманы они, чтобы люди могли делиться музыкой в социальных сетях или в оффлайне.

Пример. Такая грусть у меня играет прямо сейчас.

Пример. Такая грусть у меня играет прямо сейчас.

Мы решили разобраться, как же Spotify кодирует в них ссылки.

Как работают коды?

Выяснилось, что помимо меню «Поделиться» в приложении, есть официальный сайт Spotify Codes, который генерирует такие коды.

Если скопировать ссылку на картинку с этого сайта, получится что-то такое: https://scannables.scdn.co/uri/plain/jpeg/000000/white/640/spotify:track:5jxN9knH0vlfpN2Ft7a5xi

Прекрасно! Динамическая ссылка, которая принимает на вход ID трека и возвращает изображение с баркодом — самое то для наших экспериментов.

Очень удобно, что генератор может рисовать коды и в SVG. Это позволило без головной боли понять, что столбики бывают восьми разных высот.

Числа в поле height — высоты столбиков

Числа в поле height — высоты столбиков

Первый и последний столбик всегда минимального размера, так что он, видимо, используется для ориентирования при сканировании, как и логотип Spotify, который на картинке всегда слева. Без них ничего не работает.

Важные данные выделены красным

Важные данные выделены красным

Получив число 556205622371746371156, приложение превращает его в 58992959842 с помощью таблицы Грея. Именно это делает распознаванием таким быстрым и устойчивым к ошибкам. Как узнали? К этому моменту мы уже набрели на патент Spotify, описывающий принцип работы таких кодов.

Остался последний вопрос: как же приложение превращает лаконичное 58992959842 в spotify:track:5jxN9knH0vlfpN2Ft7a5xi?

Очевидно, такое число не может вместить в себя все комбинации длинного цифро-буквенного ID, а значит никакого алгоритма нет и соответствие между кодом и ID трека хранится где-то в базе.

Можно проверить, подсунув генератору какой-нибудь очень длинный мусор, который точно не влез бы в число: https://scannables.scdn.co/uri/plain/jpeg/000000/white/640/spotify:track:thisisaverylongidentifierwhichwoulddefinitelyoverflowthatnumericcode

Сработало. Печально, а ведь было интересно научиться кодировать/раскодировать такие картинки полностью самостоятельно.

Решила проверить обмен приложения с сервером в момент распознавания и догадка подтвердилась:

На сервер уходит 58992959842, а возвращается трек 5jxN9knH0vlfpN2Ft7a5xi

На сервер уходит 58992959842, а возвращается трек 5jxN9knH0vlfpN2Ft7a5xi

Скука: дальше всё происходит за ширмой бэкенда. Расходимся?

Оченьдлинныймусор

Стоп, что? Генератор сделал картинку для оченьдлинногомусора?

Вероятно, он не проверяет реальность входных данных и бережно складывает наш мусор в базу, присваивая ему 11-значный числовой ID.

Картинка с мусором из примера выше

Картинка с мусором из примера выше

А что будет, если считать такой код приложением?

Будет ошибка

Будет ошибка

Это ожидаемая реакция. Наверное, сервер уже проверил и инвалидировал некорректный код. Интересно посмотреть, как выглядит такая ошибка, поэтому загляну в трафик ещё раз:

Эм, что?

Эм, что?

Великолепно. Spotify складывает в базу всё, что мы укажем в запросе к генератору, хранит это там, а при сканировании отдаёт обратно в первозданном виде, никак не валидируя.

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

Всё лучше под музыку

Чтобы всё было аккуратно, нужно заставить приложение играть музыку, несмотря на чужеродные данные в ID трека.

Я уже собралась реверсить обфусцированный код Android-приложения, чтобы узнать, как работает парсер, но приятель предложил попробовать разделять музыкальный ID и нашу полезную нагрузку знаком вопроса. Идея сработала, но знак пришлось дважды пропустить через urlencode. Например, spotify:track:2ctvdKmETyOzPb2GiJJT53%253Fhi,habr!, выглядит вот так:

Код с двойным дном

Код с двойным дном

Такой код приложение считает как положено и включит песню, а посмотрев в трафик можно достать спрятанные данные, что и стало корнем моего квеста. Для удобства можно закодировать данные в Base64, влезет в URL их немало.

Выводы

Почему Spotify позволяет хранить в базе мусор? Вероятно, потому что генерацией и распознаванием кодов занимается отдельный микросервис, который должен отвечать моментально. Проверка на существование трека потребовала бы обращения к основному бэкенду, а это ресурсоёмкая задача.

Навредит ли это Spotify? Теоретически эта особенность позволяет заполнить таблицу соответствий кодов и исчерпать всю ёмкость, сломав генерацию картинок для настоящих треков, но на практике это займёт очень много времени. Я посчитала.

Полезно ли это на практике? Не знаю, как это использовать. Можете прятать номера телефонов любовниц в кодах с Егором Летовым и обклеивать ими стены, тогда ваша законная женщина покинет вас, сочтя сумасшедшим, будете свободны. Только имейте в виду, что запрос к API для считывания кода, к сожалению, требует авторизационный токен Spotify-аккаунта, в отличие от запроса для генерации картинки.

Читать еще:  Как проверить температуру компьютера

Оригинальный квест был здесь, послание было в Base64. Кто-то прошёл его за 42 минуты. На большее я не рассчитывала: имеющие привычку лезть в трафик приложений догадались бы сразу.

Помогал думать, предполагал хранение кодов в базе и решил добавить в ID знак вопроса приятель Эль.

Как спрятать мусор в базе Spotify и превратить это в квест

Опасный хакер прячет Spotify-код с секретной информацией

Опасный хакер прячет Spotify-код с секретной информацией

Введение

Одной бессонной ночью мы с приятелем разговорились о Spotify-кодах.

Это такие картинки, которые можно отсканировать приложением и попасть на нужный трек/альбом/плейлист. Придуманы они, чтобы люди могли делиться музыкой в социальных сетях или в оффлайне.

Пример. Такая грусть у меня играет прямо сейчас.

Пример. Такая грусть у меня играет прямо сейчас.

Мы решили разобраться, как же Spotify кодирует в них ссылки.

Как работают коды?

Выяснилось, что помимо меню «Поделиться» в приложении, есть официальный сайт Spotify Codes, который генерирует такие коды.

Прекрасно! Динамическая ссылка, которая принимает на вход ID трека и возвращает изображение с баркодом — самое то для наших экспериментов.

Очень удобно, что генератор может рисовать коды и в SVG. Это позволило без головной боли понять, что столбики бывают восьми разных высот.

Числа в поле height — высоты столбиков

Числа в поле height — высоты столбиков

Первый и последний столбик всегда минимального размера, так что он, видимо, используется для ориентирования при сканировании, как и логотип Spotify, который на картинке всегда слева. Без них ничего не работает.

Важные данные выделены красным

Важные данные выделены красным

Получив число 556205622371746371156, приложение превращает его в 58992959842 с помощью таблицы Грея. Именно это делает распознаванием таким быстрым и устойчивым к ошибкам. Как узнали? К этому моменту мы уже набрели на патент Spotify, описывающий принцип работы таких кодов.

Остался последний вопрос: как же приложение превращает лаконичное 58992959842 в spotify:track:5jxN9knH0vlfpN2Ft7a5xi?

Очевидно, такое число не может вместить в себя все комбинации длинного цифро-буквенного ID, а значит никакого алгоритма нет и соответствие между кодом и ID трека хранится где-то в базе.

Сработало. Печально, а ведь было интересно научиться кодировать/раскодировать такие картинки полностью самостоятельно.

Решила проверить обмен приложения с сервером в момент распознавания и догадка подтвердилась:

На сервер уходит 58992959842, а возвращается трек 5jxN9knH0vlfpN2Ft7a5xi

На сервер уходит 58992959842, а возвращается трек 5jxN9knH0vlfpN2Ft7a5xi

Скука: дальше всё происходит за ширмой бэкенда. Расходимся?

Оченьдлинныймусор

Стоп, что? Генератор сделал картинку для оченьдлинногомусора?

Вероятно, он не проверяет реальность входных данных и бережно складывает наш мусор в базу, присваивая ему 11-значный числовой ID.

Картинка с мусором из примера выше

Картинка с мусором из примера выше

А что будет, если считать такой код приложением?

Будет ошибка

Будет ошибка

Это ожидаемая реакция. Наверное, сервер уже проверил и инвалидировал некорректный код. Интересно посмотреть, как выглядит такая ошибка, поэтому загляну в трафик ещё раз:

Эм, что?

Эм, что?

Великолепно. Spotify складывает в базу всё, что мы укажем в запросе к генератору, хранит это там, а при сканировании отдаёт обратно в первозданном виде, никак не валидируя.

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

Всё лучше под музыку

Чтобы всё было аккуратно, нужно заставить приложение играть музыку, несмотря на чужеродные данные в ID трека.

Я уже собралась реверсить обфусцированный код Android-приложения, чтобы узнать, как работает парсер, но приятель предложил попробовать разделять музыкальный ID и нашу полезную нагрузку знаком вопроса. Идея сработала, но знак пришлось дважды пропустить через urlencode. Например, spotify:track:2ctvdKmETyOzPb2GiJJT53%253Fhi,habr!, выглядит вот так:

Код с двойным дном

Код с двойным дном

Такой код приложение считает как положено и включит песню, а посмотрев в трафик можно достать спрятанные данные, что и стало корнем моего квеста. Для удобства можно закодировать данные в Base64, влезет в URL их немало.

Выводы

Почему Spotify позволяет хранить в базе мусор? Вероятно, потому что генерацией и распознаванием кодов занимается отдельный микросервис, который должен отвечать моментально. Проверка на существование трека потребовала бы обращения к основному бэкенду, а это ресурсоёмкая задача.

Навредит ли это Spotify? Теоретически эта особенность позволяет заполнить таблицу соответствий кодов и исчерпать всю ёмкость, сломав генерацию картинок для настоящих треков, но на практике это займёт очень много времени. Я посчитала.

Полезно ли это на практике? Не знаю, как это использовать. Можете прятать номера телефонов любовниц в кодах с Егором Летовым и обклеивать ими стены, тогда ваша законная женщина покинет вас, сочтя сумасшедшим, будете свободны. Только имейте в виду, что запрос к API для считывания кода, к сожалению, требует авторизационный токен Spotify-аккаунта, в отличие от запроса для генерации картинки.

Оригинальный квест был здесь, послание было в Base64. Кто-то прошёл его за 42 минуты. На большее я не рассчитывала: имеющие привычку лезть в трафик приложений догадались бы сразу.

Помогал думать, предполагал хранение кодов в базе и решил добавить в ID знак вопроса приятель Эль.

UPD: утром 15 сентября, то есть спустя всего сутки после публикации, Spotify исправил ошибку.

Больше генератор кодов не принимает мусор, теперь работают только подходящие по формату ID.

Это очень обидно, потому что я думала, что им плевать и они сочтут это фичей. Могла бы в Bug Bounty податься 🙁

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты