网址: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))