GDG. 20.02. Обход ограничений VK Audio API на iOS

Содержание

Слайд 2

С чего всё началось?

С чего всё началось?

Слайд 3

Изучение API соцсетей

Изучение API соцсетей

Слайд 4

https://vk.com/dev/audio_api Audio api VK недоступно с конца 2016 г.

https://vk.com/dev/audio_api

Audio api VK недоступно с конца 2016 г.

Слайд 5

Пути обхода ограничения 1. При обращении к API использовать id официальных

Пути обхода ограничения

1. При обращении к API использовать id официальных

приложений VK
(пользоваться привилегированным API)
2. Делать запросы аналогично браузеру.
https://habr.com/post/340810/
Слайд 6

Общая идея Использовать webView для авторизации на официальном сайте Сохранять Cookie

Общая идея

Использовать webView для авторизации на официальном сайте
Сохранять Cookie после авторизации
Используя

полученные Cookie делать запросы к audio api аналогично браузеру
Слайд 7

Реализация

Реализация

Слайд 8

Авторизация

Авторизация

Слайд 9

Хранение Cookie

Хранение Cookie

Слайд 10

WKWebView

WKWebView

Слайд 11

Сокрытие WebView и парсинг ownerID в методах WKNavigationDelegate

Сокрытие WebView и парсинг ownerID в методах WKNavigationDelegate

Слайд 12

Пример HTML после успешной авторизации

Пример HTML после успешной авторизации

Слайд 13

Дебажим Audio API с помощью Google Chrome Chrome Developer Tools

Дебажим Audio API с помощью Google Chrome

Chrome
Developer Tools

Слайд 14

Инструменты разработчика в Google Chrome

Инструменты разработчика в Google Chrome

Слайд 15

Запросы к “al_audio.php”

Запросы к “al_audio.php”

Слайд 16

Запрос для поиска

Запрос для поиска

Слайд 17

Делаем запросы через Postman

Делаем запросы через Postman

Слайд 18

Результат запроса

Результат запроса

Слайд 19

Парсим HTML

Парсим HTML

Слайд 20

JSON плейлиста

JSON плейлиста

Слайд 21

Парсим модель аудиозаписи audioplayer.js

Парсим модель аудиозаписи

audioplayer.js

Слайд 22

Получения URL аудиозаписей при поиске

Получения URL аудиозаписей при поиске

Слайд 23

Воспроизводим полученный URL https://vk.com/mp3/audio_api_unavailable.mp3?extra=AdnUouu1swuWsLHMAx04Efi1DtD1Bxq3B25HmuHvwJfdBZDPv3blCePHywuXzc1Yve44rxztxZvtzgrbohu1ueP6y2vHCgeWtJLlzfyZDc1YEuvKDha5Ev92vMvrnhn2A2DZzMv4yY8OlLyUtdnMnLG9vvjgBKnOuKWZudvnoxjtsdeVrNnVzhnMDM5Hzwnfq2vYx1qVsOHxv1DWqxzLDdriv2nctZ9IAMG6wxmWBvPgvs5vCtvgovrnt3riB1eTuwjfDM5lsNvesxrZBhrUl1f3BW#AqS4mdy

Воспроизводим полученный URL

https://vk.com/mp3/audio_api_unavailable.mp3?extra=AdnUouu1swuWsLHMAx04Efi1DtD1Bxq3B25HmuHvwJfdBZDPv3blCePHywuXzc1Yve44rxztxZvtzgrbohu1ueP6y2vHCgeWtJLlzfyZDc1YEuvKDha5Ev92vMvrnhn2A2DZzMv4yY8OlLyUtdnMnLG9vvjgBKnOuKWZudvnoxjtsdeVrNnVzhnMDM5Hzwnfq2vYx1qVsOHxv1DWqxzLDdriv2nctZ9IAMG6wxmWBvPgvs5vCtvgovrnt3riB1eTuwjfDM5lsNvesxrZBhrUl1f3BW#AqS4mdy

Слайд 24

Расшифровка URL audioplayer.js

Расшифровка URL

audioplayer.js

Слайд 25

Модификация js кода https://habr.com/post/340810/

Модификация js кода

https://habr.com/post/340810/

Слайд 26

Класс для дешифрования

Класс для дешифрования

Слайд 27

Воспроизводим полученный URL после дешифрования https://cs3-8v4.vkuseraudio.net/p1/79c4fca6e60d0e.mp3?extra=ZrQA8j98KS7VOqJAHTFlUxwBqjweo7Las3yGYfMBhkk6EtxjtfGfH7wNCusfH2-ibxxZfNC5b-SvqJkY4hZ1NDQDHUoA3AMNOyGTC3-1KlOn3ScFo4rs04FetwmnEBZNEjy7mwlBHqbegPArZZAy

Воспроизводим полученный URL после дешифрования

https://cs3-8v4.vkuseraudio.net/p1/79c4fca6e60d0e.mp3?extra=ZrQA8j98KS7VOqJAHTFlUxwBqjweo7Las3yGYfMBhkk6EtxjtfGfH7wNCusfH2-ibxxZfNC5b-SvqJkY4hZ1NDQDHUoA3AMNOyGTC3-1KlOn3ScFo4rs04FetwmnEBZNEjy7mwlBHqbegPArZZAy

Слайд 28

Слайд 29

Команда поддержки

Команда поддержки

Слайд 30

Слайд 31

Приложение Возможности: Воспроизведение музыки аккаунта ВК Глобальный поиск музыки Аудиозаписи друзей

Приложение

Возможности:
Воспроизведение музыки аккаунта ВК
Глобальный поиск музыки
Аудиозаписи друзей
Возможность скачивания музыки
Возможность добавления и

удаления музыки в аккаунт ВК
В перспективе:
Продление Cookie (пока живут около суток)
Рекомендации музыки ВК
Более гибкая настройка плеера (рандомная очередь например)