网易云音乐获取音频链接(爬虫)破解params参数
網(wǎng)易云音樂params和encSecKey參數(shù)的生成
工具:谷歌瀏覽器,reres瀏覽器插件,python3,requests_html庫(kù)
關(guān)鍵詞:js逆向,js的AES加密,爬蟲
1.首先打開網(wǎng)易云音樂的歌單
進(jìn)入一個(gè)能聽到音樂的頁(yè)面搜索音樂文件,因?yàn)樵诰€聽歌要求加載文件速度快,體積小,所以候選音頻文件有:mp3, m4a, acc。一番操作果然找到j(luò)son格式的文件,找到音樂文件地址,接下來(lái)查看請(qǐng)求參數(shù)
2.經(jīng)過一些列的請(qǐng)求發(fā)現(xiàn),只有兩個(gè)參數(shù)是全局的關(guān)鍵,params和encSecKey,搜索數(shù)值未發(fā)現(xiàn)攜帶參數(shù)的文件,疑似由js動(dòng)態(tài)生成
3.查找生成此參數(shù)的js文件,查看此次請(qǐng)求的來(lái)源,找到可以文件,點(diǎn)擊進(jìn)入,再次搜索關(guān)鍵key
果然找到
4.分析js代碼,發(fā)現(xiàn)關(guān)鍵變量是:bZ7ex(名肯定也是會(huì)變),由asrea函數(shù)生成,搜索發(fā)現(xiàn)這個(gè)函數(shù)就是d函數(shù)
分析變量:此函數(shù)的后3位變量肯定是不變值,都是固定的字符,關(guān)鍵找第一個(gè)參數(shù)如何生成
經(jīng)過仔細(xì)觀察params和encSecKey參數(shù)由a,b,c,d,e,這幾個(gè)關(guān)鍵函數(shù)生成,看見for循環(huán)斷點(diǎn)調(diào)試就很麻煩了,直接用reres插件替換成本地文件,在本地調(diào)試
5.被替換文件:https://s3.music.126.net/web/s/core_d889eff6d44685f138aeb17febf426d6.js(過段時(shí)間會(huì)變化)
替換文件:http://127.0.0.1/js/core_d889eff6d44685f138aeb17febf426d6.js
源代碼復(fù)制粘貼到本地服務(wù)器文件
6.控制臺(tái)輸出參數(shù),觀察值,分析,d中的i由a函數(shù)生成,
a函數(shù)就是在b中找了16位隨機(jī)字符,隨機(jī)即確定,直接寫死,可以正常運(yùn)行,大會(huì)進(jìn)行下一項(xiàng)
打印下看看是什么樣
可以看到所有的也包括其他歌曲的encSecKey值也一樣,encSecKey也為死值
測(cè)試發(fā)現(xiàn)只有這個(gè)params值可用,d函數(shù)d值為固定json格式并攜帶有歌曲id,也就是asrea函數(shù)的第一個(gè)參數(shù)也找到了
接下來(lái)找b函數(shù),b函數(shù)一眼看出來(lái)就是AES加密(靠多年行走江湖的經(jīng)驗(yàn))參考這篇文章:https://blog.csdn.net/sinat_17775997/article/details/88814358
b函數(shù)說明
d函數(shù)說明
function d(d, e, f, g) {console.log("進(jìn)入d函數(shù) =>");console.log("d中d =>" + d);console.log("d中e =>" + e);console.log("d中f =>" + f);console.log("d中g(shù) =>" + g);var h = {}, i = a(16);var ccc = c(i, e, f); // 死值console.log("d中ccc =>" + ccc);return h.encText = b(d, g), //值由 {"ids":"[1495845552]","level":"standard","encodeType":"aac","csrf_token":""} 0CoJUm6Qyw8W8jud 生成h.encText = b(h.encText, i), //值由 新生成的b(d, g) WCwzSK4ip8uBjv7L 生成h.encSecKey = ccc,h}c函數(shù)就是生成encSecKey的是個(gè)死值
至此參數(shù)都o(jì)k了
加密時(shí)遇到了一個(gè)坑,aes加密填充使用的是pkcs7填充,代碼參考的:https://blog.csdn.net/yt_xy/article/details/108863258
python實(shí)現(xiàn)代碼:
總結(jié)
以上是生活随笔為你收集整理的网易云音乐获取音频链接(爬虫)破解params参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看 rabbitmq 启动websoc
- 下一篇: java衍生作用_java-如何从Aff