利用Python下载咪咕上的任意音乐!Python反爬虫与反反爬虫策略
使用python + requests 通过抓包 iphone的咪咕客户端
咪咕ios版本 6.9.9
像这么收费的歌曲 一样可以抓到他flac格式和 m4a 格式 无损音质歌曲
""" 当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流Q群号:928946953 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF! 还有大牛解答! """ def migu_search(keyword, page=1): params = { \'feature\': \'1111000000\', \'isCopyright\': 1, \'isCorrect\': 1, \'pageIndex\': page, \'pageSize\': 20, \'searchSwitch\':\'{"song":1,"album":0,"singer":0,"tagSong":1,"mvSong":0,"songlist":0,"bestShow":1,"lyricSong":0,"concert":0,"periodical":0,"ticket":0,"bit24":0,"verticalVideoTone":0}\', \'sort\': 0, \'text\': keyword, \'uiVersion\': \'I_music_3.0.2\', } response = Api.request(\'http://jadeite.migu.cn:7090/music_search/v2/search/searchAll\', "GET", params) res_data = response.get(\'songResultData\', {}).get("resultList", []) print(json.dumps(res_data)) result = [] for items in res_data: for item in items: singers = \',\'.join([s.get("name", "") for s in item.get(\'singers\')]) song = { \'song_name\': item.get(\'name\'), \'singers\': singers } rate_list = item.get(\'rateFormats\', []) urls = {} for x in rate_list: if len(x.get(\'url\', "")) > 0: urls[x.get(\'formatType\')] = x.get(\'url\').replace(\'ftp://218.200.160.122:21\', \'http://freetyst.nf.migu.cn\') else: format_type = x.get(\'formatType\') if format_type == \'SQ\': urls[\'SQ-flac\'] = x.get(\'androidUrl\').replace(\'ftp://218.200.160.122:21\', \'http://freetyst.nf.migu.cn\') urls[\'SQ-m4a\'] = x.get(\'iosUrl\').replace(\'ftp://218.200.160.122:21\', \'http://freetyst.nf.migu.cn\') song[\'urls\'] = urls result.append(song) return result if __name__ == \'__main__\': r = migu_search("周杰伦", 1) print(json.dumps(r, indent=4))
通过接口爬取出来的音频地址是ftp的哦, 通过浏览器或者下载工具是下载不下来的, 必须替换
只要能在咪咕搜索到的音乐基本上是都能下载下来的.
最后 我通过flask 把这个包装了一下 使用docker 发布到阿里云服务器上, 这个就可以通过网页的方式更好地下载了
https://bilibili.syyhc.com/mp3.html