soundcloud如何隐藏流式音频的URL

Jac*_*sor 17 javascript audio html5 soundcloud

我试图隐藏我的HTML5播放器的音频流的URL,并且真的很难想到这样做的方法然后我意识到,soundcloud必须隐藏其流的URL.所以我进入了soundcloud,打开了控制台并播放了一首曲目,但是我看不到隐藏URL的任何明显方式.在此之后,我看了一下DOM树,看看那里是否有任何类型的音频信息,但我一无所获!甚至没有播放器/音频的ID,所以我对soundcloud如何做到这一点非常困惑.

现在我已经尽可能地隐藏了音频URL.我在轨道的DOM中放置了一个ID,在单击播放按钮时获取了该ID,并从数据库中检索了该ID的URL.显而易见的问题是,任何有意愿的人都可以直接进入控制台并从网络事件中获取URL.

我不是试图突破soundcloud的安全性来下载我不应该的曲目.我只是好奇他们是如何隐藏URL的.现在我也很好奇每个轨道是如何区分的,因为DOM中没有任何东西可以区分它们(不是我在简短的表面上找到的).

那么,简而言之,有没有人对soundcloud如何实现这一目标或如何实现这一点有任何想法?

sca*_*an_ 20

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作为参数的API来找到歌曲ID.在支持它的轨道上下载URL也可以这样做.

  • @Kassem - 这对我来说是可以流传的.我刚刚创建了这个soundcloud下载程序:https://gist.github.com/calvin-nt/6629464 - 使用它如下:python sc_dl.py soundcloud.com/ymcmbofficial/lil-wayne-ft-drake-and-未来 - 它需要python请求. (2认同)