某公众号登录加密(webpack)

2023-11-13

前言

随手记 1

本文章仅作学习参考使用,不做其他使用。​​​​​​​​​​​​​


网站:aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tLw==

输入密码,分析抓包信息,如下:

可以初步判断是一个md5的密文数据,

 使用全局搜索Search定位到加密位置下断点调试;并得到了已经加密后的密文, 我们如果想知道是怎么加密的,首先要拿到明文数据;

这时我们需要思考,明文密码在哪?它是在哪开始加密的?

我们首先在断点处一个一个值去看,发现n.pwd.substr(0, 16) 是明文密码,f()就是加密方法,那我们直接在断点位置选中f,跟到加密方法“f”里去; 或者在底部控制台输入f,也可以直接跟进去(注意:前提是必须在断点断住的情况下才能使用)

进入加密函数后,在当前位置下断点,并在下图右上角标记处点击(执行下一个函数),这样我们就能得到加密位置是n.exports; 那我们现在就需要找到n.exports的定义位置,看它是不是在一个方法里,最终定位到开始的位置;

在找代码的过程中,发现了如下图标记的位置,出现了“   }({  ” 这种类型的,可以判断这个加密方式是一个webpack类型的。

由于代码太多,我这里没有把代码复制到本地进行处理,所以显示不全。

 既然知道了是webpack,那必定会有一个模块加载器,首先就要把模块加载器找到,并扒出来,为后面改写代码使用;如图:

!function(c) {
    function e(e) {
        for (var t, n, o = e[0], r = e[1], i = e[2], s = 0, a = []; s < o.length; s++)
            n = o[s],
            Object.prototype.hasOwnProperty.call(d, n) && d[n] && a.push(d[n][0]),
            d[n] = 0;
        for (t in r)
            Object.prototype.hasOwnProperty.call(r, t) && (c[t] = r[t]);
        for (l && l(e); a.length; )
            a.shift()();
        return p.push.apply(p, i || []),
        u()
    }
    function u() {
        for (var e, t = 0; t < p.length; t++) {
            for (var n = p[t], o = !0, r = 1; r < n.length; r++) {
                var i = n[r];
                0 !== d[i] && (o = !1)
            }
            o && (p.splice(t--, 1),
            e = s(s.s = n[0]))
        }
        return e
    }
    var n = {}
      , d = {
        "login/loginpage/loginpage": 0
    }
      , p = [];
    function s(e) {
        if (n[e])
            return n[e].exports;
        var t = n[e] = {
            i: e,
            l: !1,
            exports: {}
        };
        return c[e].call(t.exports, t, t.exports, s),
        t.l = !0,
        t.exports
    }
    s.m = c,
    s.c = n,
    s.d = function(e, t, n) {
        s.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: n
        })
    }
    ,
    s.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    s.t = function(t, e) {
        if (1 & e && (t = s(t)),
        8 & e)
            return t;
        if (4 & e && "object" == typeof t && t && t.__esModule)
            return t;
        var n = Object.create(null);
        if (s.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: t
        }),
        2 & e && "string" != typeof t)
            for (var o in t)
                s.d(n, o, function(e) {
                    return t[e]
                }
                .bind(null, o));
        return n
    }
    ,
    s.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e.default
        }
        : function() {
            return e
        }
        ;
        return s.d(t, "a", t),
        t
    }
    ,
    s.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    s.p = "/mpres/zh_CN/htmledition/";
    var r = (t = window.webpackJsonp = window.webpackJsonp || []).push.bind(t);
    t.push = e;
    for (var t = t.slice(), o = 0; o < t.length; o++)
        e(t[o]);
    var l = r;

}({

​​​​​​​

然后再找到加密代码,扣取出来(一定要扣全,从方法开始的位置),这里建议把代码全部复制到本地进行处理,比较方便。我这里就没有扣全(没有保存到本地)扣取后的代码如下:

    "./src/3rd/md5/md5.js": function(e, t, n) {
        "use strict";
        n = function(e, t, n) {
            function p(e, t) {
                var n = (65535 & e) + (65535 & t);
                return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
            }
            function a(e, t, n, o, r, i) {
                return p((t = p(p(t, e), p(o, i))) << r | t >>> 32 - r, n)
            }
            function l(e, t, n, o, r, i, s) {
                return a(t & n | ~t & o, e, t, r, i, s)
            }
            function m(e, t, n, o, r, i, s) {
                return a(t & o | n & ~o, e, t, r, i, s)
            }
            function f(e, t, n, o, r, i, s) {
                return a(t ^ n ^ o, e, t, r, i, s)
            }
            function g(e, t, n, o, r, i, s) {
                return a(n ^ (t | ~o), e, t, r, i, s)
            }
            function s(e, t) {
                e[t >> 5] |= 128 << t % 32,
                e[14 + (t + 64 >>> 9 << 4)] = t;
                for (var n, o, r, d, i = 1732584193, s = -271733879, a = -1732584194, c = 271733878, u = 0; u < e.length; u += 16)
                    i = l(n = i, o = s, r = a, d = c, e[u], 7, -680876936),
                    c = l(c, i, s, a, e[u + 1], 12, -389564586),
                    a = l(a, c, i, s, e[u + 2], 17, 606105819),
                    s = l(s, a, c, i, e[u + 3], 22, -1044525330),
                    i = l(i, s, a, c, e[u + 4], 7, -176418897),
                    c = l(c, i, s, a, e[u + 5], 12, 1200080426),
                    a = l(a, c, i, s, e[u + 6], 17, -1473231341),
                    s = l(s, a, c, i, e[u + 7], 22, -45705983),
                    i = l(i, s, a, c, e[u + 8], 7, 1770035416),
                    c = l(c, i, s, a, e[u + 9], 12, -1958414417),
                    a = l(a, c, i, s, e[u + 10], 17, -42063),
                    s = l(s, a, c, i, e[u + 11], 22, -1990404162),
                    i = l(i, s, a, c, e[u + 12], 7, 1804603682),
                    c = l(c, i, s, a, e[u + 13], 12, -40341101),
                    a = l(a, c, i, s, e[u + 14], 17, -1502002290),
                    i = m(i, s = l(s, a, c, i, e[u + 15], 22, 1236535329), a, c, e[u + 1], 5, -165796510),
                    c = m(c, i, s, a, e[u + 6], 9, -1069501632),
                    a = m(a, c, i, s, e[u + 11], 14, 643717713),
                    s = m(s, a, c, i, e[u], 20, -373897302),
                    i = m(i, s, a, c, e[u + 5], 5, -701558691),
                    c = m(c, i, s, a, e[u + 10], 9, 38016083),
                    a = m(a, c, i, s, e[u + 15], 14, -660478335),
                    s = m(s, a, c, i, e[u + 4], 20, -405537848),
                    i = m(i, s, a, c, e[u + 9], 5, 568446438),
                    c = m(c, i, s, a, e[u + 14], 9, -1019803690),
                    a = m(a, c, i, s, e[u + 3], 14, -187363961),
                    s = m(s, a, c, i, e[u + 8], 20, 1163531501),
                    i = m(i, s, a, c, e[u + 13], 5, -1444681467),
                    c = m(c, i, s, a, e[u + 2], 9, -51403784),
                    a = m(a, c, i, s, e[u + 7], 14, 1735328473),
                    i = f(i, s = m(s, a, c, i, e[u + 12], 20, -1926607734), a, c, e[u + 5], 4, -378558),
                    c = f(c, i, s, a, e[u + 8], 11, -2022574463),
                    a = f(a, c, i, s, e[u + 11], 16, 1839030562),
                    s = f(s, a, c, i, e[u + 14], 23, -35309556),
                    i = f(i, s, a, c, e[u + 1], 4, -1530992060),
                    c = f(c, i, s, a, e[u + 4], 11, 1272893353),
                    a = f(a, c, i, s, e[u + 7], 16, -155497632),
                    s = f(s, a, c, i, e[u + 10], 23, -1094730640),
                    i = f(i, s, a, c, e[u + 13], 4, 681279174),
                    c = f(c, i, s, a, e[u], 11, -358537222),
                    a = f(a, c, i, s, e[u + 3], 16, -722521979),
                    s = f(s, a, c, i, e[u + 6], 23, 76029189),
                    i = f(i, s, a, c, e[u + 9], 4, -640364487),
                    c = f(c, i, s, a, e[u + 12], 11, -421815835),
                    a = f(a, c, i, s, e[u + 15], 16, 530742520),
                    i = g(i, s = f(s, a, c, i, e[u + 2], 23, -995338651), a, c, e[u], 6, -198630844),
                    c = g(c, i, s, a, e[u + 7], 10, 1126891415),
                    a = g(a, c, i, s, e[u + 14], 15, -1416354905),
                    s = g(s, a, c, i, e[u + 5], 21, -57434055),
                    i = g(i, s, a, c, e[u + 12], 6, 1700485571),
                    c = g(c, i, s, a, e[u + 3], 10, -1894986606),
                    a = g(a, c, i, s, e[u + 10], 15, -1051523),
                    s = g(s, a, c, i, e[u + 1], 21, -2054922799),
                    i = g(i, s, a, c, e[u + 8], 6, 1873313359),
                    c = g(c, i, s, a, e[u + 15], 10, -30611744),
                    a = g(a, c, i, s, e[u + 6], 15, -1560198380),
                    s = g(s, a, c, i, e[u + 13], 21, 1309151649),
                    i = g(i, s, a, c, e[u + 4], 6, -145523070),
                    c = g(c, i, s, a, e[u + 11], 10, -1120210379),
                    a = g(a, c, i, s, e[u + 2], 15, 718787259),
                    s = g(s, a, c, i, e[u + 9], 21, -343485551),
                    i = p(i, n),
                    s = p(s, o),
                    a = p(a, r),
                    c = p(c, d);
                return [i, s, a, c]
            }
            function c(e) {
                for (var t = "", n = 0; n < 32 * e.length; n += 8)
                    t += String.fromCharCode(e[n >> 5] >>> n % 32 & 255);
                return t
            }
            function u(e) {
                var t, n = [];
                for (n[(e.length >> 2) - 1] = void 0,
                t = 0; t < n.length; t += 1)
                    n[t] = 0;
                for (t = 0; t < 8 * e.length; t += 8)
                    n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32;
                return n
            }
            function o(e) {
                for (var t, n = "0123456789abcdef", o = "", r = 0; r < e.length; r += 1)
                    t = e.charCodeAt(r),
                    o += n.charAt(t >>> 4 & 15) + n.charAt(15 & t);
                return o
            }
            function d(e) {
                return unescape(encodeURIComponent(e))
            }
            function r(e) {
                return c(s(u(e = d(e)), 8 * e.length))
            }
            function i(e, t) {
                var n, e = d(e), t = d(t), o = u(e), r = [], i = [];
                for (r[15] = i[15] = void 0,
                16 < o.length && (o = s(o, 8 * e.length)),
                n = 0; n < 16; n += 1)
                    r[n] = 909522486 ^ o[n],
                    i[n] = 1549556828 ^ o[n];
                return e = s(r.concat(u(t)), 512 + 8 * t.length),
                c(s(i.concat(e), 640))
            }
            n.exports = function(e, t, n) {
                return t ? n ? i(t, e) : o(i(t, e)) : n ? r(e) : o(r(e))
            }
        }
        .call(t, n, t, e);
        void 0 === n || (e.exports = n)
    },

使用前需要把加载器先定义变量导出才能使用,再修改下代码,

如图,我们是需要使用function s(e){},在s方法定义结束后直接导出,最后补一个调用方法,再运行代码,可以出结果

 第一次扒webpack,如有不对的地方,还请大佬指点一二。

以下是全部代码:

!function(c) {
    function e(e) {
        for (var t, n, o = e[0], r = e[1], i = e[2], s = 0, a = []; s < o.length; s++)
            n = o[s],
            Object.prototype.hasOwnProperty.call(d, n) && d[n] && a.push(d[n][0]),
            d[n] = 0;
        for (t in r)
            Object.prototype.hasOwnProperty.call(r, t) && (c[t] = r[t]);
        for (l && l(e); a.length; )
            a.shift()();
        return p.push.apply(p, i || []),
        u()
    }
    function u() {
        for (var e, t = 0; t < p.length; t++) {
            for (var n = p[t], o = !0, r = 1; r < n.length; r++) {
                var i = n[r];
                0 !== d[i] && (o = !1)
            }
            o && (p.splice(t--, 1),
            e = s(s.s = n[0]))
        }
        return e
    }
    var n = {}
      , d = {
        "login/loginpage/loginpage": 0
    }
      , p = [];
    function s(e) {
        if (n[e])
            return n[e].exports;
        var t = n[e] = {
            i: e,
            l: !1,
            exports: {}
        };
        return c[e].call(t.exports, t, t.exports, s),
        t.l = !0,
        t.exports
    }
    s.m = c,
    s.c = n,
    s.d = function(e, t, n) {
        s.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: n
        })
    },
        //先要把加载器导出,我们才能使用
         window.jiami = s;
    
     s.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    s.t = function(t, e) {
        if (1 & e && (t = s(t)),
        8 & e)
            return t;
        if (4 & e && "object" == typeof t && t && t.__esModule)
            return t;
        var n = Object.create(null);
        if (s.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: t
        }),
        2 & e && "string" != typeof t)
            for (var o in t)
                s.d(n, o, function(e) {
                    return t[e]
                }
                .bind(null, o));
        return n
    }
    ,
    s.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e.default
        }
        : function() {
            return e
        }
        ;
        return s.d(t, "a", t),
        t
    }
    ,
    s.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    s.p = "/mpres/zh_CN/htmledition/";
    var r = (t = window.webpackJsonp = window.webpackJsonp || []).push.bind(t);
    t.push = e;
    for (var t = t.slice(), o = 0; o < t.length; o++)
        e(t[o]);
    var l = r;

}({

    "./src/3rd/md5/md5.js": function(e, t, n) {
        "use strict";
        n = function(e, t, n) {
            function p(e, t) {
                var n = (65535 & e) + (65535 & t);
                return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
            }
            function a(e, t, n, o, r, i) {
                return p((t = p(p(t, e), p(o, i))) << r | t >>> 32 - r, n)
            }
            function l(e, t, n, o, r, i, s) {
                return a(t & n | ~t & o, e, t, r, i, s)
            }
            function m(e, t, n, o, r, i, s) {
                return a(t & o | n & ~o, e, t, r, i, s)
            }
            function f(e, t, n, o, r, i, s) {
                return a(t ^ n ^ o, e, t, r, i, s)
            }
            function g(e, t, n, o, r, i, s) {
                return a(n ^ (t | ~o), e, t, r, i, s)
            }
            function s(e, t) {
                e[t >> 5] |= 128 << t % 32,
                e[14 + (t + 64 >>> 9 << 4)] = t;
                for (var n, o, r, d, i = 1732584193, s = -271733879, a = -1732584194, c = 271733878, u = 0; u < e.length; u += 16)
                    i = l(n = i, o = s, r = a, d = c, e[u], 7, -680876936),
                    c = l(c, i, s, a, e[u + 1], 12, -389564586),
                    a = l(a, c, i, s, e[u + 2], 17, 606105819),
                    s = l(s, a, c, i, e[u + 3], 22, -1044525330),
                    i = l(i, s, a, c, e[u + 4], 7, -176418897),
                    c = l(c, i, s, a, e[u + 5], 12, 1200080426),
                    a = l(a, c, i, s, e[u + 6], 17, -1473231341),
                    s = l(s, a, c, i, e[u + 7], 22, -45705983),
                    i = l(i, s, a, c, e[u + 8], 7, 1770035416),
                    c = l(c, i, s, a, e[u + 9], 12, -1958414417),
                    a = l(a, c, i, s, e[u + 10], 17, -42063),
                    s = l(s, a, c, i, e[u + 11], 22, -1990404162),
                    i = l(i, s, a, c, e[u + 12], 7, 1804603682),
                    c = l(c, i, s, a, e[u + 13], 12, -40341101),
                    a = l(a, c, i, s, e[u + 14], 17, -1502002290),
                    i = m(i, s = l(s, a, c, i, e[u + 15], 22, 1236535329), a, c, e[u + 1], 5, -165796510),
                    c = m(c, i, s, a, e[u + 6], 9, -1069501632),
                    a = m(a, c, i, s, e[u + 11], 14, 643717713),
                    s = m(s, a, c, i, e[u], 20, -373897302),
                    i = m(i, s, a, c, e[u + 5], 5, -701558691),
                    c = m(c, i, s, a, e[u + 10], 9, 38016083),
                    a = m(a, c, i, s, e[u + 15], 14, -660478335),
                    s = m(s, a, c, i, e[u + 4], 20, -405537848),
                    i = m(i, s, a, c, e[u + 9], 5, 568446438),
                    c = m(c, i, s, a, e[u + 14], 9, -1019803690),
                    a = m(a, c, i, s, e[u + 3], 14, -187363961),
                    s = m(s, a, c, i, e[u + 8], 20, 1163531501),
                    i = m(i, s, a, c, e[u + 13], 5, -1444681467),
                    c = m(c, i, s, a, e[u + 2], 9, -51403784),
                    a = m(a, c, i, s, e[u + 7], 14, 1735328473),
                    i = f(i, s = m(s, a, c, i, e[u + 12], 20, -1926607734), a, c, e[u + 5], 4, -378558),
                    c = f(c, i, s, a, e[u + 8], 11, -2022574463),
                    a = f(a, c, i, s, e[u + 11], 16, 1839030562),
                    s = f(s, a, c, i, e[u + 14], 23, -35309556),
                    i = f(i, s, a, c, e[u + 1], 4, -1530992060),
                    c = f(c, i, s, a, e[u + 4], 11, 1272893353),
                    a = f(a, c, i, s, e[u + 7], 16, -155497632),
                    s = f(s, a, c, i, e[u + 10], 23, -1094730640),
                    i = f(i, s, a, c, e[u + 13], 4, 681279174),
                    c = f(c, i, s, a, e[u], 11, -358537222),
                    a = f(a, c, i, s, e[u + 3], 16, -722521979),
                    s = f(s, a, c, i, e[u + 6], 23, 76029189),
                    i = f(i, s, a, c, e[u + 9], 4, -640364487),
                    c = f(c, i, s, a, e[u + 12], 11, -421815835),
                    a = f(a, c, i, s, e[u + 15], 16, 530742520),
                    i = g(i, s = f(s, a, c, i, e[u + 2], 23, -995338651), a, c, e[u], 6, -198630844),
                    c = g(c, i, s, a, e[u + 7], 10, 1126891415),
                    a = g(a, c, i, s, e[u + 14], 15, -1416354905),
                    s = g(s, a, c, i, e[u + 5], 21, -57434055),
                    i = g(i, s, a, c, e[u + 12], 6, 1700485571),
                    c = g(c, i, s, a, e[u + 3], 10, -1894986606),
                    a = g(a, c, i, s, e[u + 10], 15, -1051523),
                    s = g(s, a, c, i, e[u + 1], 21, -2054922799),
                    i = g(i, s, a, c, e[u + 8], 6, 1873313359),
                    c = g(c, i, s, a, e[u + 15], 10, -30611744),
                    a = g(a, c, i, s, e[u + 6], 15, -1560198380),
                    s = g(s, a, c, i, e[u + 13], 21, 1309151649),
                    i = g(i, s, a, c, e[u + 4], 6, -145523070),
                    c = g(c, i, s, a, e[u + 11], 10, -1120210379),
                    a = g(a, c, i, s, e[u + 2], 15, 718787259),
                    s = g(s, a, c, i, e[u + 9], 21, -343485551),
                    i = p(i, n),
                    s = p(s, o),
                    a = p(a, r),
                    c = p(c, d);
                return [i, s, a, c]
            }
            function c(e) {
                for (var t = "", n = 0; n < 32 * e.length; n += 8)
                    t += String.fromCharCode(e[n >> 5] >>> n % 32 & 255);
                return t
            }
            function u(e) {
                var t, n = [];
                for (n[(e.length >> 2) - 1] = void 0,
                t = 0; t < n.length; t += 1)
                    n[t] = 0;
                for (t = 0; t < 8 * e.length; t += 8)
                    n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32;
                return n
            }
            function o(e) {
                for (var t, n = "0123456789abcdef", o = "", r = 0; r < e.length; r += 1)
                    t = e.charCodeAt(r),
                    o += n.charAt(t >>> 4 & 15) + n.charAt(15 & t);
                return o
            }
            function d(e) {
                return unescape(encodeURIComponent(e))
            }
            function r(e) {
                return c(s(u(e = d(e)), 8 * e.length))
            }
            function i(e, t) {
                var n, e = d(e), t = d(t), o = u(e), r = [], i = [];
                for (r[15] = i[15] = void 0,
                16 < o.length && (o = s(o, 8 * e.length)),
                n = 0; n < 16; n += 1)
                    r[n] = 909522486 ^ o[n],
                    i[n] = 1549556828 ^ o[n];
                return e = s(r.concat(u(t)), 512 + 8 * t.length),
                c(s(i.concat(e), 640))
            }
            n.exports = function(e, t, n) {
                return t ? n ? i(t, e) : o(i(t, e)) : n ? r(e) : o(r(e))
            }
        }
        .call(t, n, t, e);
        void 0 === n || (e.exports = n)
    },
    
});

 function get_pwd(_md5){

      var _md5 =  new window.jiami("./src/3rd/md5/md5.js");
      return  _md5
     
 };

