![image](https://habrastorage.org/getpro/habr/post_images/a3b/fc9/ece/a3bfc9ece3d4932cbe04227f4193fc14.gif)
N.B. Сразу хочу внести поправку. Дело в том, что аудиоматериал с серверов muz.ru можно получить в качестве 128 kb/s. Поэтому данная методика будет актуальна лишь для аудиокниг, нежели для композиций.
Для чего всё это было нужно?
Ответ очень прост — для интереса. Дело в том, что на представленном сайте используется собственный flash аудиопроигрыватель, который в каких-то случаях ведёт себя гуманно, а в каких-то нет. Поясню почему. Этот проигрыватель какие-то аудиозаписи воспроизводит в полном объёме, а какие-то насильно урезает до 30 секунд. По композициям, которые урезаются, сказать ничего не могу, а вот по аудиокнигам да — они все урезаны до 30 секунд. Вот поэтому я и решил разобраться что к чему.
Как получить файл
Сначала я решил поизучать их flash аудиопроигрыватель. Выдернул с сайта, отдебажил, но ничего путного не увидел и поэтому решил бросить эту затею по распотрашению подозреваемого и начать исследовать GET и POST запросы от/к серверу.
Для того, чтобы получить информацию о треке, надо отправить POST запрос по адресу muz.ru/Services/Player2.asmx/GetTrackInfo и в качестве передаваемого параметра указать номер трека:
![](https://habrastorage.org/storage2/d63/1ed/a93/d631eda9378a466d6f853f61488f63bd.png)
Ответ не заставит себя долго ждать и в результате мы получаем вот такое:
![](https://habrastorage.org/storage2/ffc/541/fd8/ffc541fd857a818ff151763cb60bdd3f.png)
Нас будет интересовать параметр FirstTouchGuid. Хочу отметить, что этот параметр уникальный и при каждом новом обращении к серверу он меняется. Затем, для получения Id ссылки нам необходимо отправить запрос по адресу:
h**p://fs.muz.ru/handlers/link.ashx?f=FirstTouchGuid
В результате чего нам вернётся такой же уникальный Id из которого мы уже сможем сформировать окончательную ссылку на аудиозапись. Сама же ссылка будет иметь такой вид:
h**p://fs.muz.ru/handlers/audio.ashx?f=downloadLinkId
По итогу, мы сможем сохранить файл audio.ashx, который есть ни что иное, как mp3:
![](https://habrastorage.org/storage2/9a6/1e1/298/9a61e1298cdd738d8bc77c9ffe227074.png)
Автоматизация процесса
Я набросал простейший код на C#, который позволяет продемонстрировать всё выше сказанное. Выглядит этот код в оконном виде следующим образом:
![](https://habrastorage.org/storage2/5ca/093/5aa/5ca0935aa602a6aecc6e2f9cd1bc5b44.png)
Исходный код оконного вида: pastebin.com/E09zNKPS
P.S. Все эти мои домыслы имеют исключительно познавательный характер. Считаю правильным хранить аудиозаписи на сервере урезанные хардкорным способом до длительности в 30 секунд, а не изобретать проигрыватели, которые могут лишь скрыть от пользователя часть аудиозаписи. Писал администрации сайта еще около года назад, но всемогущественный игнор оказался таким всемогущественным.
Спасибо вам, что уделили внимание прочтению данного поста. Всем удачного дня!