網(wǎng)易云音樂api加密算法詳解 2016.12.7

本文旨在講解網(wǎng)易云的加密算法,僅供參考,請不要用于非法用途。截止本文發(fā)布時間,此加密算法仍然適用。查看原文

網(wǎng)易云音樂前段時間更改了api接口,將以前的GET請求變成了POST請求,并且POST的參數(shù)是加密后的參數(shù),具體請看圖片。為了突破爬蟲限制,需要破解其中的加密算法。

改進后POST請求參數(shù)如下:


用于加密的核心代碼如下(代碼在http://s3.music.126.net/sep/s/2/core.js?06b50101e4968eb701d6b24cd94b48d2第11173行開始):

生成隨機16位字符串
function a(a) {
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)
            e = Math.random() * b.length,
            e = Math.floor(e),
            c += b.charAt(e);
        return c
    }

AES加密函數(shù)
    function b(a, b) {
        var c = CryptoJS.enc.Utf8.parse(b)
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")   偏移量已知
          , e = CryptoJS.enc.Utf8.parse(a)
          , f = CryptoJS.AES.encrypt(e, c, {
            iv: d,
            mode: CryptoJS.mode.CBC
        });
        return f.toString()
    }

RSA加密函數(shù)
    function c(a, b, c) {
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    }

主入口
    function d(d, e, f, g) {
        var h = {}
          , i = a(16);
        return h.encText = b(d, g), 密鑰g已知
        h.encText = b(h.encText, i),
        h.encSecKey = c(i, e, f),  e和f已知
        h
    }

其中入口在function d處,傳入的參數(shù)為:


d是正常的請求參數(shù)
e和f是RSA中加密所需的key和modulus
g是AES加密的key

function d中可以看出加密流程,先隨機生成一個16位的密鑰,將正常的請求參數(shù)與g先加密一次,再與16位的密鑰加密一次,此結(jié)果為POST參數(shù)的param。由于密鑰是在客戶端上隨機產(chǎn)生的,所以要將隨機密鑰進行一次RSA加密后作為encSecKey參數(shù)POST到服務(wù)端。

所以,整體加密方式為,客戶端生成16位密鑰,將請求參數(shù)加密兩次后,將參數(shù)加密后的結(jié)果和密鑰加密后的結(jié)果一起傳到服務(wù)端完成解密過程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 最近公司用到RSA數(shù)據(jù)加密傳輸,本人也只會使用,并不知其原理,剛好今天在csdn看到一位大牛的博客寫得很到位,遂搬...
    爸比好酷閱讀 1,473評論 0 1
  • 作者簡介 原創(chuàng)微信公眾號郭霖 WeChat ID: guolin_blog 大家早上好,轉(zhuǎn)眼假期就結(jié)束了,又到了...
    木木00閱讀 1,282評論 0 9
  • 困在你的邊緣 繞地球一圈 云來自天邊 細雨纏綿 未知你的明天 我的世界尋遍 在夢里沉眠 花好月圓 曾經(jīng)的誓言 風(fēng)帶...
    文山鹿閱讀 443評論 62 53
  • 草青青沒艷,風(fēng)曼曼彌香。 楚楚驕姿態(tài),娉娉嫁女妝。 好合約美美,結(jié)侶待雙雙。 夜夜燃燈亮, 涓涓戀念長。 注:野地...
    房謀杜斷閱讀 1,273評論 15 9

友情鏈接更多精彩內(nèi)容