python爬取QQ音乐免费歌曲 2020.7.26 |
您所在的位置:网站首页 › qq音乐解析网址在哪看 › python爬取QQ音乐免费歌曲 2020.7.26 |
python爬取qq音乐免费歌曲 2020.7.26
目标分析获取音乐列表1.浏览器网络请求追踪2.寻找音乐列表
解析qq音乐1.下载连接组成2.获取vkey3.获取sign参数
关系图python代码
目标分析
做一个音乐爬虫。输入关键词,获取音乐列表与音乐下载连接
获取音乐列表
1.浏览器网络请求追踪
我们要找的列表就是xhr类型 点击clien_search*****这个请求,预览中我们可以看到搜索到的歌曲的相关信息。因为你们已经知道了,所以你们可以直接在筛选器里面输入client_search查找这个请求,不必一个个找。 这个请求里的数据有什么用,后面会用到。 我们看看这个请求的标头,请求url为 [https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=61540511995365928&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w=%E7%A5%9E%E8%AF%9D&g_tk_new_20200303=2012260984&g_tk=2012260984&loginUin=2925549673&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0] 这是编码过的url,我们需要解码一下,网上有许多url在线解码网站,我随便找了个 http://tool.chinaz.com/tools/urlencode.aspx 解码后是这样的 https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=61540511995365928&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w=神话&g_tk_new_20200303=2012260984&g_tk=2012260984&loginUin=2925549673&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0 https是协议 c.y.qq.com是主机 soso/fcgi-bin/client_search_cp是路径 ?后面全是参数 &表示与的关系,用&分割的参数不分先后顺序 这些组成了一个合格的url 请求的参数解析 w=搜索关键词 loginuin=qq号 format=返回数据的格式 p=是否分页 n=请求数量 参数有些是必须的,有些是可选的,哪些可选你们可以自己试试 用这个url可以得到音乐列表的json格式,我们可以用python导入json包来解析数据。也可以使用json在线解析网站,随便找了个 https://www.bejson.com/explore/index_new/ 解析qq音乐接下来是获取下载链接,打开歌曲播放页面,刷新,追踪网络请求,选择查看meidia类型的请求
打开上边的请求, url(解码后)为 https://ws.stream.qqmusic.qq.com/C400000k9jj51TOfNy.m4a?guid=659244375&vkey=71F5A262A9FB4DBCC2762A18AB1A5BE40951EE2D94FBDF5C0F66DA77BF24DD2B64D5170E9761C2159C5D514DC99C0AA05EBFDE9171BD7223&uin=0&fromtag=66 问题来了 这个url经我测试 它的路径,参数都是不一样的 主机ws.stream.qqmusic.qq.com大部分歌曲都是,少部分不是路径C400000k9jj51TOfNy.m4a每首歌都不一样,文件名guid659244375疑似不固定,在我的pc上一直都是这个vkey71F5A262A9FB*****非常长,每首歌一个uin0非必要fromtag66固定所以说至少我们需要获取 vkey与路径才能得到下载链接 2.获取vkey在筛选栏里输入vkey 找到了获取vkey的请求 https://u.y.qq.com/cgi-bin/musics.fcg?-=getplaysongvkey5121797630605007&g_tk=2012260984&sign=zza2bkkmehc578lfnfhfbe4b20a449f79fe6ba709c01e6a1b11&loginUin=2925549673&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0&data={“req”:{“module”:“CDN.SrfCdnDispatchServer”,“method”:“GetCdnDispatch”,“param”:{“guid”:“659244375”,“calltype”:0,“userip”:""}},“req_0”:{“module”:“vkey.GetVkeyServer”,“method”:“CgiGetVkey”,“param”:{“guid”:“659244375”,“songmid”:[“004Vl6HS0IKK6a”],“songtype”:[0],“uin”:“2925549673”,“loginflag”:1,“platform”:“20”}},“comm”:{“uin”:2925549673,“format”:“json”,“ct”:24,“cv”:0}} 这里面需要设置的参数只有两个:sign与data{} 在data{}里面需要设置guid(固定的),songmid,uin 其中uin是qq号,songmid在音乐列表里可以找到(获取音乐列表->寻找音乐列表) 最后的问题就只有一个 如何获取sign参数 3.获取sign参数凭我的烂文笔与知识水平讲不明白,给你们个链接自己看 https://blog.csdn.net/weixin_44159306/article/details/106292092 总的来说就是要调用一下js脚本得出sign参数 如何调用js脚本 https://blog.csdn.net/IKNOWNU/article/details/83784146 关系图https://download.csdn.net/download/riverfisher2000/12663387 上传源码被说是,‘版权投诉’等等看把 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |