逆向案例二十八——某高考志愿网异步请求头参数加密,以及webpack

news2024/11/25 9:48:36

网址:aHR0cDovL3d3dy54aW5nYW9rYW90Yi5jb20vY29sbGVnZXMvc2VhcmNo

抓包分析,发现请求头有参数u-sign是加密的,载荷没有进行加密,直接跟栈分析。

进入第二个栈,打上断点,分析有没有加密位置。

可以看到参数已经进行加密了

往上跟栈,找到异步位置,打上断点,发现参数没了,这说明加密在异步的函数中

直接进入t的第一个函数,一下子就找到了加密位置,打上断点,发现就是这里加密,加密函数是o

进入o函数里面去看看,打上断点,发现最后的n就是加密位置。

复制下来,写好函数,n没有定义,直接去找n

不要直接进入n函数去复制,会有很多模块,累死人也搞不定。也不要猜测是MD5,我试过了不对的。 往上看看,有新发现。原来是一个webpack。

打上断点,进入加载器r,先全部复制下来。

导出加载器,补环境,现在就去找函数模块了。

缺少什么模块,就去找什么函数模块,添加模块

最终结果:

现在我们有了u-sign,可以带着请求头去访问数据了。

爬取结果:

完整python代码如下。

import requests
import json
import execjs
for page in range(1,21):
    data = {
      "keyword": "",
      "provinceNames": [],
      "natureTypes": [],
      "eduLevel": "",
      "categories": [],
      "features": [],
      "pageIndex": page,
      "pageSize": 20,
      "sort": 11
    }
    e = '/youzy.dms.basiclib.api.college.query'
    js_code = execjs.compile(open('中国大学生志愿网逆向.js','r',encoding='utf-8').read())
    u_sign = js_code.call('get_sign',e,data)

    url = 'https://uwf7de983aad7a717eb.youzy.cn/youzy.dms.basiclib.api.college.query'

    headers = {
      "Accept": "*/*",
      "Accept-Language": "zh-CN,zh;q=0.9",
      "Cache-Control": "no-cache",
      "Connection": "keep-alive",
      "Content-Type": "application/json",
      "Origin": "http://pv4y-pc.youzy.cn",
      "Pragma": "no-cache",
      "Referer": "http://pv4y-pc.youzy.cn/",
      "Sec-Fetch-Dest": "empty",
      "Sec-Fetch-Mode": "cors",
      "Sec-Fetch-Site": "cross-site",
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
      "sec-ch-ua-mobile": "?0",
      "u-sign": u_sign,
    }


    data = json.dumps(data, separators=(',', ':'))

    # 发送GET请求
    response = requests.post(url, headers=headers, data=data).json()
    print(f'正在爬取第{page}页数据')
    for item in response['result']['items']:
        print(item)

完整js代码:

