javascript - soundcloud 如何隐藏流媒体音频的 URL

标签 javascript html audio soundcloud

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

到目前为止,我已尽我所能隐藏音频 URL。我在轨道的 DOM 中放置了一个 ID,单击播放按钮时获得了该 ID,并从数据库中检索了该 ID 的 URL。这样做的明显问题是,任何愿意的人都可以直接转到控制台并从网络事件中获取 URL。

我并没有试图突破 soundcloud 的安全性来下载我不应该下载的轨道。我只是好奇他们是如何隐藏 URL 的。现在我也很好奇每条轨道是如何区分的,因为 DOM 中没有任何东西可以区分它们(无论如何我在简短的查看中都没有发现)。

所以,简而言之,有人对 soundcloud 如何实现这一点或如何实现这一点有任何想法吗?

最佳答案

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 也可以这样做。

关于javascript - soundcloud 如何隐藏流媒体音频的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17892702/

相关文章:

java - 使两个线程继续在后台运行

python - 如何在 Python 中将 WAV 从立体声转换为单声道?

javascript - 垃圾回收和 DocumentFragment

html - 标题栏中的右侧元素未垂直居中。 float :right'ed items seem to not inherit *ed properties

audio - 使用 lame 将 wav 的所有子文件夹和文件批量转换为 mp3

html - CSS 特定表

javascript - 无法使用 jQuery 自定义内容滚动条将自定义滚动条添加到 iframe?

javascript - 对象赋值正在改变值

javascript - 如何在 React JSX 中添加空格

javascript - js在ajax本身回调后停止点击函数后续执行