2013-07-26 14 views
15

Próbuję ukryć adres URL moich strumieni audio dla mojego odtwarzacza HTML5 i naprawdę zastanawiałem się, jak to zrobić, a potem zrozumiałem, że soundcloud musi ukryć adres URL ich strumienie. Więc poszedłem na soundcloud, otworzyłem konsolę i zagrałem kawałek, ale nie widziałem żadnego oczywistego sposobu ukrywania adresu URL. Po tym zajrzałem do drzewa DOM, aby sprawdzić, czy jest tam jakiś rodzaj informacji audio, ale nic nie znalazłem! Nie ma nawet identyfikatora dla odtwarzacza/audio, więc jestem bardzo zdezorientowany, jak to zrobił soundcloud.W jaki sposób SoundCloud ukrył adres URL strumienia audio?

Teraz zrobiłem wszystko, co było w mojej mocy, ukrywając dźwiękowy URL. Umieściłem identyfikator w DOM dla utworu, otrzymałem ten identyfikator po kliknięciu przycisku odtwarzania i otrzymałem adres URL dla tego identyfikatora z bazy danych. Oczywistym problemem jest to, że każdy chętny może po prostu przejść do konsoli i uzyskać adres URL ze zdarzeń sieciowych.

Nie próbuję przekroczyć zabezpieczeń SoundCloud, aby pobrać utwory, które nie powinny być. Jestem ciekawy, jak ukryli adres URL. Teraz jestem również ciekawy, jak każdy utwór jest wyróżniany, ponieważ nie ma w nim nic wyróżniającego je (nie, że znalazłem to na moim krótkim wyglądzie).

Krótko mówiąc, czy ktoś ma pomysły na to, jak SoundCloud to osiągnął lub jak można to osiągnąć?

Odpowiedz

19

Soundcloud to w zasadzie czysta strona JS.

Jak już wspomniano, nie ma identyfikatora utworu załadowanego kodem HTML. Sposób rozpoznawania utworów jest zgodny z adresem URL strony. Wykonuje się przez. Ten adres URL (przykład):

https://api.sndcdn.com/resolve?url=https%3A//soundcloud.com/hoodinternet/joywave-tongues-hood-internet-remix&_status_code_map%5B302%5D=200&_status_format=json&client_id=YOUR_CLIENT_ID

ta zwraca coś takiego:

{"status":"302 - Found","location":"https://api.soundcloud.com/tracks/100270342?client_id=YOUR_CLIENT_ID"}

Następny się ładuje URL lokalizacji, z JSON powyżej. Zwraca kilka informacji o utworze, w tym:

stream_url: "https://api.soundcloud.com/tracks/100270342/stream"

Następnie ładuje ten URL:

https://api.sndcdn.com/i1/tracks/100270342/streams?client_id=YOUR_CLIENT_IT

Które zwraca odpowiedź tak:

{"http_mp3_128_url":"https://ec-media.soundcloud.com/2gNVBYiZ06bU.128.mp3?ff61182e3c2ecefa438cd021sdf02d0e385713f0c1faf3b0339595664fe070de810d30a8e3a1186eda958909e9ed97799adfeceabc135efac83aee4271217a108450591db3b88\u0026AWSAccessKeyId=AKIAsdfJ4IAZE5EOIdsf7PA7VQ\u0026Expires=1374883403\u0026Signature=%2B1%2B7dfdfLN4NWP3C3bNF3gizSEVIU%3D"}

W ten sposób ukrywają swoje adresy URL strumienia. Jedyną nieoczywistą częścią jest to, że odnajdują identyfikator piosenki, naciskając interfejs API z adresem URL jako parametrem. To samo można zrobić z adresami URL pobierania na obsługiwanych ścieżkach.

+1

niektóre dźwięki nie są przesyłane strumieniowo? to jest przykład http://soundcloud.com/ymcmbofficial/lil-wayne-ft-drake-and-future jakiegokolwiek rozwiązania? – Kassem

+2

@Kassem - To jest możliwe do przesłania dla mnie. Zrobiłem tego downloader SoundCloud jakiś czas temu: https://gist.github.com/calvin-nt/6629464 - Użyj go tak: python sc_dl.py soundcloud.com/ymcmbofficial/lil-wayne-ft-drake-and- przyszłość - wymaga zapytań o pythona. –

+0

dzięki @scandinavian_ Nie jestem zaznajomiony z pyhon, ale jak rozumiem, to URL streaming dla tej piosenki będzie https://api.sndcdn.com/i1/tracks/73544191/streams?client_id= próbowałem używanie przeglądarki z moim identyfikatorem klienta, ale daje zakaz 403. dowolny pomysł? – Kassem

2

Jeśli masz SoundCloud.com i otworzysz swój debugger (Chrome jest tym, czego używam). Spójrz na kartę "Sieć", a zobaczysz skrypt wywołujący dźwięk? Anonymous_id #########.

Jest to zbudowane jak wywołanie REST, co oznacza, że ​​przekazują id do usługi na zapleczu, i która zwraca anonimowo dźwięk wyjściowy.

0
+0

Och po sprawdzeniu powyższego adresu URL zorientował się, że adres URL nie jest ograniczony. :RE –

Powiązane problemy