QQ音乐的接口找了好久,并且每个链接附带的无关参数还很多,分析接口分析的头大啊,好不容易弄出来了暂时先能下载,以后再扩展功能。
**歌曲的地址:**https://y.qq.com/n/yqq/song/002YYV7g0FlXAp.html
**打开开发者调试工具:**分析里面提交的参数。
我们要获取这个歌曲的mid参数。其实一开始我并不知道要获取这个参数来加密,坑爹的在后面。。。。。
点击音乐的播放按钮:其中最坑的是这个加密的接口,只在第一次添加的时候才会出现,你删除再添加同一首音乐他就不会出来。。。
接下来是分析头参数:
访问界面:
??正着分析接口和思路方法很明确,我一开始是找到了url音乐播放地址,然后就是分析里面的参数,对比播放几个音乐后,发现vkey是加密的参数,其他的参数是常量,然后就分析加密vkey的url,再其次就是分析vkey里面的参数。思路就这样仅供参考。
**贴上代码:**自己将url里面的参数删除了不少没用的参数。
接下来再添加其他的功能吧。
import requests
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
input_url = input('输入URL:')
# input_url = 'https://y.qq.com/n/yqq/song/002YYV7g0FlXAp.html'
params = input_url[input_url.rindex('/')+1:input_url.rindex('.')]
url = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid='+params+'&filename=C400'+params+'.m4a&guid=9082027038'
response = requests.get(url) # 访问加密的网址
response = json.loads(response.text)
vkey = response['data']['items'][0]['vkey'] # 加密的参数
music_url = 'http://dl.stream.qqmusic.qq.com/C400'+params+'.m4a?vkey='+vkey+'&guid=9082027038&uin=0&fromtag=66'
response = requests.get(url=music_url, stream=True, headers=headers)
with open('new_music.mp3', 'wb') as f:
for chunk in response.iter_content(1024):
f.write(chunk)