总结

2000多行的源代码,扒完后修改成200多行,应该是有问题的吧。希望大佬们能给出宝贵的意见和建议,感谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

某公众号登录加密(webpack) 的相关文章

  • 单击输入[复选框]的标签将触发父级单击事件两次(淘汰)

    考虑这把小提琴 http jsfiddle net 9rkrahm6 我有一个
  • 如何检测浏览器是否支持自定义元素

    我正在查看 Modernizr 它应该有助于功能检测 这应该可以帮助确定您的网站是否与给定的 Web 浏览器兼容 但我没有看到任何表明我可以使用它来检测自定义 HTML 的内容我们在内容中创建和定义的元素 如果不是 Modernizr 我如
  • 使用 vscode 调试器调试 next.js

    我已经使用安装了一个项目创建下一个应用程序 https github com segmentio create next app 我需要使用我的编辑器 vscode 调试服务器端渲染 所以我访问过vscode recipes 如何调试 ne
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比

随机推荐

  • SQL模糊查询变量参数

    Transactional Modifying Query value select from 表名 where name like 1 nativeQuery true List
  • FindObjectOfType函数

    介绍 在Unity游戏引擎中 FindObjectOfType函数用于在场景中查找指定类型的单个活动对象 它可以通过提供类型参数来查找一个激活状态的场景对象 并返回第一个找到的对象实例 这个函数在需要查找某个特定类型的对象时非常有用 尤其是
  • BUG:阿里巴巴图标库引入链接后,icon有时候会不显示的话svg下载到本地使用

    忽然icon图标就不显示 但是代码 icon链接地址都没有发生变化 解决办法 将icon图标下载到本地 记住前后引用本地的名字要保持一致
  • C++中的代码重用与其他

    当初始化列表包含多个项目时 这些项目被初始化的顺序为他们被声明的顺序 而不是他们在初始化列表中的顺序 1 私有继承 使用私有继承 基类的公有成员和保护成员都将称为派生类的私有成员 使用公有继承 基类的公有方法将称为派生类的公有方法 使用私有
  • 开源框架RuoYi-Vue学习之集成redis/集成验证码

    1 请参见项目代码地址 文章目录 一 集成redis 二 验证码功能 图形验证码 数学验证码 三 使用postman测试验证码 四 存在的问题 使用redis工具查看为二进制数据 对开发者不友好 4 1 注意 4 2 解决方法 gt 配置序
  • ​LeetCode刷题实战267:回文排列II

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 回文排列II 我们先来看题面
  • Chrome启动参数大全

    原文地址 https www cnblogs com yikemogutou articles 12624113 html 序号 条件 说明 1 报告伪分配跟踪 伪跟踪从当前活动的跟踪事件派生 2 prefetch 1 prefetch 启
  • 【无标题】Unable to convert type java.lang.Character of 8 to type of java.lang.CharSequence

    服务器内部错误org mybatis spring MyBatisSystemException nested exception is org apache ibatis exceptions PersistenceException E
  • GitHub 80k星Python神级学习路线,从青铜到王者,赶紧收藏!

    Python 为什么这么火 有很多原因 列举几点 语法简单易学 其他语言 5 行代码才能实现的东西 Python 一行搞定 可以少写很多代码 因此不少同学拿 Python 刷算法题 但注意要理解算法本身哦 类库生态丰富 想做什么功能基本都有
  • 程序计数器的作用--简单易懂

    3 程序计数器 什么是程序计数器 它是干什么用的 java中程序计数器是用寄存器实现的 它的作用是寻找下一个要执行的程序 当我们的java程序被编译成二进制字节码文件后 如下图 右面 是我们写的代码 左面是二进制字节码形式 class 它们
  • FFmpeg 控制台窗口的隐藏和正常退出

    FFmpeg无疑是音视频界的翘首 很多企业或个人都会拿来使用 具体怎么使用 在此不做赘述 这里仅仅讲述如何用C 调用ffmpeg指令 以及调用的控制台窗口的正常关闭 录像或转码等情况下 非正常关闭 直接导致文件损坏 不可用 一 指令的执行
  • PID控制原理详解(一)

    PID的理解 关于理解PID控制算法最典型的一个例子就是一个漏水的水缸的问题 网上有很多讲解PID的帖子会讲到这个例子 这里我也把我自己对于PID的理解用这个例子阐述一遍 有个漏水的水缸 而且漏水的速度还不是恒定的 然后我们还有个水桶 我们
  • BES2300x笔记(14) -- 提示音模块

    哈喽大家好 这是该系列博文的第十四篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 提示音 的这个模块 代码量确实不小啊 这一篇 我们就来梳理一下 提示音相关接口的调用逻辑吧 二 代码调用逻辑 app voice repor
  • To see the full stack trace of the errors, re-run Maven with the -e switch.

    问题描述 微服务项目中其它模块不能依赖common模块中的依赖 而common中是有依赖的 然后重新对common进行install发现报错 原因分析 经过查找是由于common中的pom xml中有一个依赖被引入了两次 删掉其中一个即可
  • 461. 汉明距离

    题目描述 两个整数间的汉明距离是指 这两个数字对应二进制位不同的位置的数目 给定两个整数 x 和 y 计算它们间的汉明距离 注意 0 x y lt 2 31 样例 示例 输入 x 1 y 4 输出 2 解释 1 0 0 0 1 4 0 1
  • 从0到1,一文掌握用户画像标签体系

    一 标签体系概览 1 什么是对象 2 什么是标签 标签是人为设定的 根据业务场景需求 对目标对象运用一定的算法得到的高度精炼的特征标识 标签是对对象某个维度特征的描述与刻画 是某一种用户特征的符号表示 每一种标签都规定了我们观察认识描述对象
  • Redis第二十二讲 Redis高可用集群节点通信机制

    两个端口 在哨兵系统中 节点分为数据节点和哨兵节点 前者存储数据 后者实现额外的控制功能 在集群中 没有数据节点与非数据节点之分 所有的节点都存储数据 也都参与集群状态的维护 为此 集群中的每个节点 都提供了两个 TCP端口 普通端口 即我
  • 电脑上面的word文档被删除了怎么办?分享四种亲测恢复方法

    不小心把电脑里面的word文档删除了 当你需要用到这些被误删的文档后 怎么找回呢 根本不知道从何入手的小伙伴不用担心 因为办法总比困难多多 下面就让小编为大家分享word文档恢复的方法 方法均以win10系统为例进行操作 大家跟着操作将其恢
  • android.content.res.Resources$NotFoundException: String resource ID #0x1

    在Android开发中如果出现android content res Resources NotFoundException String resource ID 0x1这样的错误 你想也不用想 一定是Textview控件显示数据出了问题
  • 某公众号登录加密(webpack)

    前言 随手记 1 本文章仅作学习参考使用 不做其他使用 网站 aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tLw 输入密码 分析抓包信息 如下 可以初步判断是一个md5的密文数据 使用全局搜索Search定位到加密位置下断