爬虫之“QQ音乐”

一直想拿QQ音乐来练练手,毕竟QQ音乐很多内容是要付费下载的,所以我就想写一个爬虫来爬取我想要的歌曲。今天花了大概一个多钟把它写出来了。

在开始今天内容之前,我想说的是这种涉及到付费内容下载的爬虫程序我是不会给的,也就是说不会上传代码到任何平台给人下载。因为付费内容这个涉及到别人的利益,不管是音乐人,作家等等他们都是辛辛苦苦创作的,我得尊重他们汗水!

所以这篇文章不会展示任何代码,那怎么看这篇文章?

当然不会只看气质啦,我还会讲解下思路滴。包括我是怎么被QQ音乐的工程师气疯的。

界面我也写好了,是这样滴:

只要在网页上找到一首歌的主页:比如我很喜欢的《let her go》

然后复制链接到下载器,选好保存路径,写好名字(后缀.mp3),点击开始下载就可以了

下载好的歌曲:

厉害吧!

可是我写这个爬虫就觉得我是智障!!!!!

智商被腾讯的工程师侮辱,没有人性的侮辱!!!!!

至于如何侮辱,且听我慢慢到来!

嗯,要下载网页中的歌曲,就先得找到歌曲的链接。好的,我来找。

在上面的歌曲我们点击播放,进入播放页面(我用的是火狐浏览器),接着按F12进入开发者模式,按F5刷新,好的,我们在下面的开发者工具栏里面点击网络-媒体。就能看到我们想要的信息了!

两个文件都是来加载歌曲的。

接下来复制右侧的请求网址,新建链接页,打开复制的链接就能发现播放的歌就是我们的目标歌曲了。

可把我高兴坏了。

接下来我们的分析链接的组成:

http://dl.stream.qqmusic.qq.com/C400000Gb5s20okAGc.m4a?vkey=DA35112334E134FC1CE9A931C0CF5CC162CAF6BDCEC43BD0BDE90BD69F1C9092B96CAB377647C00227AA92F181111968C5B0A27A24E8B6C2&guid=1506352700&uin=0&fromtag=66

嗯,我试着播放不同的歌曲,找出他们的链接地址对比,发现只有两个地方是不同的。

C400000Gb5s20okAGc

就是这上面这两个,所以我的回去找网页代码中找到另外一个:

图中蓝色的就是我要找到目标的,因为我在他的响应参数中找到上面两个信息!!!(如果查看不了响应信息,请直接复制请求网址下载)

https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback46256663188121083&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback46256663188121083&uin=0&songmid=000Gb5s20okAGc&filename=C400000Gb5s20okAGc.m4a&guid=1506352700

可是我继续分析(还是不同歌曲对比)这个js文件的请求网址就发现,需要另外几个参数,

然后我试着随便改了后面几个数,然后去请求。

咦!竟然有返回参数。而且里面有我要的信息。

于是我将信息提取出来,放到第一个链接中。

咦!下载成功了!!播放成功!!!就是我想要的!!!

于是我猜想,那个vkey的参数是不是乱来的!!!

于是我另vkey=0也就是歌曲链接网页改为:

http://dl.stream.qqmusic.qq.com/C400000Gb5s20okAGc.m4a?vkey=0&uin=0&fromtag=66

结果很感人,成功了!!!

接下来得搞定C400000Gb5s20okAGc.m4a这个参数。

说出来你可能不信,这个真的很简单,之前没看出来只能怪我眼瞎,真瞎。

只要对比下歌曲主页的链接

https://y.qq.com/n/yqq/song/000Gb5s20okAGc.html

是不是发现就是那一串字符前面加个G400就可以了。

到这了,大功告成。

腾讯的工程师们不带你们这么玩的,非要弄个vkey,真不知道要干吗,以为是个加密钥匙,害我找这个参数找了半天啊

唉,我想对腾讯的工程师说何必呢,我以为反爬虫多牛逼,就是纸老虎,吓吓人而已。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171215G0YM4U00?refer=cp_1026

扫码关注云+社区