网易云加密浅析 - 获取歌单音乐列表

前几天想抓个歌单来着,调下之前的api发现获取歌单音乐列表失败了,于是跟进去分析,仅供参考学习

Ps. 刚分析完,好像现在又变了,有空再写

歌单url地址 https://music.163.com/#/playlist?id=2871000053

主要html分析

<div id="song-list-pre-cache" data-key="track_playlist-2871000053" data-simple="1" data-pvnamed="1">
    <div class="u-load s-fc4"><i class="icn"></i> 加载中...</div>
    <ul class="f-hide">
        <li><a href="/song?id=29567193">我们的时光</a></li>
        <li><a href="/song?id=1368771736">那个时候</a></li>
        <li><a href="/song?id=417596830">美好事物</a></li>
        <li><a href="/song?id=450048216">只道寻常</a></li>
        <li><a href="/song?id=1368771318">莎娜姑娘</a></li>
        <li><a href="/song?id=1328365527">阿坤</a></li>
        <li><a href="/song?id=540070780">大理</a></li>
        <li><a href="/song?id=1323068816">火柴盒里的时光</a></li>
        <li><a href="/song?id=1372796817">曾经的我们</a></li>
        <li><a href="/song?id=1308946786">二十一岁的她</a></li>
        <li><a href="/song?id=1353150950">我以为世界荒芜还有你</a></li>
        <li><a href="/song?id=1357807527">西部猎人</a></li>
        <li><a href="/song?id=864099827">是的,你是</a></li>
        <li><a href="/song?id=558238661">你就是星光</a></li>
        <li><a href="/song?id=424495049">城南的孩子</a></li>
        <li><a href="/song?id=1334295185">写给黄淮</a></li>
        <li><a href="/song?id=482044211">给你</a></li>
        <li><a href="/song?id=35476049">这个年纪</a></li>
        <li><a href="/song?id=418990139">走歌人</a></li>
        <li><a href="/song?id=27562607">理想与爱情</a></li>
        <li><a href="/song?id=31445772">理想三旬</a></li>
        <li><a href="/song?id=445546453">浮生</a></li>
        <li><a href="/song?id=416890049">亲爱的你</a></li>
        <li><a href="/song?id=41634014">来日方长</a></li>
        <li><a href="/song?id=28661071">忆她</a></li>
        <li><a href="/song?id=411754937">夕阳下的歌</a></li>
        <li><a href="/song?id=408280671">我想和你吃个饭</a></li>
        <li><a href="/song?id=67350">今生缘</a></li>
        <li><a href="/song?id=28310935">无能为力</a></li>
        <li><a href="/song?id=34248486">致我亲爱的朋友</a></li>
        <li><a href="/song?id=350760">农夫渔夫</a></li>
        <li><a href="/song?id=28968068">那年我十八岁</a></li>
        <li><a href="/song?id=31890233">后知后觉</a></li>
        <li><a href="/song?id=430208143">在四季里等待</a></li>
        <li><a href="/song?id=405253305">写给你的歌</a></li>
        <li><a href="/song?id=33166564">最后一次看着你</a></li>
        <li><a href="/song?id=27808295">平淡日子里的刺</a></li>
        <li><a href="/song?id=28310921">狗日的青春</a></li>
        <li><a href="/song?id=41651095">无忧房客</a></li>
        <li><a href="/song?id=5239277">桑吉尔多</a></li>
        <li><a href="/song?id=1359382613">我愿</a></li>
        <li><a href="/song?id=442016663"><小智></a></li>
        <li><a href="/song?id=544070223">探清水河</a></li>
        <li><a href="/song?id=28940202">十月迷城</a></li>
        <li><a href="/song?id=512524510">幻色</a></li>
        <li><a href="/song?id=421563082">当我要走的时候</a></li>
        <li><a href="/song?id=135085">封锁线</a></li>
        <li><a href="/song?id=1293953560">抱影而眠</a></li>
        <li><a href="/song?id=1330993997">隐身药水</a></li>
        <li><a href="/song?id=202342">你就是我最想要的丫头</a></li>
    </ul>
    <!-- 这里是详细的歌曲列表详细数据,以前是明文,近期加密了 -->
    <textarea id="song-list-pre-data" style="display:none;">Qvw9BaxfyjHR4gaTVQ5a1++ZO50DLu7N7eoObg4W/0X9gLFLLIbN7JdULj3t3TSVQZFI2wYSjS5OmDsBPkZ7G4jaRkWkqXgCBW/qb1VaQ5Sz5WL+qK54a9voAN7TAWGA745F2YHb5pKrFQh96joTxoA==</textarea>
</div>

主要是对idsong-list-pre-data进行解密分析

主要js分析

  • pt_playlist_index.js 歌单列表脚本
  • core.js

直接定位关键字decodeURIComponent备注:这是经过若干繁琐的分析定位的,细节又臭又长,略了

