想要批量下载步骤
1.在媒体中找到歌曲链接
2.找到歌曲链接存在于哪个数据包
3.数据包参数必定需要歌曲id,在目录页面找到新数据包含有歌曲id
4.批量保存
5.若参数需要逆向,则进行逆向处理。变化的参数一般有时间戳,若有很多参数,看前面的数据包是否有返回,或者前一个数据包中是否含有下一个数据包的参数。一般加密的参数不会很多,一般为sign或signature等方法,而且一般由其他的参数经过处理加密得到。
播放一首歌曲,打开开发者工具,在媒体中。
复制.mp3前面的数字,在搜索框搜索。
在第三个数据包由歌曲play_url和歌曲详细信息。
打开另一首歌,观察参数的变化
观察变化,clienttime为时间戳,encode_album_audio_id为歌曲id,token记录了登录信息,若你登陆了,则会记录你的信息。signature为签名表单,是一个变化的参数,而且同一个数据包每一次 的数据都不一样。对其进行逆向。
在下方搜索框搜索
很明显第一个js文件有加密。
打上断点,播放下一首歌 ,在控制面板打印参数。
s是一个列表,转为字符串后右d含数据加密。而且s是由其他参数加两个首尾字符串 构成的。
补充知识:MD5加密的一般32位,且是由0-9的数字和a-f的字母构成
在在线MD5加密进行加密。
发现确实是标准MD5加密算法。
python实现:
import hashlib
Jt = 'NVPh5oo715z5DIWAeQlhMDsWXXQV4hwtappid=1014clienttime=1712126561418clientver=20000dfid=4FHvHH1nCr5u2yk4VL00jBMpencode_album_audio_id=a8e3ix86mid=334e20d15adc5d4306e4b42cacf03c1bplatid=4srcappid=2919token=userid=0uuid=334e20d15adc5d4306e4b42cacf03c1bNVPh5oo715z5DIWAeQlhMDsWXXQV4hwt'
MD5 = hashlib.md5()
MD5.update(Jt.encode('utf-8'))
data = MD5.hexdigest()
print(data)
至此,signature已经得到了。
再分析歌曲id在哪个包
目录页
遇到问题,只有静态网页中有,找不到 必须下载客户端啊。