您的位置:首页 > 其它

非vip用户下载虾米音乐的方法

2012-04-29 12:04 337 查看
         虾米音乐网站上有很多高品质的音乐和精心组织的精选集,但普通用户只能试听,不能下载,下载的话需要使用“米”,这个“米”除了极少数的新手任务可以获得之外,基本上都要靠付费来购买,很多人没有网银或者没有银行卡,支付相当不方便。对于普通用户,既想把音乐放到手机或者mp3里欣赏,又不愿反复折腾的话,如何找到下载链接把歌曲下载下来呢?让我们来研究一下虾米音乐网站的代码逻辑。

打开一个精选集:

 


        我们来看一下这个网页的源码,找到第一首歌曲Iris and Jasper –Hans Zimmer部分的html代码,搜索Iris andJasper即可:

 


        懂html的可以看看,其实也不需要理解,这段代码大体上看来点击试听的时候,调用了一个js函数play,参数有三个,很明显第一个是歌曲id,后面两个不知道是做什么用,但这没有什么影响,我们来继续看看play函数的代码:

 


        这段js代码非常简单,懂点程序的人都能看出来,最后的结果就是:/song/playlist/id/+第一个参数+/object_name/+第二个参数+/object_id/+第三个参数,第一个参数是百分百有的,第二个如果不存在,则为default,第三个如果不存在,则为0。因为没有特殊字符,所以那个escape函数的作用可以忽略。然后前面再拼上虾米的网址http://www.xiami.com就得到一个url链接:http://www.xiami.com/song/playlist/id/2562206/object_name/collect/object_id/11060023,这么简单?这就是歌曲链接?No,显然没那么容易,我们把这个地址复制到浏览器访问一下看看返回什么内容:

 


        是一段xml,看起来这才是歌曲的真正信息,刚才的url就是用歌曲id等来请求歌曲信息的方法,从xml里可以看到歌曲信息和播放背景歌词地址专辑图片等内容。那么歌曲的下载地址到底在哪里呢?xml里并没有歌曲的url。仔细看xml,有个location看着很可疑,看起来是一段加密过的内容,怎么解密呢?这段解密代码在js里找不到。不用担心,网上已经有现成的解密方法了,浏览器打开http://www.winhex32.com/xiami/


 

        把location里的那段加密后的字符串复制到输入框里,输入验证码,点击尝试解码,ok,看到了吗?完整的mp3下载链接就出来了,直接复制到浏览器或者迅雷里下载吧~~

 

总结一下不懂技术的话,大体上怎么操作:

1.打开一个歌曲的页面,查看源文件

2.ctrl+f打开搜索框,输入“play(”,不包括引号,就可以找到每一首歌曲的play函数,记下函数的几个参数。

3.根据上面提到的规则,http://www.xiami.com/song/playlist/id/+第一个参数+/object_name/+第二个参数+/object_id/+第三个参数,得到歌曲信息的获取路径,比如http://www.xiami.com/song/playlist/id/2562206/object_name/collect/object_id/11060023,用浏览器打开这个路径,得到一段xml文本内容。

4.把xml里的location段里的加密内容复制,打开www.winhex32.com/xiami,粘贴进去,输入验证码解密,就可以得到mp3文件的下载路径了。

 

这个解密算法,以后有空再分析。

本博文仅供技术交流,请勿用于商业目的,否则后果自负。有兴趣的话欢迎跟帖讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息