var C4G = cG5L.value || cG5L.defaultValue;
if (gs && bqD4H) {
    if (type == 13) {
        C4G = C4G.slice(2)
    }
    C4G = decodeURIComponent(coj6d(C4G, typeof window[l4p.rv0x()] + gs + bqD4H))
}
C4G = JSON.parse(C4G);

直接打下断点,发现最开始的C4G获取的是那串加密数据,然后经过解密,经过若干计算,返回urlencode的数据

// 省略部分数据
[
    {
        "djid": 0,
        "pv": {
            "id": 29567193,
            "fee": 8,
            "payed": 0,
            "st": 0,
            "pl": 128000,
            "dl": 0,
            "sp": 7,
            "cp": 1,
            "subp": 1,
            "cs": false,
            "maxbr": 999000,
            "fl": 128000,
            "toast": false,
            "flag": 256,
            "preSell": false
        },
        "fee": 8,
        "mv": 366072,
        "alia": [],
        "ar": [
            {
                "id": 6731,
                "name": "赵雷",
                "tns": [],
                "alias": []
            }
        ],
        "al": {
            "id": 3048030,
            "name": "吉姆餐厅",
            "picUrl": "http://p2.music.126.net/PJNV84mjt_mDXEkxtjzB4w==/18957779486268444.jpg",
            "tns": [],
            "pic_str": "18957779486268444",
            "pic": 18957779486268444
        },
        "ftype": 0,
        "t": 0,
        "dt": 270746,
        "tns": null,
        "st": 0,
        "no": 4,
        "pop": 100,
        "cp": 1400821,
        "name": "我们的时光",
        "id": 29567193
    },
    {
        "djid": 0,
        "pv": {
            "id": 1368771736,
            "fee": 8,
            "payed": 0,
            "st": 0,
            "pl": 128000,
            "dl": 0,
            "sp": 7,
            "cp": 1,
            "subp": 1,
            "cs": false,
            "maxbr": 999000,
            "fl": 128000,
            "toast": false,
            "flag": 0,
            "preSell": false
        },
        "fee": 8,
        "mv": 0,
        "alia": [],
        "ar": [
            {
                "id": 5995,
                "name": "小猛",
                "tns": [],
                "alias": []
            }
        ],
        "al": {
            "id": 79517380,
            "name": "那个时候",
            "picUrl": "http://p2.music.126.net/TgndPBnhfdNERKzrOmCgRQ==/109951164111947435.jpg",
            "tns": [],
            "pic_str": "109951164111947435",
            "pic": 109951164111947440
        },
        "ftype": 0,
        "t": 0,
        "dt": 242139,
        "tns": null,
        "st": 0,
        "no": 0,
        "pop": 100,
        "cp": 0,
        "name": "那个时候",
        "id": 1368771736
    },
    {
        "djid": 0,
        "pv": {
            "id": 417596830,
            "fee": 8,
            "payed": 0,
            "st": 0,
            "pl": 128000,
            "dl": 0,
            "sp": 7,
            "cp": 1,
            "subp": 1,
            "cs": false,
            "maxbr": 128000,
            "fl": 128000,
            "toast": false,
            "flag": 66,
            "preSell": false
        },
        "fee": 8,
        "mv": 0,
        "alia": [],
        "ar": [
            {
                "id": 1050282,
                "name": "房东的猫",
                "tns": [],
                "alias": []
            }
        ],
        "al": {
            "id": 34744383,
            "name": "美好事物",
            "picUrl": "http://p2.music.126.net/RsmgVs3F99IfpGOjZ347HA==/18252992533065802.jpg",
            "tns": [],
            "pic_str": "18252992533065802",
            "pic": 18252992533065800
        },
        "ftype": 0,
        "t": 0,
        "dt": 198687,
        "tns": null,
        "st": 0,
        "no": 1,
        "pop": 100,
        "cp": 0,
        "name": "美好事物",
        "id": 417596830
    },
    {
        "djid": 0,
        "pv": {
            "id": 202342,
            "fee": 0,
            "payed": 0,
            "st": 0,
            "pl": 192000,
            "dl": 192000,
            "sp": 7,
            "cp": 1,
            "subp": 1,
            "cs": false,
            "maxbr": 192000,
            "fl": 999000,
            "toast": false,
            "flag": 130,
            "preSell": false
        },
        "fee": 0,
        "mv": 0,
        "alia": [
            "电视剧《嘿!老头》插曲"
        ],
        "ar": [
            {
                "id": 6729,
                "name": "赵照",
                "tns": [],
                "alias": []
            }
        ],
        "al": {
            "id": 20335,
            "name": "你就是我最想要的丫头",
            "picUrl": "http://p2.music.126.net/Rv-9iGld16quldaESdFYBQ==/64871186055820.jpg",
            "tns": [],
            "pic": 64871186055820
        },
        "ftype": 0,
        "t": 0,
        "dt": 252368,
        "tns": null,
        "st": 0,
        "no": 1,
        "pop": 100,
        "cp": 0,
        "name": "你就是我最想要的丫头",
        "id": 202342
    }
]

搞定,细节就不去折腾了,有空再说,另本文仅参考学习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容