QQ音樂音質加密

天殤君發表於2019-03-30

不同音質下載連結中的songmid與vkey均不同,getplaysong連結只能獲取到m4a的vkey,C4修改為M5可下載mp3,但其他音質則無法如此操作,修改getplaysong中的引數,要不purl內容無變化,要不直接為空,遂放棄.修改瀏覽器ua,獲取到的連結均為m4a,應該在網頁端沒有其他音質的介面 使用fiddler對QQ音樂Android版多個版本進行抓包分析得知在版本號為5.0的客戶端中vkey為固定值,在下載多個歌曲後得知C4與M5,M8與O6為同一vkey,flac為另一vkey,修改songmid即可下載不同的歌曲,但vkey存在有效期,大概為一天半時間 通過抓包發現歌曲下載前均有一個請求為http://proxy.music.qq.com/base/fcgi-bin/fcg_music_express_mobile2.fcg,請求方式為post,data引數有很多uid,mnc,authst,musicname...其中musicname為songmid,網上搜尋得知有一於此請求極為相似的介面用來獲取vkey(請求方法為get),於是用get方法進行請求,但返回內容為'請求方法不被允許',遂使用post方法進行請求,但返回結果為亂碼,以二進位制方法讀取後使用多種編碼方式進行解碼,均無法轉換,推測進行了加密 對一個能進行高音質下載的軟體**進行抓包分析,發現在進行下載前會發生兩個請求,一個為fcg_music(使用不同的musicname)一個為getplaysong(均為C4),推測為使用fcg_music返回的內容對getsongkey獲取的vkey進行解密,獲取通用vkey(getplaysong獲取的vkey與下載連結中的vkey不同且下載連結中的vkey長度小於getplaysong),對其軟體網頁端進行抓包,下載連結獲取方法封裝在api中,無法獲取 對通用vkey進行分析得知vkey的前16個符號有規律,如M8為852A65CF678FDE73,由通用vkey長度小於getplaysong獲取的vkey推測不同的音質下載連結vkey前一部分為固定值,後一部分則是動態更新,伺服器根據不同的songmid結合通用vkey進行加密得到只適用於不同歌曲不同音質的vkey,所以關鍵在於獲取動態變化的vkey後半部分 通過對QQ音樂Android客戶端下載歌曲前後的請求分析(下載前會先請求fcg_ music再請求getplaysong),推測與前面提及的軟體思路是一樣的 為了獲取QQ音樂不同音質的下載連結,在十天內花費了大量時間與精力,但最終卻是一無所獲,終究還是能力不足 網上搜尋得知一api:api.bzqll.com/music/tence…

相關文章