window=global;
navigator={};
var yangxin;
!function(e) {
    function n(n) {
        for (var t, o, r = n[0], i = n[1], a = n[2], d = 0, h = []; d < r.length; d++)
            o = r[d],
            u[o] && h.push(u[o][0]),
            u[o] = 0;
        for (t in i)
            Object.prototype.hasOwnProperty.call(i, t) && (e[t] = i[t]);
        for (s && s(n); h.length; )
            h.shift()();
        return l.push.apply(l, a || []),
        c()
    }
    function c() {
        for (var e, n = 0; n < l.length; n++) {
            for (var c = l[n], t = !0, o = 1; o < c.length; o++) {
                var i = c[o];
                0 !== u[i] && (t = !1)
            }
            t && (l.splice(n--, 1),
            e = r(r.s = c[0]))
        }
        return e
    }
    var t = {}
      , o = {
        colleges: 0
    }
      , u = {
        colleges: 0
    }
      , l = [];
    function r(n) {
        console.log(n)
        if (t[n])
            return t[n].exports;
        var c = t[n] = {
            i: n,
            l: !1,
            exports: {}
        };
        return e[n].call(c.exports, c, c.exports, r),
        c.l = !0,
        c.exports
    }
    yangxin = r
    r.e = function(e) {
        var n = [];
        o[e] ? n.push(o[e]) : 0 !== o[e] && {
            "chunk-35866964": 1,
            "chunk-2360ff8e": 1,
            "chunk-38859794": 1,
            "chunk-3c11c494": 1,
            "chunk-549e1a9c": 1,
            "chunk-7935269e": 1,
            "chunk-419eda10": 1,
            "chunk-464dda61": 1,
            "chunk-6cafc15a": 1,
            "chunk-71d9e258": 1,
            "chunk-7f496c16": 1,
            "chunk-bb50558a": 1,
            "chunk-efd8109e": 1,
            "chunk-4eb7095a": 1,
            "chunk-52ca585a": 1,
            "chunk-5c99f7cd": 1,
            "chunk-9a15c92e": 1,
            "chunk-6b41533f": 1,
            "chunk-64568e68": 1
        }[e] && n.push(o[e] = new Promise((function(n, c) {
            for (var t = "static/css/" + ({}[e] || e) + "." + {
                "chunk-2d0c2339": "31d6cfe0",
                "chunk-2d21d0c2": "31d6cfe0",
                "chunk-35866964": "4c0b4922",
                "chunk-2360ff8e": "229fbfea",
                "chunk-38859794": "37dd7c64",
                "chunk-3c11c494": "d5d496a0",
                "chunk-549e1a9c": "03ef9d40",
                "chunk-7935269e": "862057d8",
                "chunk-419eda10": "1fb6f521",
                "chunk-464dda61": "cfd2c688",
                "chunk-6cafc15a": "4d3173ef",
                "chunk-71d9e258": "7a300765",
                "chunk-7f496c16": "b458d8e8",
                "chunk-bb50558a": "473d5668",
                "chunk-efd8109e": "2a141185",
                "chunk-4eb7095a": "11cb1ac7",
                "chunk-52ca585a": "aea92b8f",
                "chunk-5c99f7cd": "b32dcf4f",
                "chunk-9a15c92e": "f6c185b7",
                "chunk-6b41533f": "3ce3c01f",
                "chunk-64568e68": "8df6b4dd"
            }[e] + ".css", u = r.p + t, l = document.getElementsByTagName("link"), i = 0; i < l.length; i++) {
                var a = l[i]
                  , d = a.getAttribute("data-href") || a.getAttribute("href");
                if ("stylesheet" === a.rel && (d === t || d === u))
                    return n()
            }
            var s = document.getElementsByTagName("style");
            for (i = 0; i < s.length; i++)
                if ((d = (a = s[i]).getAttribute("data-href")) === t || d === u)
                    return n();
            var h = document.createElement("link");
            h.rel = "stylesheet",
            h.type = "text/css",
            h.onload = n,
            h.onerror = function(n) {
                var t = n && n.target && n.target.src || u
                  , l = new Error("Loading CSS chunk " + e + " failed.\n(" + t + ")");
                l.code = "CSS_CHUNK_LOAD_FAILED",
                l.request = t,
                delete o[e],
                h.parentNode.removeChild(h),
                c(l)
            }
            ,
            h.href = u,
            document.getElementsByTagName("head")[0].appendChild(h)
        }
        )).then((function() {
            o[e] = 0
        }
        )));
        var c = u[e];
        if (0 !== c)
            if (c)
                n.push(c[2]);
            else {
                var t = new Promise((function(n, t) {
                    c = u[e] = [n, t]
                }
                ));
                n.push(c[2] = t);
                var l, i = document.createElement("script");
                i.charset = "utf-8",
                i.timeout = 120,
                r.nc && i.setAttribute("nonce", r.nc),
                i.src = function(e) {
                    return r.p + "static/js/" + ({}[e] || e) + "." + {
                        "chunk-2d0c2339": "df908623",
                        "chunk-2d21d0c2": "f10b1931",
                        "chunk-35866964": "302e2bfb",
                        "chunk-2360ff8e": "9743b626",
                        "chunk-38859794": "66283e5c",
                        "chunk-3c11c494": "4826745b",
                        "chunk-549e1a9c": "3d088ca7",
                        "chunk-7935269e": "d85f859e",
                        "chunk-419eda10": "42b68507",
                        "chunk-464dda61": "5940abb1",
                        "chunk-6cafc15a": "0212a01a",
                        "chunk-71d9e258": "f1eb98b7",
                        "chunk-7f496c16": "a88f156b",
                        "chunk-bb50558a": "0e61f5a1",
                        "chunk-efd8109e": "85fc6c16",
                        "chunk-4eb7095a": "1883497a",
                        "chunk-52ca585a": "58c51b53",
                        "chunk-5c99f7cd": "3bc3dfbc",
                        "chunk-9a15c92e": "8d6ff628",
                        "chunk-6b41533f": "9c170679",
                        "chunk-64568e68": "dd10ee97"
                    }[e] + ".js"
                }(e),
                l = function(n) {
                    i.onerror = i.onload = null,
                    clearTimeout(a);
                    var c = u[e];
                    if (0 !== c) {
                        if (c) {
                            var t = n && ("load" === n.type ? "missing" : n.type)
                              , o = n && n.target && n.target.src
                              , l = new Error("Loading chunk " + e + " failed.\n(" + t + ": " + o + ")");
                            l.type = t,
                            l.request = o,
                            c[1](l)
                        }
                        u[e] = void 0
                    }
                }
                ;
                var a = setTimeout((function() {
                    l({
                        type: "timeout",
                        target: i
                    })
                }
                ), 12e4);
                i.onerror = i.onload = l,
                document.head.appendChild(i)
            }
        return Promise.all(n)
    }
    ,
    r.m = e,
    r.c = t,
    r.d = function(e, n, c) {
        r.o(e, n) || Object.defineProperty(e, n, {
            enumerable: !0,
            get: c
        })
    }
    ,
    r.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    r.t = function(e, n) {
        if (1 & n && (e = r(e)),
        8 & n)
            return e;
        if (4 & n && "object" == typeof e && e && e.__esModule)
            return e;
        var c = Object.create(null);
        if (r.r(c),
        Object.defineProperty(c, "default", {
            enumerable: !0,
            value: e
        }),
        2 & n && "string" != typeof e)
            for (var t in e)
                r.d(c, t, function(n) {
                    return e[n]
                }
                .bind(null, t));
        return c
    }
    ,
    r.n = function(e) {
        var n = e && e.__esModule ? function() {
            return e.default
        }
        : function() {
            return e
        }
        ;
        return r.d(n, "a", n),
        n
    }
    ,
    r.o = function(e, n) {
        return Object.prototype.hasOwnProperty.call(e, n)
    }
    ,
    r.p = "/",
    r.oe = function(e) {
        throw e
    }
    ;
    var i = window.webpackJsonp = window.webpackJsonp || []
      , a = i.push.bind(i);
    i.push = n,
    i = i.slice();
    for (var d = 0; d < i.length; d++)
        n(i[d]);
    var s = a;
    l.push([12, "chunk-commons"]),
    c()
}({
    12: function(e, n, c) {
        e.exports = c("9a94")
    },
    5880: function(e, n) {
        e.exports = Vuex
    },
    "60bb": function(e, n) {
        e.exports = _
    },
    "9a94": function(e, n, c) {
        "use strict";
        c.r(n),
        c("e260"),
        c("e6cf"),
        c("cca6"),
        c("a79d"),
        c("d3b7"),
        c("3ca3"),
        c("ddb0");
        var t = c("c1f7");
        Vue.use(VueRouter);
        var o = new Vue
          , u = [{
            path: "/careers",
            component: t.a,
            children: [{
                path: "/colleges/search",
                component: function() {
                    return Promise.all([c.e("chunk-5c99f7cd"), c.e("chunk-9a15c92e"), c.e("chunk-6b41533f")]).then(c.bind(null, "95fc"))
                },
                name: "CollegesSearch",
                meta: {
                    title: "院校库",
                    icon: ""
                }
            }, {
                path: "/colleges/detail",
                name: "CollegesDetail",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-6cafc15a")]).then(c.bind(null, "2e68"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "院校详情"
                }
            }, {
                path: "/colleges/liveList",
                name: "CollegesLiveList",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-efd8109e")]).then(c.bind(null, "6e40"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "院校直播页"
                }
            }, {
                path: "/colleges/scoreline",
                name: "CollegesScoreline",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-3c11c494"), c.e("chunk-7935269e")]).then(c.bind(null, "0be3"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "分数线"
                }
            }, {
                path: "/colleges/plan",
                name: "CollegesScoreline",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-3c11c494"), c.e("chunk-549e1a9c")]).then(c.bind(null, "4078"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "招生计划"
                }
            }, {
                path: "/colleges/introduction",
                name: "CollegesIntroduction",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-7f496c16")]).then(c.bind(null, "9c24"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "院校介绍"
                }
            }, {
                path: "/colleges/admissions-guide/list",
                name: "CollegesNewsList",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-2360ff8e")]).then(c.bind(null, "4a63"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "招生简章"
                }
            }, {
                path: "/colleges/admissions-guide/detail",
                name: "CollegesNewsDetail",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-419eda10")]).then(c.bind(null, "ceb6"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "招生简章"
                }
            }, {
                path: "/colleges/employmentreport/list",
                name: "CollegesEmploymentreportList",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-38859794")]).then(c.bind(null, "0bfa"))
                },
                beforeEnter: function(e, n, c) {
                    c(),
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "就业报告"
                }
            }, {
                path: "/colleges/compare",
                name: "CollegesCompare",
                component: function() {
                    return c.e("chunk-52ca585a").then(c.bind(null, "fd28"))
                },
                meta: {
                    title: "院校对比"
                }
            }, {
                path: "/colleges/image-list",
                name: "CollegesImageList",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-464dda61")]).then(c.bind(null, "5ff8"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "院校风采"
                }
            }, {
                path: "/colleges/vr",
                name: "CollegesVR",
                component: function() {
                    return c.e("chunk-2d0c2339").then(c.bind(null, "48fe"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "院校VR"
                }
            }, {
                path: "/colleges/preFraction",
                name: "CollegesPreFraction",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-bb50558a")]).then(c.bind(null, "baae"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "提前批招生计划"
                }
            }, {
                path: "/colleges/preFractionScoreline",
                name: "CollegesPreFractionScoreline",
                component: function() {
                    return Promise.all([c.e("chunk-2d21d0c2"), c.e("chunk-35866964"), c.e("chunk-71d9e258")]).then(c.bind(null, "ca37"))
                },
                beforeEnter: function(e, n, c) {
                    !e.query.collegeCode && e.query.cid ? o.api.sdk.dms.basiclib.colleges.bynumidGet(e.query.cid).then((function(n) {
                        e.query.collegeCode = n.result.code,
                        c()
                    }
                    )) : c()
                },
                meta: {
                    title: "提前批分数线"
                }
            }, {
                path: "/colleges/compare/probability",
                name: "CollegesCompareProbability",
                component: function() {
                    return c.e("chunk-4eb7095a").then(c.bind(null, "5179"))
                },
                meta: {
                    title: "院校录取概率"
                }
            }, {
                path: "/colleges/compare/score-line",
                name: "CollegesCompareScoreLine",
                component: function() {
                    return c.e("chunk-64568e68").then(c.bind(null, "31fa"))
                },
                meta: {
                    title: "院校分数线"
                }
            }]
        }]
          , l = new VueRouter({
            mode: "history",
            scrollBehavior: function() {
                return {
                    y: 0
                }
            },
            routes: u
        })
          , r = c("cf68");
        Object(r.a)(l, Vue)
    },
    6821: function(e, t, r) {
        !function() {
            var t = r("00d8")
              , n = r("9a63").utf8
              , i = r("8349")
              , o = r("9a63").bin
              , a = function(e, r) {
                e.constructor == String ? e = r && "binary" === r.encoding ? o.stringToBytes(e) : n.stringToBytes(e) : i(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || e.constructor === Uint8Array || (e = e.toString());
                for (var s = t.bytesToWords(e), u = 8 * e.length, c = 1732584193, f = -271733879, d = -1732584194, l = 271733878, h = 0; h < s.length; h++)
                    s[h] = 16711935 & (s[h] << 8 | s[h] >>> 24) | 4278255360 & (s[h] << 24 | s[h] >>> 8);
                s[u >>> 5] |= 128 << u % 32,
                s[14 + (u + 64 >>> 9 << 4)] = u;
                var p = a._ff
                  , b = a._gg
                  , y = a._hh
                  , m = a._ii;
                for (h = 0; h < s.length; h += 16) {
                    var g = c
                      , v = f
                      , _ = d
                      , w = l;
                    c = p(c, f, d, l, s[h + 0], 7, -680876936),
                    l = p(l, c, f, d, s[h + 1], 12, -389564586),
                    d = p(d, l, c, f, s[h + 2], 17, 606105819),
                    f = p(f, d, l, c, s[h + 3], 22, -1044525330),
                    c = p(c, f, d, l, s[h + 4], 7, -176418897),
                    l = p(l, c, f, d, s[h + 5], 12, 1200080426),
                    d = p(d, l, c, f, s[h + 6], 17, -1473231341),
                    f = p(f, d, l, c, s[h + 7], 22, -45705983),
                    c = p(c, f, d, l, s[h + 8], 7, 1770035416),
                    l = p(l, c, f, d, s[h + 9], 12, -1958414417),
                    d = p(d, l, c, f, s[h + 10], 17, -42063),
                    f = p(f, d, l, c, s[h + 11], 22, -1990404162),
                    c = p(c, f, d, l, s[h + 12], 7, 1804603682),
                    l = p(l, c, f, d, s[h + 13], 12, -40341101),
                    d = p(d, l, c, f, s[h + 14], 17, -1502002290),
                    c = b(c, f = p(f, d, l, c, s[h + 15], 22, 1236535329), d, l, s[h + 1], 5, -165796510),
                    l = b(l, c, f, d, s[h + 6], 9, -1069501632),
                    d = b(d, l, c, f, s[h + 11], 14, 643717713),
                    f = b(f, d, l, c, s[h + 0], 20, -373897302),
                    c = b(c, f, d, l, s[h + 5], 5, -701558691),
                    l = b(l, c, f, d, s[h + 10], 9, 38016083),
                    d = b(d, l, c, f, s[h + 15], 14, -660478335),
                    f = b(f, d, l, c, s[h + 4], 20, -405537848),
                    c = b(c, f, d, l, s[h + 9], 5, 568446438),
                    l = b(l, c, f, d, s[h + 14], 9, -1019803690),
                    d = b(d, l, c, f, s[h + 3], 14, -187363961),
                    f = b(f, d, l, c, s[h + 8], 20, 1163531501),
                    c = b(c, f, d, l, s[h + 13], 5, -1444681467),
                    l = b(l, c, f, d, s[h + 2], 9, -51403784),
                    d = b(d, l, c, f, s[h + 7], 14, 1735328473),
                    c = y(c, f = b(f, d, l, c, s[h + 12], 20, -1926607734), d, l, s[h + 5], 4, -378558),
                    l = y(l, c, f, d, s[h + 8], 11, -2022574463),
                    d = y(d, l, c, f, s[h + 11], 16, 1839030562),
                    f = y(f, d, l, c, s[h + 14], 23, -35309556),
                    c = y(c, f, d, l, s[h + 1], 4, -1530992060),
                    l = y(l, c, f, d, s[h + 4], 11, 1272893353),
                    d = y(d, l, c, f, s[h + 7], 16, -155497632),
                    f = y(f, d, l, c, s[h + 10], 23, -1094730640),
                    c = y(c, f, d, l, s[h + 13], 4, 681279174),
                    l = y(l, c, f, d, s[h + 0], 11, -358537222),
                    d = y(d, l, c, f, s[h + 3], 16, -722521979),
                    f = y(f, d, l, c, s[h + 6], 23, 76029189),
                    c = y(c, f, d, l, s[h + 9], 4, -640364487),
                    l = y(l, c, f, d, s[h + 12], 11, -421815835),
                    d = y(d, l, c, f, s[h + 15], 16, 530742520),
                    c = m(c, f = y(f, d, l, c, s[h + 2], 23, -995338651), d, l, s[h + 0], 6, -198630844),
                    l = m(l, c, f, d, s[h + 7], 10, 1126891415),
                    d = m(d, l, c, f, s[h + 14], 15, -1416354905),
                    f = m(f, d, l, c, s[h + 5], 21, -57434055),
                    c = m(c, f, d, l, s[h + 12], 6, 1700485571),
                    l = m(l, c, f, d, s[h + 3], 10, -1894986606),
                    d = m(d, l, c, f, s[h + 10], 15, -1051523),
                    f = m(f, d, l, c, s[h + 1], 21, -2054922799),
                    c = m(c, f, d, l, s[h + 8], 6, 1873313359),
                    l = m(l, c, f, d, s[h + 15], 10, -30611744),
                    d = m(d, l, c, f, s[h + 6], 15, -1560198380),
                    f = m(f, d, l, c, s[h + 13], 21, 1309151649),
                    c = m(c, f, d, l, s[h + 4], 6, -145523070),
                    l = m(l, c, f, d, s[h + 11], 10, -1120210379),
                    d = m(d, l, c, f, s[h + 2], 15, 718787259),
                    f = m(f, d, l, c, s[h + 9], 21, -343485551),
                    c = c + g >>> 0,
                    f = f + v >>> 0,
                    d = d + _ >>> 0,
                    l = l + w >>> 0
                }
                return t.endian([c, f, d, l])
            };
            a._ff = function(e, t, r, n, i, o, a) {
                var s = e + (t & r | ~t & n) + (i >>> 0) + a;
                return (s << o | s >>> 32 - o) + t
            }
            ,
            a._gg = function(e, t, r, n, i, o, a) {
                var s = e + (t & n | r & ~n) + (i >>> 0) + a;
                return (s << o | s >>> 32 - o) + t
            }
            ,
            a._hh = function(e, t, r, n, i, o, a) {
                var s = e + (t ^ r ^ n) + (i >>> 0) + a;
                return (s << o | s >>> 32 - o) + t
            }
            ,
            a._ii = function(e, t, r, n, i, o, a) {
                var s = e + (r ^ (t | ~n)) + (i >>> 0) + a;
                return (s << o | s >>> 32 - o) + t
            }
            ,
            a._blocksize = 16,
            a._digestsize = 16,
            e.exports = function(e, r) {
                if (null == e)
                    throw new Error("Illegal argument " + e);
                var n = t.wordsToBytes(a(e, r));
                return r && r.asBytes ? n : r && r.asString ? o.bytesToString(n) : t.bytesToHex(n)
            }
        }()
    },
    "00d8": function(e, t) {
        !function() {
            var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
              , r = {
                rotl: function(e, t) {
                    return e << t | e >>> 32 - t
                },
                rotr: function(e, t) {
                    return e << 32 - t | e >>> t
                },
                endian: function(e) {
                    if (e.constructor == Number)
                        return 16711935 & r.rotl(e, 8) | 4278255360 & r.rotl(e, 24);
                    for (var t = 0; t < e.length; t++)
                        e[t] = r.endian(e[t]);
                    return e
                },
                randomBytes: function(e) {
                    for (var t = []; e > 0; e--)
                        t.push(Math.floor(256 * Math.random()));
                    return t
                },
                bytesToWords: function(e) {
                    for (var t = [], r = 0, n = 0; r < e.length; r++,
                    n += 8)
                        t[n >>> 5] |= e[r] << 24 - n % 32;
                    return t
                },
                wordsToBytes: function(e) {
                    for (var t = [], r = 0; r < 32 * e.length; r += 8)
                        t.push(e[r >>> 5] >>> 24 - r % 32 & 255);
                    return t
                },
                bytesToHex: function(e) {
                    for (var t = [], r = 0; r < e.length; r++)
                        t.push((e[r] >>> 4).toString(16)),
                        t.push((15 & e[r]).toString(16));
                    return t.join("")
                },
                hexToBytes: function(e) {
                    for (var t = [], r = 0; r < e.length; r += 2)
                        t.push(parseInt(e.substr(r, 2), 16));
                    return t
                },
                bytesToBase64: function(e) {
                    for (var r = [], n = 0; n < e.length; n += 3)
                        for (var i = e[n] << 16 | e[n + 1] << 8 | e[n + 2], o = 0; o < 4; o++)
                            8 * n + 6 * o <= 8 * e.length ? r.push(t.charAt(i >>> 6 * (3 - o) & 63)) : r.push("=");
                    return r.join("")
                },
                base64ToBytes: function(e) {
                    e = e.replace(/[^A-Z0-9+\/]/gi, "");
                    for (var r = [], n = 0, i = 0; n < e.length; i = ++n % 4)
                        0 != i && r.push((t.indexOf(e.charAt(n - 1)) & Math.pow(2, -2 * i + 8) - 1) << 2 * i | t.indexOf(e.charAt(n)) >>> 6 - 2 * i);
                    return r
                }
            };
            e.exports = r
        }()
    },
     "9a63": function(e, t) {
        var r = {
            utf8: {
                stringToBytes: function(e) {
                    return r.bin.stringToBytes(unescape(encodeURIComponent(e)))
                },
                bytesToString: function(e) {
                    return decodeURIComponent(escape(r.bin.bytesToString(e)))
                }
            },
            bin: {
                stringToBytes: function(e) {
                    for (var t = [], r = 0; r < e.length; r++)
                        t.push(255 & e.charCodeAt(r));
                    return t
                },
                bytesToString: function(e) {
                    for (var t = [], r = 0; r < e.length; r++)
                        t.push(String.fromCharCode(e[r]));
                    return t.join("")
                }
            }
        };
        e.exports = r
    },
    8349: function(e, t) {
        function r(e) {
            return !!e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e)
        }
        e.exports = function(e) {
            return null != e && (r(e) || function(e) {
                return "function" == typeof e.readFloatLE && "function" == typeof e.slice && r(e.slice(0, 0))
            }(e) || !!e._isBuffer)
        }
    },
});
var n =yangxin("6821");
function get_sign(e, t) {
            var r, i = "9SASji5OWnG41iRKiSvTJHlXHmRySRp1", o = "", a = t || {}, s = (e = e || "").split("?");
            if (s.length > 0 && (r = s[1]),
            r) {
                var u = r.split("&")
                  , c = "";
                u.forEach((function(e) {
                    var t = e.split("=");
                    c += "".concat(t[0], "=").concat(encodeURI(t[1]), "&")
                }
                )),
                o = "".concat(_.trimEnd(c, "&"), "&").concat(i)
            } else
                o = Object.keys(a).length > 0 ? "".concat(JSON.stringify(a), "&").concat(i) : "&".concat(i);
                o = o.toLowerCase()
                return n(o);
        };
