V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bestehen
V2EX  ›  Python

爬虫的 base64 解密问题

  •  
  •   bestehen · 2018-07-16 17:54:30 +08:00 · 2909 次点击
    这是一个创建于 2324 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 … 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

    http://vip.qimingpian.com/#/finos/investment/ireport 企名片里面创投 报告里面 ajax 加载的数据,但是是 base64 加密,但是 base64 解密总是失败

    30 条回复    2018-07-22 20:37:02 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2018-07-16 18:30:53 +08:00
    确定是 base64 吗?会不会有字符串截取偏移值或者非标准算法?
    bestehen
        2
    bestehen  
    OP
       2018-07-16 18:46:53 +08:00
    @CEBBCAT 可能在网页里面
    crab
        3
    crab  
       2018-07-16 18:47:36 +08:00
    也有可能是密文后的 base64
    ThirdFlame
        4
    ThirdFlame  
       2018-07-16 18:50:52 +08:00
    不是可见字符。base64 其实不是加密,只是编码。 3 个字节编码为 4 个字节, 解码 4 个字节解码为 3 个字节。
    nu11001
        5
    nu11001  
       2018-07-16 18:57:18 +08:00
    明显是加密后的数据,本来想帮你看来自,然而并不想注册
    airdge
        6
    airdge  
       2018-07-16 19:23:31 +08:00
    应该不是 btoa
    airdge
        7
    airdge  
       2018-07-16 20:24:19 +08:00   ❤️ 4
    算法位于:http://vip.qimingpian.com/static/js/app.7b6630a6e4c6f54565dd.js
    解密函数
    function n(t) {
    return JSON.parse(a("5e5062e82f15fe4ca9d24bc561080e0e", atob(t), 0, 0, "012345677890123", 1))
    }
    相关函数在这个 js 里面
    解密结果为 object
    Object { items=[40], total="110354"}
    zhaogaz
        8
    zhaogaz  
       2018-07-16 22:33:49 +08:00
    @airdge 能讲讲怎么做到的么?想学学看。
    bestehen
        9
    bestehen  
    OP
       2018-07-16 23:25:10 +08:00
    @airdge 我知道在这个里面,但是要 debug 调试
    bestehen
        10
    bestehen  
    OP
       2018-07-16 23:25:32 +08:00
    @nu11001 你这方面经验很多吗?
    bestehen
        11
    bestehen  
    OP
       2018-07-16 23:26:09 +08:00
    @ThirdFlame 我知道不是加密,是一种摘要算法
    eluotao
        12
    eluotao  
       2018-07-16 23:42:59 +08:00 via iPhone
    @zhaogaz 大神 我有个测试 采集问题
    bestehen
        13
    bestehen  
    OP
       2018-07-16 23:45:47 +08:00
    @airdge 能否加个 qq 认识一下
    whoami9894
        14
    whoami9894  
       2018-07-16 23:46:31 +08:00 via Android   ❤️ 3
    @bestehen

    人家都告诉你 3bytes=>4bytes 了,还摘要算法……
    bestehen
        15
    bestehen  
    OP
       2018-07-16 23:58:44 +08:00
    @whoami9894 sorry 记错了,是 md5
    bestehen
        16
    bestehen  
    OP
       2018-07-17 00:11:28 +08:00
    @airdge 我的数据明明是汉字,你这结果怎么是数字,没明白什么意思
    bestehen
        17
    bestehen  
    OP
       2018-07-17 00:25:26 +08:00
    @airdge 还有就是你这个函数好像和 data1 没啥关系啊
    carlclone
        18
    carlclone  
       2018-07-17 04:50:57 +08:00 via Android
    base64 是编码,能连续说错我觉得你还是别搞这些了
    wenzhoou
        19
    wenzhoou  
       2018-07-17 07:59:29 +08:00 via Android   ❤️ 2
    这就是上课说听懂了,然后考试考零分的选手。
    airdge
        20
    airdge  
       2018-07-17 10:08:08 +08:00
    function a(t, e, i, a, n, o) {
    var l, c, r, d, h, u, p, v, m, f, g, _, b, y,
    w = new Array(16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756),
    C = new Array(-2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344),
    x = new Array(520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584),
    k = new Array(8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928),
    S = new Array(256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080),
    $ = new Array(536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312),
    z = new Array(2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154),
    A = new Array(268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696),
    I = s(t),
    L = 0,
    D = e.length,
    T = 0,
    P = 32 == I.length ? 3 : 9;
    v = 3 == P ? i ? new Array(0, 32, 2) : new Array(30, -2, -2) : i ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2), 2 == o ? e += " " : 1 == o ? i && (r = 8 - D % 8, e += String.fromCharCode(r, r, r, r, r, r, r, r), 8 === r && (D += 8)) : o || (e += "\0\0\0\0\0\0\0\0");
    var N = "",
    M = "";
    for (1 == a && (m = n.charCodeAt(L++) << 24 | n.charCodeAt(L++) << 16 | n.charCodeAt(L++) << 8 | n.charCodeAt(L++), g = n.charCodeAt(L++) << 24 | n.charCodeAt(L++) << 16 | n.charCodeAt(L++) << 8 | n.charCodeAt(L++), L = 0); L<D;) {
    for (u = e.charCodeAt(L++) << 24 | e.charCodeAt(L++) << 16 | e.charCodeAt(L++) << 8 | e.charCodeAt(L++), p = e.charCodeAt(L++) << 24 | e.charCodeAt(L++) << 16 | e.charCodeAt(L++) << 8 | e.charCodeAt(L++), 1 == a && (i ? (u ^= m, p ^= g) : (f = m, _ = g, m = u, g = p)), r = 252645135 & (u >>> 4 ^ p), p ^= r, u ^= r << 4, r = 65535 & (u >>> 16 ^ p), p ^= r, u ^= r << 16, r = 858993459 & (p >>> 2 ^ u), u ^= r, p ^= r << 2, r = 16711935 & (p >>> 8 ^ u), u ^= r, p ^= r << 8, r = 1431655765 & (u >>> 1 ^ p), p ^= r, u ^= r << 1, u = u << 1 | u >>> 31, p = p << 1 | p >>> 31, c = 0; c<P; c += 3) {
    for (b = v[c + 1], y = v[c + 2], l = v[c]; l != b; l += y) d = p ^ I[l], h = (p >>> 4 | p << 28) ^ I[l + 1], r = u, u = p, p = r ^ (C[d >>> 24 & 63] | k[d >>> 16 & 63] | $[d >>> 8 & 63] | A[63 & d] | w[h >>> 24 & 63] | x[h >>> 16 & 63] | S[h >>> 8 & 63] | z[63 & h]);
    r = u, u = p, p = r
    }
    u = u >>> 1 | u << 31, p = p >>> 1 | p << 31, r = 1431655765 & (u >>> 1 ^ p), p ^= r, u ^= r << 1, r = 16711935 & (p >>> 8 ^ u), u ^= r, p ^= r << 8, r = 858993459 & (p >>> 2 ^ u), u ^= r, p ^= r << 2, r = 65535 & (u >>> 16 ^ p), p ^= r, u ^= r << 16, r = 252645135 & (u >>> 4 ^ p), p ^= r, u ^= r << 4, 1 == a && (i ? (m = u, g = p) : (u ^= f, p ^= _)), M += String.fromCharCode(u >>> 24, u >>> 16 & 255, u >>> 8 & 255, 255 & u, p >>> 24, p >>> 16 & 255, p >>> 8 & 255, 255 & p), T += 8, 512 == T && (N += M, M = "", T = 0)
    }
    if (N += M, N = N.replace(/\0*$/g, ""), !i) {
    if (1 === o) {
    var D = N.length,
    j = 0;
    D && (j = N.charCodeAt(D - 1)), j<=8 && (N = N.substring(0, D - j))
    }
    N = decodeURIComponent(escape(N))
    }
    return N
    }
    airdge
        21
    airdge  
       2018-07-17 10:10:22 +08:00   ❤️ 1
    function s(t) {
    for (var e, i, a, s = new Array(0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964), n = new Array(0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697), o = new Array(0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272), l = new Array(0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144), c = new Array(0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256), r = new Array(0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488), d = new Array(0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746), h = new Array(0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568), u = new Array(0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578), p = new Array(0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488), v = new Array(0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800), m = new Array(0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744), f = new Array(0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128), g = new Array(0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261), _ = t.length>8 ? 3 : 1, b = new Array(32 * _), y = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0), w = 0, C = 0, x = 0; x<_; x++) {
    var k = t.charCodeAt(w++) << 24 | t.charCodeAt(w++) << 16 | t.charCodeAt(w++) << 8 | t.charCodeAt(w++),
    S = t.charCodeAt(w++) << 24 | t.charCodeAt(w++) << 16 | t.charCodeAt(w++) << 8 | t.charCodeAt(w++);
    a = 252645135 & (k >>> 4 ^ S), S ^= a, k ^= a << 4, a = 65535 & (S >>> -16 ^ k), k ^= a, S ^= a << -16, a = 858993459 & (k >>> 2 ^ S), S ^= a, k ^= a << 2, a = 65535 & (S >>> -16 ^ k), k ^= a, S ^= a << -16, a = 1431655765 & (k >>> 1 ^ S), S ^= a, k ^= a << 1, a = 16711935 & (S >>> 8 ^ k), k ^= a, S ^= a << 8, a = 1431655765 & (k >>> 1 ^ S), S ^= a, k ^= a << 1, a = k << 8 | S >>> 20 & 240, k = S << 24 | S << 8 & 16711680 | S >>> 8 & 65280 | S >>> 24 & 240, S = a;
    for (var $ = 0; $<y.length; $++) y[$] ? (k = k << 2 | k >>> 26, S = S << 2 | S >>> 26) : (k = k << 1 | k >>> 27, S = S << 1 | S >>> 27), k &= -15, S &= -15, e = s[k >>> 28] | n[k >>> 24 & 15] | o[k >>> 20 & 15] | l[k >>> 16 & 15] | c[k >>> 12 & 15] | r[k >>> 8 & 15] | d[k >>> 4 & 15], i = h[S >>> 28] | u[S >>> 24 & 15] | p[S >>> 20 & 15] | v[S >>> 16 & 15] | m[S >>> 12 & 15] | f[S >>> 8 & 15] | g[S >>> 4 & 15], a = 65535 & (i >>> 16 ^ e), b[C++] = e ^ a, b[C++] = i ^ a << 16
    }
    return b
    }

    function n(t) {
    return JSON.parse(a("5e5062e82f15fe4ca9d24bc561080e0e",atob(t),0,0,"012345677890123",1))
    }




    var de='这边是加密数据';
    console.log(n(de));



    自己复制到控制台运行一下就行了

    得到的是 object 内容里就有汉字 @bestehen
    bestehen
        22
    bestehen  
    OP
       2018-07-17 11:39:53 +08:00
    @airdge sudo npm install btoa-atob
    [email protected] /usr/bin
    └── [email protected]

    return JSON.parse(a("5e5062e82f15fe4ca9d24bc561080e0e",atob(t),0,0,"012345677890123",1))
    ^

    ReferenceError: atob is not defined
    at n (/home/shenjianlin/code.js:47:56)
    at Object.<anonymous> (/home/shenjianlin/code.js:54:13)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.runMain (module.js:611:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:160:9)

    为啥我安装了还是报错呢?
    baxtergu
        23
    baxtergu  
       2018-07-17 11:42:22 +08:00
    简单难度:如果不想花时间在加解密上的话可以用模拟浏览器方式从生成的 DOM 里爬解密后的数据。
    困难难度:把用于加解密的 js 代码从混淆后的 js 文件中整理出来,然后用 Python 跑或者用 nodejs 以接口方式提供调用。
    地狱难度:破解混淆后的 js 文件中的加密算法,直接在 Python 中自己解密。
    bestehen
        24
    bestehen  
    OP
       2018-07-17 12:03:52 +08:00
    @baxtergu v8 引擎那套我会了,搞一些 js 加密提升技能的
    airdge
        25
    airdge  
       2018-07-17 14:58:21 +08:00
    @bestehen
    你那个是 nodejs 没初始化,找不到模块
    用 buffer 解码下就可以了
    function atob(a) {
    var b = new Buffer.from(String(a), 'base64')
    return b.toString();
    }
    function btoa(a) {
    var b = new Buffer.from(String(a));
    return b.toString('base64');
    }

    console.log(btoa('v2ex.com'));
    console.log(atob('djJleC5jb20='));
    bestehen
        26
    bestehen  
    OP
       2018-07-17 16:36:34 +08:00
    @airdge shenjianlin@iZm5eirdrun3ajzx3iii0wZ:~/js$ node code.js
    /home/shenjianlin/js/code.js:41
    N = decodeURIComponent(escape(N))
    ^

    URIError: URI malformed
    at decodeURIComponent (native)
    at a (/home/shenjianlin/js/code.js:41:5)
    at n (/home/shenjianlin/js/code.js:56:19)
    at Object.<anonymous> (/home/shenjianlin/js/code.js:63:13)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.runMain (module.js:611:10)
    bestehen
        27
    bestehen  
    OP
       2018-07-18 12:04:21 +08:00
    @airdge 那个 escape 编码问题,如何解决,网上搜了一下没解决!
    bestehen
        28
    bestehen  
    OP
       2018-07-18 14:33:08 +08:00
    @airdge 你试一下运行结果看能出来吗?我这边报错出不来
    bestehen
        29
    bestehen  
    OP
       2018-07-20 11:00:59 +08:00
    @airdge 这位兄弟,我困扰这个问题很久了,能否私下交流一下,谢谢!
    airdge
        30
    airdge  
       2018-07-22 20:37:02 +08:00
    @bestehen
    控制台调试相关参数 对比 nodejs 输出有哪些异常
    I = s(t),
    L = 0,
    D = e.length,
    执行这一行时
    浏览器 D 值 26712; nodejs D 值为 25310
    就可以知道 Buffer 转码异常
    function atob(a) {
    var b, c, e, d, f, g = [-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];
    d = a.length;
    e = 0;
    for (f = ""; e < d;) {
    do b = g[a.charCodeAt(e++) & 255]; while (e < d && -1 == b);
    if (-1 == b) break;
    do c = g[a.charCodeAt(e++) & 255]; while (e < d && -1 == c);
    if (-1 == c) break;
    f += String.fromCharCode(b << 2 | (c & 48) >> 4);
    do {
    b = a.charCodeAt(e++) & 255;
    if (61 == b) return f;
    b = g[b]
    } while (e < d && -1 == b);
    if (-1 == b) break;
    f += String.fromCharCode((c & 15) << 4 | (b & 60) >> 2);
    do {
    c = a.charCodeAt(e++) & 255;
    if (61 == c) return f;
    c = g[c]
    } while (e < d && -1 == c);
    if (-1 == c) break;
    f += String.fromCharCode((b & 3) << 6 | c)
    }
    return f
    }


    用这个函数替换 Buffer 就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4142 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 05:26 · PVG 13:26 · LAX 21:26 · JFK 00:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.