豆瓣FM的歌曲的播放地址探究

2012-12-10 20:54:54 +08:00
 xingzhi
豆瓣fm一个很好玩的地方就是它的随机性,
但通过“分享”功能,是可以找到一首歌曲的播放地址

于是我想探讨一下如何找出具体歌曲的播放地址。

例如:
许巍-蓝莲花
http://douban.fm/?start=617730g07d8g1000190&cid=1000190
(复制到新窗口打开)

打开后你能看到播放了蓝莲花,channel是: 陈医生的病人。
(在这里是可以伪造channel, 更改cid的值和start最后的数字,就可以指定channel了。这是题外话)

去掉channel,也是可以播放歌曲的
http://douban.fm/?start=617730g07d8g

617730是该歌曲的id, 我发现有两种方法可以查到该id:

1. 查看localStroage, "bubbler_song_info" 的值已经包含了该歌曲的id和播放地址, 但这种方法必须在播放该歌曲时才能使用。



2. 去该专辑页面,查看源码。



所以, 一首歌曲的地址就是:
http://douban.fm/?start=歌曲id+6位数随机码

通过对一些歌曲的分析,我发现随机码还是有一定规律的。
这个6位数随机码,前后必定是小写g.(大家可以测试一下)
因此, 破解一个歌曲地址的难点,就在于随机码中间的四位了。

我觉得,从数据储存的角度来看, 每首歌曲的数据库记录,很低可能会储存一个随机数, 而豆瓣开始做电台时,也应该没考虑播放具体歌曲的功能的(也有可能是后来再统一生成随机数给每首歌曲)。
再从各首歌的随机数前后都是g可以推测,这个随机数有可能是把某些歌曲信息作为input让某个算法去生成的。

那么, 该如何破解随机数的中间四位呢? 大家不妨探讨下:)
5010 次点击
所在节点    问与答
4 条回复
xingzhi
2012-12-12 10:45:57 +08:00
居然等不到一个回复。。。难道没人对这个东西感一点点兴趣么 T T
andy12530
2012-12-12 10:48:39 +08:00
@xingzhi 破解了,然后呢。豆瓣电台那音质64K,木有啥利用价值吧。
xingzhi
2012-12-12 10:54:25 +08:00
@andy12530 倒不是想说继续利用, 想解决这个问题最大的原因也仅仅是因为好奇心而已。

如果勉强是要说利用价值的话, 知道每个歌曲的播放页面后,
不就可以打造属于自己的豆瓣电台歌单了么——虽然这有悖于豆瓣fm的初衷。
xingzhi
2013-02-26 17:32:39 +08:00
旧帖子,贴上我的新发现。 做个备注。

豆瓣FM pro 推出了新功能,可以下载歌曲。

下载链接如: http://douban.fm/j/pro/download?id=60932&ssid=d7e6

而通过查看localStroage, 发现我在帖子上说的 “随机码中间的四位” 恰好和该链接的ssid值是一样的。

证实了我前文所说的一点, “g” 是必然会出现的。
而该ssid, 也有可能是类似于数据库中id的性质,有可能是完全随机而不可算的。

因此,结贴。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/54570

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX