parent
efbd7cbb05
commit
a7dc9e132c
8 changed files with 841 additions and 327 deletions
@ -0,0 +1,325 @@ |
|||||||
|
const CryptoJS = require('crypto-js'); |
||||||
|
|
||||||
|
logger = console.info; |
||||||
|
|
||||||
|
class FpCrypt { |
||||||
|
cookie = ""; |
||||||
|
publicKey = { |
||||||
|
publicKey: "", tokenKey: "" |
||||||
|
}; |
||||||
|
|
||||||
|
constructor(cookies, publicKey) { |
||||||
|
this.cookie = cookies |
||||||
|
if (publicKey) { |
||||||
|
this.publicKey = publicKey |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 处理 url 后缀 |
||||||
|
* @param t url |
||||||
|
* @param e |
||||||
|
* @returns {*} |
||||||
|
*/ |
||||||
|
handleSuffix = function (t, e) { |
||||||
|
var a = '1|4|2|0|3'['split']("|"), |
||||||
|
c = 0, s, l, f, d, p, h; |
||||||
|
if (!t) return t; |
||||||
|
if (t['indexOf']('cssSecurity/v1/getPublicKey') > -1) return t; |
||||||
|
s = t; |
||||||
|
l = this.Re(); |
||||||
|
f = l['publicKey']; |
||||||
|
d = l['tokenKey']; |
||||||
|
h = l['urlType']; |
||||||
|
p = l['urlYzm']; |
||||||
|
s = this.He(s, d, 0, e) |
||||||
|
if (p) { |
||||||
|
var u = (new Date)['valueOf'](); |
||||||
|
s += '&urls='['concat'](u) |
||||||
|
} |
||||||
|
logger(`处理url后缀${t} 完成返回${s}`) |
||||||
|
return s; |
||||||
|
// while (1) {
|
||||||
|
// switch (a[c++]) {
|
||||||
|
// case "0":
|
||||||
|
// // if (h && ("" !== h) && "1" !== h && (1 !== h))
|
||||||
|
// // ("2" === h) && (s = function (t, e, r) {
|
||||||
|
// // var a = t;
|
||||||
|
// // if (t['indexOf']('urlyzm=') > -1) return t;
|
||||||
|
// // if (t = this.He(t), r) {
|
||||||
|
// // var c = t["indexOf"]("?"), u = t['substring']((c + 1)), s = u['indexOf']('ruuid='),
|
||||||
|
// // l = u['substring'](s + 6);
|
||||||
|
// // l = l['substring'](0, l['indexOf']("&"));
|
||||||
|
// // var f = t['substring'](0, c),
|
||||||
|
// // d = t["indexOf"]("?") > -1 ? t['substring'](0, t['indexOf']("?")) : t;
|
||||||
|
// // t = Ye(u, d);
|
||||||
|
// // t = ""["concat"](f, '?urlyzm=')['concat'](encodeURIComponent(t), '&ruuid=')['concat'](l)
|
||||||
|
// // }
|
||||||
|
// // return t
|
||||||
|
// // }(s, 0, f));
|
||||||
|
// // else
|
||||||
|
// s = this.He(s, d, 0, e)
|
||||||
|
// if (p) {
|
||||||
|
// var u = (new Date)['valueOf']();
|
||||||
|
// s += '&urls='['concat'](u)
|
||||||
|
// }
|
||||||
|
// logger(`处理url后缀${t} 完成返回${s}`)
|
||||||
|
// return s;
|
||||||
|
// case "1":
|
||||||
|
// if (!t) return t;
|
||||||
|
// continue;
|
||||||
|
// case "2":
|
||||||
|
// s = t;
|
||||||
|
// l = this.Re();
|
||||||
|
// f = l['publicKey'];
|
||||||
|
// d = l['tokenKey'];
|
||||||
|
// h = l['urlType'];
|
||||||
|
// p = l['urlYzm'];
|
||||||
|
// continue;
|
||||||
|
// case "3":
|
||||||
|
// logger(`处理url后缀${t} 完成返回${s}`)
|
||||||
|
// return s;
|
||||||
|
// case "4":
|
||||||
|
// if (t['indexOf']('cssSecurity/v1/getPublicKey') > -1) return t;
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// break
|
||||||
|
// }
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 处理 Param |
||||||
|
* @param t |
||||||
|
* @param e |
||||||
|
* @returns {{mesKey: string, enMesKey: string, enVal}} |
||||||
|
*/ |
||||||
|
handleParam(t, e) { |
||||||
|
var l = { |
||||||
|
mesKey: "", enMesKey: "", enVal: t |
||||||
|
}; |
||||||
|
if (t != null && t !== '') { |
||||||
|
l['enVal'] = this.Ye(t, e); |
||||||
|
} |
||||||
|
logger(`处理返回`, l) |
||||||
|
return l |
||||||
|
} |
||||||
|
|
||||||
|
He (t, e, n, o) { |
||||||
|
var s = t; |
||||||
|
if (s["indexOf"]("urlyzm=") > -1) return s; |
||||||
|
s = this.Ke(s); |
||||||
|
var l, f = (new Date)['valueOf'](), |
||||||
|
d = (this.qe()["num"] % 2) === 0 ? (50 * Math['random'](1)) : (49 * Math[c(2638)]()) + 51; |
||||||
|
if((d >= 0) && (d <= 50)){ |
||||||
|
l = this.Qs(f) |
||||||
|
} |
||||||
|
// (d >= 0) && (d <= 50) ? l = this.Qs(f) : (d >= 51) && d <= 100 && (l = function (t, e) {
|
||||||
|
// // TODO: 偷懒
|
||||||
|
// return null;
|
||||||
|
// // var n = c;
|
||||||
|
// // if ('PwUOp' === 'PwUOp') {
|
||||||
|
// // for (var r = this.qe(), o = r[n(3123)], s = r[n(2049)], l = i[n(5528)](i[n(2694)](a, ""["concat"](t)[n(619)](""))["join"](""), a(""["concat"](s)[n(619)](""))[n(739)]("")), f = "", d = 0; i[n(3114)](d, l[n(6147)]); d += o) {
|
||||||
|
// // var h = l[n(6370)](d, d + o);
|
||||||
|
// // f += i[n(2694)](a, h[n(619)](""))[n(739)]("")
|
||||||
|
// // }
|
||||||
|
// // var p = "", v = e;
|
||||||
|
// // if (e) for (var b = 0; i[n(3114)](b, v[n(6147)]); b += o) {
|
||||||
|
// // var g = v["substring"](b, i[n(5528)](b, o));
|
||||||
|
// // p += a(g["split"](""))["join"]("")
|
||||||
|
// // } else p = i[n(5434)];
|
||||||
|
// // return p = i[n(2694)](a, ""['concat'](p)[n(619)](""))[n(739)](""), i[n(5528)](i[n(5528)](i[n(5528)](f[n(6370)](0, 5), p[n(6370)](5, 10)), f[n(6370)](15, 20)), p["substring"](20, 25))
|
||||||
|
// // }
|
||||||
|
// // for (var m = _0x34c263[_0x383cd9], y = u[n(5694)](_0x30e1f9, 1); y < _0x181e94["length"] && u[n(4847)](m, _0x4913da);) m *= _0x12c36b[y++];
|
||||||
|
// // for (m = _0x469f9b[n(1024)](m); u["tKkZS"](_0x4bdcfe, y);) if (u[n(5152)](u["wSsxC"](m, _0x4de108[_0x8b459++]), 0)) return !1
|
||||||
|
// }(f, e));
|
||||||
|
var h = s['indexOf']("?") === (s["length"] - 1) ? "" : s['indexOf']("?") > -1 ? "&" : "?", |
||||||
|
p = s += ""['concat'](h, "ruuid=")['concat'](f); |
||||||
|
// if (o) {
|
||||||
|
// var v = p['split']("?")['splice'](1);
|
||||||
|
// for (var b in v['map']((function (t) {
|
||||||
|
// return t["split"]("=")[0]
|
||||||
|
// })), o) if (!v["includes"](""["concat"](b))) if (i[c(2228)](i[c(315)], c(6715))) _0x2cc2bd("crypto"); else {
|
||||||
|
// var g = b["charAt"](0)['toUpperCase']();
|
||||||
|
// b['length'] > 1 && (g += b['slice'](1));
|
||||||
|
// var m = o[b];
|
||||||
|
// i[c(2228)](void 0, m) && (p += "&"["concat"](g, "=")["concat"](m))
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
var y = ""["concat"](l, "+")["concat"](p), x = this.he(y); |
||||||
|
return s + ""["concat"](s["indexOf"]("?") ? "&" : "?", "urlyzm=")["concat"](encodeURIComponent(x)) |
||||||
|
} |
||||||
|
|
||||||
|
Re() { |
||||||
|
return this.publicKey; |
||||||
|
} |
||||||
|
|
||||||
|
Qs(t) { |
||||||
|
var r = this.qe(), o = r['num'], u = r["tokenVal"], |
||||||
|
s = (this.a(""['concat'](t)['split'](""))['join']("") + this.a(""['concat'](u)['split'](""))["join"]("")), |
||||||
|
l = ""; |
||||||
|
for (var f = 0; (f < s['length']); f += o) { |
||||||
|
var v = s["substring"](f, (f + o)); |
||||||
|
l += this.a(v['split'](""))['join']("") |
||||||
|
} |
||||||
|
return (((l["substring"](0, 5) + l['substring'](15, 20)) + l['substring'](5, 10)) + l['substring'](20, 25)) |
||||||
|
}; |
||||||
|
|
||||||
|
Ye(t, e) { |
||||||
|
var o = this.ke(32), a = "".concat(o).concat(t), c = this.Ue("", e); |
||||||
|
return this.de(a, c) |
||||||
|
} |
||||||
|
|
||||||
|
ke(t, e) { |
||||||
|
var n, i, a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), c = []; |
||||||
|
if (e = e || a.length, t) for (n = 0; n < t; n++) c[n] = a[0 | (Math["random"]() * e)]; else for (c[8] = c[13] = c[18] = c[23] = "-", c[14] = "4", n = 0; (n < 36); n++) c[n] || (i = 0 | (16 * Math["random"]()), c[n] = a[19 === n ? 8 | (3 & i) : i]); |
||||||
|
logger(`生成随机 ${e} 位字符串`, c["join"]("")) |
||||||
|
return c["join"]("") |
||||||
|
} |
||||||
|
|
||||||
|
de(t, e) { |
||||||
|
var o = this.le(e), a = this.le(t); |
||||||
|
var res = CryptoJS.AES.encrypt(a, o, { |
||||||
|
mode: CryptoJS.mode.ECB, //ECB模式
|
||||||
|
padding: CryptoJS.pad.Pkcs7 //padding处理
|
||||||
|
}).toString(); |
||||||
|
logger(`AES 加密:${t},${e} 加密所得${res}`) |
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
le(t) { |
||||||
|
return CryptoJS.enc.Utf8.parse(t) |
||||||
|
} |
||||||
|
|
||||||
|
Ue(t, e) { |
||||||
|
var c = this.rt(t), u = this.Ke(e); |
||||||
|
c = "".concat(c, "+").concat(u) |
||||||
|
return this.he(c) |
||||||
|
} |
||||||
|
|
||||||
|
rt(t) { |
||||||
|
var n = this.qe(), r = n["num"], i = n["tokenVal"], |
||||||
|
c = this.a(""["concat"](t)["split"](""))["join"]("") + this.a(""["concat"](i)["split"](""))["join"](""), |
||||||
|
u = ""; |
||||||
|
for (var s = 0; (s < c["length"]); s += r) { |
||||||
|
var l = c["substring"](s, s + r); |
||||||
|
u += this.a(l["split"](""))["join"]("") |
||||||
|
} |
||||||
|
var res = u["substring"](0, 20); |
||||||
|
logger('倒叙处理字符返回20位', res) |
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
Ke(t) { |
||||||
|
var n = "6|5|4|3|0|1|2"["split"]("|"), o = 0; |
||||||
|
while (1) { |
||||||
|
switch (n[o++]) { |
||||||
|
case "0": |
||||||
|
(s["length"] > 1) && (f = s[0], l = s[1]["split"]("&")); |
||||||
|
continue; |
||||||
|
case "1": |
||||||
|
for (var a = 0; a < l["length"]; a++) { |
||||||
|
var c = l[a], u = c.split("="); |
||||||
|
("t" !== u[0]) && "urlyzm" !== u[0] && "ruuid" !== u[0] && (f += "".concat(f.includes("?") ? "&" : "?").concat(c)) |
||||||
|
} |
||||||
|
continue; |
||||||
|
case "2": |
||||||
|
(-1 === f.indexOf("?")) && (f += "?"); |
||||||
|
logger(`处理url后缀${t}完成返回${f}`) |
||||||
|
return f; |
||||||
|
case "3": |
||||||
|
var s = t["split"]("?"), l = []; |
||||||
|
continue; |
||||||
|
case "4": |
||||||
|
(0 !== f["indexOf"]("/")) && (f += "/"); |
||||||
|
continue; |
||||||
|
case "5": |
||||||
|
var f = t; |
||||||
|
continue; |
||||||
|
case "6": |
||||||
|
if ("" === t || null == t) { |
||||||
|
return t; |
||||||
|
} |
||||||
|
continue |
||||||
|
} |
||||||
|
break |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
he(t) { |
||||||
|
let res = CryptoJS.MD5(t).toString(); |
||||||
|
logger('生成32位小写md5', t, res) |
||||||
|
return res |
||||||
|
} |
||||||
|
|
||||||
|
qe() { |
||||||
|
var e = this.Le(), n = this.Ae(e); |
||||||
|
null === n && (n = ""); |
||||||
|
var o = n["match"]("[0-9]+"); |
||||||
|
if ((null === o)) { |
||||||
|
o = 3; |
||||||
|
} else { |
||||||
|
var a = o["index"]; |
||||||
|
o = parseInt(n["substring"](a, (a + 1)), 10) + 3 |
||||||
|
} |
||||||
|
return { |
||||||
|
num: o, tokenVal: n |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Le() { |
||||||
|
var e = this.Ae("security-token-key"); |
||||||
|
if (!e) { |
||||||
|
var a = this.Ae('lsmhToken'); |
||||||
|
e = a && ('lsmhToken' === a) ? 'SSOTicket' : 'dzfp-ssotoken' |
||||||
|
} |
||||||
|
return e |
||||||
|
}; |
||||||
|
|
||||||
|
Ae(t) { |
||||||
|
var n = "4|2|1|3|0"["split"]("|"), i = 0,o,l,s; |
||||||
|
while (1) { |
||||||
|
switch (n[i++]) { |
||||||
|
case "0": |
||||||
|
return null; |
||||||
|
case "1": |
||||||
|
o = s["indexOf"](l); |
||||||
|
continue; |
||||||
|
case "2": |
||||||
|
l += "="; |
||||||
|
continue; |
||||||
|
case "3": |
||||||
|
if ((-1 !== o)) { |
||||||
|
var a = (o + l["length"]), c = s.indexOf(";", a); |
||||||
|
(-1 === c) && (c = s.length); |
||||||
|
var u = s.substring(a, c); |
||||||
|
var res = unescape(u); |
||||||
|
logger('获取token', t, '16进制解码', res) |
||||||
|
return res; |
||||||
|
} |
||||||
|
continue; |
||||||
|
case "4": |
||||||
|
// todo: 这里获取 cookie
|
||||||
|
s = this.cookie; |
||||||
|
l = JSON["parse"](JSON["stringify"](t)); |
||||||
|
continue |
||||||
|
} |
||||||
|
break |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
a(t) { |
||||||
|
return t.reverse() |
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
// let fpCrypt = new FpCrypt("oauth2_referer=dppt.hubei.chinatax.gov.cn; dzfp-ssotoken=37c347d5ab014bacb418d7756b9e7ee1; SSO_SECURITY_CHECK_TOKEN=91081171bc604d16910500c4982e74ea; c_time=12; lzkqow39189=c6edeb37685b423c8298eaa8e1b41097; DTSwUOYx7MiWN=5c199c6d5d4fda3505876d98a7e173007f4ab2ae661119adf9143257d71d06e5; lzkqow38189=1727098216617; MKls83gqduGS=e4ec10654056af2f2641b3ce60f124ee7cc607e9ac44bb8b86b9e6d5879ce1c3c7b827862a2ff46be48061c039dccddf");
|
||||||
|
|
||||||
|
// fpCrypt.handleParam('{"gjbq": "1","fpztDm": ["01","02","03","04"],"fplyDm": "0","fplxDm": [],"kprqq": "2024-09-08","kprqz": "2024-09-24","tfrqq": "2024-09-08","tfrqz": "2024-09-24","sflzfp": "","dtBz": "N","pageNumber": 1,"pageSize": 20}',
|
||||||
|
// "/szzhzz/qlfpcx/v1/queryFpjcxx?t=1727101152631")
|
||||||
|
|
||||||
|
// let handleSuffix = fpCrypt.handleSuffix("/szzhzz/qlfpcx/v1/queryFpjcxx?t=1727115438241");
|
||||||
|
// console.log(handleSuffix)
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = FpCrypt |
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -0,0 +1,146 @@ |
|||||||
|
const {jsdomFromText, browser} = require("sdenv"); |
||||||
|
const {Script} = require("node:vm"); |
||||||
|
const fs = require("node:fs"); |
||||||
|
const FpCrypt = require("../../routes/service/static/fp/fp-crypt"); |
||||||
|
|
||||||
|
|
||||||
|
var baseUrl = 'https://dppt.hubei.chinatax.gov.cn:8443' |
||||||
|
// TODO 需要文件内的 meta name="_y_ds" content 标签内容
|
||||||
|
var html = fs.readFileSync('./invoice-business.html', 'utf8').toString(); |
||||||
|
let js = fs.readFileSync('./chunk-npjg4qgmmrfrjl3r.js', 'utf8').toString(); |
||||||
|
|
||||||
|
// TODO:用户登陆token 测试时需要替换
|
||||||
|
var loginCookieStr = "oauth2_referer=dppt.hubei.chinatax.gov.cn; dzfp-ssotoken=37c347d5ab014bacb418d7756b9e7ee1; SSO_SECURITY_CHECK_TOKEN=91081171bc604d16910500c4982e74ea; c_time=12; lzkqow39189=9b8cabc2e1194d5b93f6ef9f46004612; DTSwUOYx7MiWN=f2045053f3ad56575c946fd47a49632842e4f7850c561ccaddecc28de91fa92e; lzkqow38189=1727122084863; MKls83gqduGS=d3ba2a8eb4284ff70c7c0fff4a9dcbdd85c92b046de5b0045c3d61eecc23acb1f48a82f31cb672cd93e47b163696b0d9" |
||||||
|
|
||||||
|
var urlPath = `/szzhzz/qlfpcx/v1/queryFpjcxx?t=${new Date().getTime()}` |
||||||
|
// var urlPath = `/szzhzz/qlfpcx/v1/queryFpjcxx`
|
||||||
|
// TODO:如果有 param 加密后得到 enParam
|
||||||
|
var param = '{"gjbq":"1","fpztDm":["01","02","03","04"],"fplyDm":"0","fplxDm":[],"kprqq":"2024-09-09","kprqz":"2024-09-25","tfrqq":"2024-09-09","tfrqz":"2024-09-25","sflzfp":"","dtBz":"N","pageNumber":1,"pageSize":20}'; |
||||||
|
let fpCrypt = new FpCrypt(loginCookieStr, { |
||||||
|
"publicKey": "MIGf1MA0GCSqGSI2b03DQEBAQUAA4GNADCBiQKBgQDzT/x0AfuV0vtyMKvPWDNMKZbDo8uBqouTYAF8X8uS//z/HqpXBC07CLpnfpOoijwI/zbiPD9RTaEB3PaukaDYxBxE/yBFSByBH3wh5XcIOxi8lpqMBEKun+AjAr91tXUnjkKioI3u7S2hSxh5HgWTVXm1OHAMPW/+w2nmA0Hk2QIDAQAB", |
||||||
|
"tokenKey": "f84df3d0021d4c09b270c5d17d86535f", |
||||||
|
}); |
||||||
|
|
||||||
|
let handleParam = fpCrypt.handleParam(param, urlPath); |
||||||
|
var enParam = JSON.stringify({'Jmbw': handleParam["enVal"]}); |
||||||
|
// headers['security-mes-key'] = $e["enMesKey"]
|
||||||
|
let handleSuffix = fpCrypt.handleSuffix(urlPath); |
||||||
|
|
||||||
|
get_los(handleSuffix, enParam); |
||||||
|
|
||||||
|
|
||||||
|
// fpService = new FpService()
|
||||||
|
|
||||||
|
// get_los_test_service()
|
||||||
|
// async function get_los_test_service() {
|
||||||
|
// let los = await fpService.get_los(url, enParam, html, loginCookieStr);
|
||||||
|
// var getPublicKey = await fetch(`${baseUrl + los.hurl}`, {
|
||||||
|
// "headers": {
|
||||||
|
// "accept": "*/*",
|
||||||
|
// "accept-language": "zh-CN,zh;q=0.9",
|
||||||
|
// "cache-control": "no-cache",
|
||||||
|
// "content-type": "text/plain;charset=UTF-8",
|
||||||
|
// "lzkqow23819": `${los.hd}`,
|
||||||
|
// // "bluewareguid": "d8fd3f2be1d8f629",
|
||||||
|
// // "cache-contro": "no-store",
|
||||||
|
// // "connection": "keep-alive",
|
||||||
|
// // "content-length": "421",
|
||||||
|
// // "date": "Mon, 23 Sep 2024 06:38:44 GMT",
|
||||||
|
// // "pragma": "no-cache",
|
||||||
|
// // "server": "Unknown",
|
||||||
|
// // "x-content-options": "nosniff",
|
||||||
|
// // "x-proxy-by": "Tif-accessgate",
|
||||||
|
// // "x-xss-protection": "1;mode=block",
|
||||||
|
// // "pragma": "no-cache",
|
||||||
|
// // "sec-ch-ua": "\"Not)A;Brand\";v=\"99\", \"Google Chrome\";v=\"127\", \"Chromium\";v=\"127\"",
|
||||||
|
// // "sec-ch-ua-mobile": "?0",
|
||||||
|
// // "sec-ch-ua-platform": "\"Linux\"",
|
||||||
|
// // "sec-fetch-dest": "empty",
|
||||||
|
// // "sec-fetch-mode": "cors",
|
||||||
|
// // "sec-fetch-site": "same-origin",
|
||||||
|
// "sso_security_check_token": "e133ba1f6f124599af5fa5262e1adf02",
|
||||||
|
// "x-requested-with": "XMLHttpRequest",
|
||||||
|
// "cookie": cookieJar.getCookieStringSync(baseUrl),
|
||||||
|
// // "Referer": "https://dppt.hubei.chinatax.gov.cn:8443/invoice-business?ruuid=1726970597058",
|
||||||
|
// "Referrer-Policy": "strict-origin-when-cross-origin"
|
||||||
|
// },
|
||||||
|
// "body": "",
|
||||||
|
// "method": "POST"
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// console.log('测试getPublicKey请求', await getPublicKey.json())
|
||||||
|
// }
|
||||||
|
|
||||||
|
async function get_los(url, param) { |
||||||
|
console.time('js执行时长') |
||||||
|
const [jsDom, cookieJar] = jsdomFromText({ |
||||||
|
url: `${baseUrl}/invoice-query/invoice-query`, |
||||||
|
referrer: baseUrl, |
||||||
|
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36', |
||||||
|
contentType: "text/html", |
||||||
|
runScripts: "outside-only", // runScripts: 'dangerously'/'outside-only'
|
||||||
|
}) |
||||||
|
// 加载dom
|
||||||
|
let dom = await jsDom(html); |
||||||
|
const window = dom.window |
||||||
|
|
||||||
|
// 设置 cookie
|
||||||
|
for (let cookie of loginCookieStr.trim().split("; ")) { |
||||||
|
cookieJar.setCookieSync(cookie, baseUrl); |
||||||
|
} |
||||||
|
|
||||||
|
browser(window, 'chrome'); |
||||||
|
// 加载js
|
||||||
|
let script = new Script(js); |
||||||
|
let internalVMContext = dom.getInternalVMContext(); |
||||||
|
// 执行 js
|
||||||
|
script.runInContext(internalVMContext, {timeout: 1000}); |
||||||
|
|
||||||
|
if (window.$dunm.$byno) { |
||||||
|
window.$dunm.$byno(); |
||||||
|
} |
||||||
|
|
||||||
|
let los = window[window["_d_ts"]](url, param); |
||||||
|
|
||||||
|
console.log('js执行完成,返回结果 ', los) |
||||||
|
// 关闭
|
||||||
|
dom.window.close() |
||||||
|
console.timeEnd('js执行时长') |
||||||
|
console.log(cookieJar.getCookieStringSync(baseUrl)) |
||||||
|
|
||||||
|
|
||||||
|
var getPublicKey = await fetch(`${baseUrl + los.hurl}`, { |
||||||
|
"headers": { |
||||||
|
"security-mes-key": "", |
||||||
|
"accept": "application/json, text/plain, */*", |
||||||
|
"accept-language": "zh-CN,zh;q=0.9", |
||||||
|
"accept-encoding": "gzip, deflate, br, zstd", |
||||||
|
"nsrsbh": "91420112MA49HA6G1W", |
||||||
|
// "origin": "https://dppt.hubei.chinatax.gov.cn:8443",
|
||||||
|
// "cache-control": "no-cache",
|
||||||
|
"content-type": "application/json", |
||||||
|
"lzkqow23819": `${los.hd}`, |
||||||
|
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36", |
||||||
|
// "x-api-type": "xhr",
|
||||||
|
"sso_security_check_token": "91081171bc604d16910500c4982e74ea", |
||||||
|
"x-requested-with": "XMLHttpRequest", |
||||||
|
"cookie": cookieJar.getCookieStringSync(baseUrl), |
||||||
|
// "Referer": "https://dppt.hubei.chinatax.gov.cn:8443/invoice-business?ruuid=1726970597058",
|
||||||
|
"Referrer-Policy": "strict-origin-when-cross-origin", |
||||||
|
// "x-b3-sampled":"1",
|
||||||
|
// "x-b3-spanid": "c850e3c1a85ee988",
|
||||||
|
// "x-b3-traceid": "c850e3c1a85ee988",
|
||||||
|
// "x-tsf-client-timestamp": `${new Date().getTime()}000`
|
||||||
|
}, |
||||||
|
"body": `${los.bd}`, |
||||||
|
"method": "POST" |
||||||
|
}); |
||||||
|
|
||||||
|
let newVar = await getPublicKey.json(); |
||||||
|
|
||||||
|
console.log('测试请求', newVar) |
||||||
|
if (newVar['data']) { |
||||||
|
console.log(newVar['data']) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue