Soundcloud 几乎是一个纯 JS 网站。
正如你所说,没有用 HTML 加载的歌曲的 ID。识别歌曲的方式是通过页面 URL。是通过。此网址(示例):
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
这将返回如下内容:
{"status":"302 - Found","location":"https://api.soundcloud.com/tracks/100270342?client_id=YOUR_CLIENT_ID"}
接下来,它从上面的 JSON 加载位置 URL。这会返回一堆关于轨道的信息,包括:
stream_url: "https://api.soundcloud.com/tracks/100270342/stream"
然后它加载这个 URL:
https://api.sndcdn.com/i1/tracks/100270342/streams?client_id=YOUR_CLIENT_IT
它返回如下响应:
{"http_mp3_128_url":"https://ec-media.soundcloud.com/2gNVBYiZ06bU.128.mp3?ff61182e3c2ecefa438cd021sdf02d0e385713f0c1faf3b0339595664fe070de810d30a8e3a1186eda958909e9ed97799adfeceabc135efac83aee4271217a108450591db3b88\u0026AWSAccessKeyId=AKIAsdfJ4IAZE5EOIdsf7PA7VQ\u0026Expires=1374883403\u0026Signature=%2B1%2B7dfdfLN4NWP3C3bNF3gizSEVIU%3D"}
这就是他们隐藏流 URL 的方式。唯一不明显的部分是他们通过使用 URL 作为参数访问 API 来找到歌曲 ID。支持它的轨道上的下载 URL 也可以这样做。