// var e = '/youzy.dms.basiclib.api.college.query';
// var t = {
//     "keyword": "",
//     "provinceNames": [],
//     "natureTypes": [],
//     "eduLevel": "",
//     "categories": [],
//     "features": [],
//     "pageIndex": 13,
//     "pageSize": 20,
//     "sort": 11
// };
// console.log(get_sign(e,t))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PyTorch】图像二分类项目-部署

【PyTorch】图像二分类项目 【PyTorch】图像二分类项目-部署 在独立于训练脚本的新脚本中部署用于推理的模型&#xff0c;需要构造一个模型类的对象&#xff0c;并将权重加载到模型中。操作流程为&#xff1a;定义模型--加载权重--在验证和测试数据集上部署模型。 import torch…

Windows11 安装Docker,安装至D盘(其他非C盘皆可)

Docker默认安装在C盘&#xff0c;这未来随着docker使用必定会导致C盘空间吃紧。 所以本文提前进行空间布局&#xff0c;将docker默认安装路径软链接到D盘。 软链接D盘 Docker默认安装路径为C:\Program Files\Docker。使用管理员权限打开命令终端 输入以下命令&#xff1a;m…

【LeetCode】day14:226 - 翻转二叉树, 101 - 对称二叉树, 104 - 二叉树的最大深度, 111 - 二叉树的最小深度

