一直想拿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,真不知道要干吗,以为是个加密钥匙,害我找这个参数找了半天啊
唉,我想对腾讯的工程师说何必呢,我以为反爬虫多牛逼,就是纸老虎,吓吓人而已。
领取专属 10元无门槛券
私享最新 技术干货