How has soundcloud hidden the URL of streaming audio

前端 未结 3 403
星月不相逢
星月不相逢 2020-12-13 01:23

I am trying to hide the URL of my audio streams for my HTML5 player and was really struggling to think of a way to do so and then I realised, soundcloud must hide the URL\'s

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-13 01:48

    Soundcloud is pretty much a pure JS site.

    As you said, there is no ID of the song loaded with the HTML. The way songs are recognized is by the page URL. The is done via. this url (example):

    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

    This returns something like this:

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

    Next up it loads the location URL, from the JSON above. This returns a bunch of information about the track, including:

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

    Then it loads this URL:

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

    Which returns a response like this:

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

    So that's how they hide their stream URL's. The only non obvious part is that they find the song ID, by hitting an API with the URL as a parameter. Same can be done with download URL's on tracks that support it.

提交回复
热议问题