如何下载在线播放的mp3音乐

我曾经信奉一个信条:所有能在线能播放的音乐试图不让你下载都是扯蛋。

虽然这话有很大的片面性和主观性。但对于一个技术人员来讲,把在线播放的mp3音乐下载下来确实不是什么难事,至少在当前比较流行的几个音乐网站上的我还没有遇到不能“想办法”下载的。也许你要开始吐槽“you can you up, no can no bb”了。好了,说正事儿。有两种办法:

1.[简单]手动下载

  • 使用chrome或者firefox等调试功能高级一些的浏览器。
  • 打开指定的歌曲播放页
  • 打开开发者工具调试窗口,切到网络(network)那个页签,准备查看网络情况
  • 点击播放歌曲,查看新增的网络连接如果看到一个长得像mp3音频连接,说明就是歌曲的真实地址了。在新窗口打开那个地址就可以下载了。

2.[高级]程序下载

但是有些网站或者音乐电台采用了flash播放器,它们播放歌曲时的网络连接有时就不能被浏览器的调试工具所捕获到。这时候就要采用高级点的办法了。

  • 下载播放器的flash文件(一般是个swf文件)
  • 使用actionscript反编译软件反编译下载的播放器flash文件
  • 看源码。一般会在某个文件的开头定义一堆请求歌曲信息的api的url链接的常量
  • 大致分析一个代码,即可得知如何取得歌曲音频文件真实地址。
  • 使用第一种方式下载想要的歌曲或者自己写个批量程序(或工具)下载

3.其它方式

有些网站既没有使用flash也在调试器里看不到歌曲真实地址怎么办?

其实只要你细心,用调试器去看它的一些dom元素特殊及网页的js代码,总能发现它的请求规律的。尤其现在web体验发展迅速,大部分网站已经放弃了使用flash播放器来播放歌曲,其实这样反而方便了我们来做这些“猥琐”之事,:)毕竟用蹩脚的软件反编译flash,看一大堆乱七八糟的代码比用高级的网页调试器看代码找规律要烦的多。

关于下载在线播放的歌曲

我做了一个在线工具,用来获取虾米和新浪乐库上歌曲的真实下载地址。现在想起来其实完全没有必要这么“麻烦”,因为其实现在大部分歌曲都是可以在网上下载到,既然在你在线听的地方不能下,到别的地方总是可以下载到的。所以我讲的这几个方法只是从技术的角度去探讨这个问题,前面提到的我写的这个在线工具也只是个demo性质的,大家试一下就好,因为真的挺慢(租的服务器太低档)。而且人家不让你下你就别去硬下了,换个地方就行了,比如手机端的音乐播放器都支持,至少网易音乐任何音乐都可以下(网页端不开放下载)。