LeetCode 代码随想录跟练 Day14 226.翻转二叉树101.对称二叉树104.二叉树的最大深度111.二叉树的最小深度 226.翻转二叉树 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 使用递归处理&#xff08;迭代以及层序同…

jdk1.8 List集合Stream流式处理

jdk1.8 List集合Stream流式处理 一、介绍(为什么需要流Stream&#xff0c;能解决什么问题&#xff1f;)1.1 什么是 Stream&#xff1f;1.2 常见的创建Stream方法1.3 常见的中间操作1.4 常见的终端操作 二、创建流Stream2.1 Collection的.stream()方法2.2 数组创建流2.3 静态工厂…

单链表的创建与遍历--C

基本结构声明 struct node{int data; //数据域struct node *next;//指针域 }; #include<stdio.h> #include<stdlib.h>struct node{//链表结点 int data;//数据域 struct node *next;//指针域 }; typedef struct node Node; int main(void){Node *head,*p,*…

【高数复盘】武忠祥高数辅导讲义+严选题错题一轮复盘

第一章 函数、极限和连续 高等数学辅导讲义 1. 复盘&#xff1a;(xsinxcosx)(x-sixcosx)&#xff0c;前者可以带入cosx1&#xff0c;而后者不能带入&#xff0c;为何&#xff1f; 2. 复盘&#xff1a; 这道题很明显an≤1&#xff0c;对于直接求极限&#xff0c;可以考虑夹逼…

华为防火墙总部与分支机构建立IPsec VPN涉及NAT穿越

一、IPsec VPN基本概念 1、隧道建立方式&#xff1a;分为手动建立和IKE自动协商&#xff0c;手动建立需要人为配置指定所有IPsec建立的所有参数信息&#xff0c;不支持为动态地址的发起方&#xff0c;实际网络中很少应用&#xff1b;IKE协议是基于密钥管理协议ISAKMP框架设计而…

linux系统设置开机启动的两种方法systemd及rc.local(手工写sh脚本,手工写service服务)

文章目录 知识点实验一、systemd&#xff08;一&#xff09;自写一个sh脚本并加入开机启动&#xff08;二&#xff09;源码安装的nginx加入开机启动 rc.local 知识点 在Linux系统中&#xff0c;有多种方法可以设置开机启动。以下是其中的一些主要方法&#xff1a; systemd 在较…

本地部署 mistralai/Mistral-Nemo-Instruct-2407

本地部署 mistralai/Mistral-Nemo-Instruct-2407 1. 创建虚拟环境2. 安装 fschat3. 安装 transformers4. 安装 flash-attn5. 安装 pytorch6. 启动 controller7. 启动 mistralai/Mistral-Nemo-Instruct-24078. 启动 api9. 访问 mistralai/Mistral-Nemo-Instruct-2407 1. 创建虚拟…

[图解]《分析模式》漫谈16-“我用的”不能变成“我的”

1 00:00:00,720 --> 00:00:02,160 今天&#xff0c;我们来说一下 2 00:00:02,170 --> 00:00:04,850 “我用的”不能变成“我的” 3 00:00:04,860 --> 00:00:11,390 《分析模式》的前言 4 00:00:12,260 --> 00:00:13,410 有这么一句话 5 00:00:14,840 --> 0…

postman接口测试实战篇

击杀小游戏接口测试 接口测试简单介绍击杀小游戏代码下载单接口测试(postman)接口关联并参数化接口测试简单介绍 首先思考两个问题:1.接口是什么?2.接口测试是什么? 1.我们总是把接口想的很复杂,其实呢,它就是一个有特定输入和输出参数的交互逻辑处理单元,它不需要知…

学并发编程前需要明确的一些基础知识

线程和进程的区别 在计算机科学中&#xff0c;线程和进程是两个非常重要的概念。虽然它们常常被一起提到&#xff0c;但它们实际上有很大的不同。作为一个开发者&#xff0c;我在日常工作中经常需要区分这两者&#xff0c;以便更好地进行资源管理和优化。 进程与线程的基本定…

如何解决微服务下引起的 分布式事务问题

一、什么是分布式事务&#xff1f; 虽然叫分布式事务&#xff0c;但不是一定是分布式部署的服务之间才会产生分布式事务。不是在同一个服务或同一个数据库架构下&#xff0c;产生的事务&#xff0c;也就是分布式事务。 跨数据源的分布式事务 跨服务的分布式事务 二、解决方…

华为机试HJ60查找组成一个偶数最接近的两个素数

华为机试HJ60查找组成一个偶数最接近的两个素数 题目&#xff1a; 想法&#xff1a; 构建一个判断是否为素数的函数&#xff0c;再构建一个函数输出构成输入数值相差最小的两个素数。为了保证两个素数相差最小&#xff0c;从输入数值的二分之一处开始判断&#xff0c;遍历得到…

用Python写一个视频采集脚本,对某网站进行批量采集

最近某牙上又出现一批高质量视频&#xff0c;听说删的很快&#xff0c;还好我会Python&#xff0c;赶紧采集下来保存&#xff01; 准备工作 环境使用 Python 3.10 解释器 Pycharm 编辑器 模块使用 requests >>> 数据请求模块 re <正则表达式模块> os <文…

HW行动在即,邮件系统该怎么防守?

1. 什么是HW行动&#xff1f; HW行动是一项由公安部牵头&#xff0c;旨在评估企事业单位网络安全防护能力的活动&#xff0c;是国家应对网络安全问题所做的重要布局之一。 具体实践中&#xff0c;公安部组织攻防红、蓝两队&#xff08;红队为攻击队&#xff0c;主要由“国家队…

【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)

0x01 产品简介 NETGEAR WN604是一款由NETGEAR&#xff08;网件&#xff09;公司生产的无线接入器&#xff08;或无线路由器&#xff09;提供Wi-Fi保护协议&#xff08;WPA2-PSK, WPA-PSK&#xff09;&#xff0c;以及有线等效加密&#xff08;WEP&#xff09;64位、128位和152…

面向初学者和专家的 40 大机器学习问答(2024 年更新)

面向初学者和专家的 40 大机器学习问答(2024 年更新) 一、介绍 机器学习是人工智能的重要组成部分,目前是数据科学中最受欢迎的技能之一。如果你是一名数据科学家,你需要擅长 python、SQL 和机器学习——没有两种方法。作为 DataFest 2017 的一部分,我们组织了各种技能测…

正则表达式(Ⅰ)——基本匹配

学习练习建议 正则表达式用途非常广泛&#xff0c;各种语言中都能见到它的身影&#xff08;js&#xff0c;java&#xff0c;mysql等&#xff09; 正则表达式可以快读校验/生成/替换符合要求的模式的字符串&#xff0c;而且语法通俗易懂&#xff0c;所以应用广泛 学习链接&am…

php随机海量高清壁纸系统源码,数据采集于网络,使用很方便

2022 多个分类随机海量高清壁纸系统源码&#xff0c;核心文件就两个&#xff0c;php文件负责采集&#xff0c;html负责显示&#xff0c;很简单。做流量工具还是不错的。 非第三方接口&#xff0c;图片数据采集壁纸多多官方所有数据&#xff01; 大家拿去自行研究哈&#xff0…