历史潮流浩浩荡荡,顺之则昌,逆之则亡。——孙中山

下载慕课网视频技术分析

无主题 徐承恩 893℃

老姐在微信某课堂付费观看视频学习,观后遂萌生将此视频打包下载的念头,随后将此任务交给了我这个程序员弟弟。原本想找个下载软件应付了事奈何几乎没有这样的软件我也只好硬着头皮上,然后便有了下文。

这篇文章没什么技术含量但要具备一定的前端调试技术和耐心,所以呢我们要熟练的运用Chrome浏览器的开发者工具。

目前主流的在线视频播放都是基于HLS(m3u8文件)协议,简单的说我们观看视频的过程中会不间断的去服务器获取ts文件后缀的视频文件从而保持视频的正常播放。

m3u8文件

#EXTM3U
#EXT-X-TARGETDURATION:10

#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

以上代码是m3u8文件的一个例子。在这个代码中包含了许多ts文件后缀的链接,我们只需将这些链接逐个下载然后合并成一个视频文件就能实现我们的目的。

以上思考看起来视乎非常容易但实现起来往往比较复杂,因为每一家视频平台都有自己的加密和解密逻辑来保护视频版权,所以目前并没有一个万能可下载所有视频平台的软件。

这里我以慕课网为例来演示整个过程。

第一步:获取m3u8文件

打开谷歌浏览器的开发者工具找到network选项卡,选中XHR子选项卡然后随意找到一个视频进行播放并暗中观察如下图所示就是我们要找的m3u8文件。

请求https://www.imooc.com/course/playlist/7403?t=m3u8&_id=58538e6bb3fee3a05d8b5640&cdn=aliyun1得的响应代码

{
    "data": {
        "info": "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Ipgr1tRkcdto",
        "cdn": [
            "aliyun",
            "aliyun1",
            "letv"
        ]
    }
}

json文件中的info对应的value就是我们所需要的m3u8文件。

第二步:寻找解密函数

已知m3u8文件请求地址我们只需拦截断点调试就可以追踪出请求从哪里发起进而找到解密函数

开发者工具找到Sources选项卡,添加一个XHR请求断点下如图

刷新页面后直接进入断点调试模式跟踪代码执行情况如图

这里我已经找到了解密函数destm_1.default()

解密函数代码

function n(t, e) {
    function r(t, e) {
        var r = "";
        if ("object" == typeof t)
            for (var n = 0; n < t.length; n++) r += String.fromCharCode(t[n]);
        t = r || t;
        for (var i, o, a = new Uint8Array(t.length), s = e.length, n = 0; n < t.length; n++)
            o = n % s, i = t[n], i = i.toString().charCodeAt(0), a[n] = i ^ e.charCodeAt(
                o);
        return a
    }

    function n(t) {
        var e = "";
        if ("object" == typeof t)
            for (var r = 0; r < t.length; r++) e += String.fromCharCode(t[r]);
        t = e || t;
        var n = new Uint8Array(t.length);
        for (r = 0; r < t.length; r++) n[r] = t[r].toString().charCodeAt(0);
        var i, o, r = 0;
        for (r = 0; r < n.length; r++) 0 != (i = n[r] % 3) && r + i < n.length && (o =
            n[r + 1], n[r + 1] = n[r + i], n[r + i] = o, r = r + i + 1);
        return n
    }

    function i(t) {
        var e = "";
        if ("object" == typeof t)
            for (var r = 0; r < t.length; r++) e += String.fromCharCode(t[r]);
        t = e || t;
        var n = new Uint8Array(t.length);
        for (r = 0; r < t.length; r++) n[r] = t[r].toString().charCodeAt(0);
        var r = 0,
            i = 0,
            o = 0,
            a = 0;
        for (r = 0; r < n.length; r++) o = n[r] % 2, o && r++, a++;
        var s = new Uint8Array(a);
        for (r = 0; r < n.length; r++) o = n[r] % 2, s[i++] = o ? n[r++] : n[r];
        return s
    }

    function o(t, e) {
        var r = 0,
            n = 0,
            i = 0,
            o = 0,
            a = "";
        if ("object" == typeof t)
            for (var r = 0; r < t.length; r++) a += String.fromCharCode(t[r]);
        t = a || t;
        var s = new Uint8Array(t.length);
        for (r = 0; r < t.length; r++) s[r] = t[r].toString().charCodeAt(0);
        for (r = 0; r < t.length; r++)
            if (0 != (o = s[r] % 5) && 1 != o && r + o < s.length && (i = s[r + 1], n =
                r + 2, s[r + 1] = s[r + o], s[o + r] = i, (r = r + o + 1) - 2 > n))
                for (; n < r - 2; n++) s[n] = s[n] ^ e.charCodeAt(n % e.length);
        for (r = 0; r < t.length; r++) s[r] = s[r] ^ e.charCodeAt(r % e.length);
        return s
    }

    for (var a = {
        data: {
            info: t
        }
    }, s = {
        q: r,
        h: n,
        m: i,
        k: o
    }, l = a.data.info, u = l.substring(l.length - 4).split(""), c = 0; c < u.length; c++)
        u[c] = u[c].toString().charCodeAt(0) % 4;
    u.reverse();
    for (var d = [], c = 0; c < u.length; c++) d.push(l.substring(u[c] + 1, u[c] + 2)),
        l = l.substring(0, u[c] + 1) + l.substring(u[c] + 2);
    a.data.encrypt_table = d, a.data.key_table = [];
    for (var c in a.data.encrypt_table) "q" != a.data.encrypt_table[c] && "k" != a.data
        .encrypt_table[c] || (a.data.key_table.push(l.substring(l.length - 12)), l = l.substring(
        0, l.length - 12));
    a.data.key_table.reverse(), a.data.info = l;
    var f = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -
            1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57,
        58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
        10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1,
        -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
        42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
    a.data.info = function (t) {
        var e, r, n, i, o, a, s;
        for (a = t.length, o = 0, s = ""; o < a;) {
            do {
                e = f[255 & t.charCodeAt(o++)]
            } while (o < a && -1 == e);
            if (-1 == e) break;
            do {
                r = f[255 & t.charCodeAt(o++)]
            } while (o < a && -1 == r);
            if (-1 == r) break;
            s += String.fromCharCode(e << 2 | (48 & r) >> 4);
            do {
                if (61 == (n = 255 & t.charCodeAt(o++))) return s;
                n = f[n]
            } while (o < a && -1 == n);
            if (-1 == n) break;
            s += String.fromCharCode((15 & r) << 4 | (60 & n) >> 2);
            do {
                if (61 == (i = 255 & t.charCodeAt(o++))) return s;
                i = f[i]
            } while (o < a && -1 == i);
            if (-1 == i) break;
            s += String.fromCharCode((3 & n) << 6 | i)
        }
        return s
    }(a.data.info);
    for (var c in a.data.encrypt_table) {
        var h = a.data.encrypt_table[c];
        if ("q" == h || "k" == h) {
            var p = a.data.key_table.pop();
            a.data.info = s[a.data.encrypt_table[c]](a.data.info, p)
        } else a.data.info = s[a.data.encrypt_table[c]](a.data.info)
    }
    if (e) return a.data.info;
    var g = "";
    for (c = 0; c < a.data.info.length; c++) g += String.fromCharCode(a.data.info[c]);
    return g
}

试验

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script src="destm.js"></script>
<script>
    var jsonStr = {
        "info": "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"
    };

    //console.log(jsonStr.result);

    console.log(n(jsonStr.info));
</script>
</html>

控制台输出

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://www.imooc.com/video/58538e6bb3fee3a05d8b5640/medium.hxk?timestamp=1607679008&token=imooc%3AN2E0MjQ3MDFiNmNhZWVkMWE4YjA2NDQ0OWRiY2UxN2NkOTI5ODdhYQ%3D%3D"
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0da0f040c689f359.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0da3c5c84b0948bb.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/8f14be2a480937ad.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/f8fb64181caf098b.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/d65f29415bc155aa.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/21b5b9e40dd21f86.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/8a247a0a3e8d6f46.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/f51d104dba06e143.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/016e8c2efcdc5082.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/20a4b5e78bafdceb.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/00ba02a4b622e395.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/6d7983c5cd62b0b2.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/fccf885dfa0dd57d.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/29020391c7f38f59.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/f3d5cbdbf69a3315.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/c9aeb8eb96912f08.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/e6418a04fd5235b7.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/a32b2a902218781b.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/24bacb3bcf276d1a.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/f14bbbb43e28563c.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/c0564fc373475e09.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/b78f8878383f6b62.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/47c993e2525ed75e.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/87a61da6af46fb44.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/da3de90571d23476.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/5a568293b2af64d2.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/5353d68510fdd67c.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0a888ea1522f99ad.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0404b70e57fea1d1.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/4bb42f970f4a3d25.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/9c33821f34c44fb3.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/caf44f9893d0547a.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/b35fdcbd8e06571f.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/6cdb843f131ed101.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/42c4464f8f414b87.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0a41d58ed94d5627.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/1268dc0bddd01c2d.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/3f0568d69be9cd3e.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/d69010ec3c7730b8.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/ba05ba8feb915c78.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/a82217e3bb93fccf.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/012f3c7b2d91cef4.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/dedce3cba143e444.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/b09882217d9997dc.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/f1946df7e6a6109d.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/65474544d7d036ea.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/4cb8f3ae680a89f4.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/942ceaa8a46fe634.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/062f8d4b0ebab9d0.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/74214fcd39539a83.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/749f743036c599fe.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/b92b040e7c4076f1.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/5e500a7d294d367a.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/7352a3b6f8bf58cb.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/d5059e122ce693b1.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/ad94b2b2b1d1a95e.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/7f6a1e631670d51f.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/fce47df455dcf00d.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0f5c1cb19d9d6243.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/71fad14be94d92a0.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/59665f46049acf89.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/ca7a6e2fea6589d0.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/ed8c4ba23cf7403e.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/09f1db14f91e3378.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/5a3abfcbc8775ed1.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/a6db882f61687756.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/543ebc764c58a5f1.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/155682a0c046875e.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0f470156efc18ddd.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/968b77ca6467890f.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/6a8a554a9e6582ea.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/0d921cabb1a6a9ed.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/3ae3722a1e069a20.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/20a298059ccd26cd.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/1fdb3d23b15de5e0.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/117bddf07baf3ec7.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/53f917271cc9d699.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/78a1873531ef1740.ts
#EXTINF:5.000000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/8e9d8ef519ffd438.ts
#EXTINF:1.050000,
https://video1.sycdn.imooc.com/58538e6bb3fee3a05d8b563d/M/957e67b57b90248e.ts
#EXT-X-ENDLIST

 

转载请注明:思码老徐 » 下载慕课网视频技术分析

喜欢 (13)