Merge remote-tracking branch 'origin/master'

master
liudongqi 8 months ago
commit 4df4168b10
  1. 16
      routes/Fp.js
  2. 104
      routes/service/FpService.js
  3. 292
      routes/service/static/fp/fp-crypt.js
  4. 23
      test/fp/chunk-npjg4qgmmrfrjl3r.js
  5. 3
      test/fp/chunk-vendors.5dea4a66.js
  6. 2
      test/fp/invoice-business.html
  7. 30
      test/fp/test_ueryFpjcxx.js

@ -13,19 +13,23 @@ router.post('/getLos', async (req, res) => {
let param = req.body.param let param = req.body.param
let html = req.body.html let html = req.body.html
let loginCookieStr = req.body.loginCookie let loginCookieStr = req.body.loginCookie
console.log(`${uuid};接收到 ${param} 请求:${url} loginCookieStr: ${loginCookieStr}`) let publicKey = req.body.publicKey;
if (url==null || url==""){ console.log(`${uuid};接收到 ${param} 请求:${url} loginCookieStr: ${loginCookieStr} publicKey: ${JSON.stringify(publicKey)}`);
if (url == null || url === "") {
return res.status(500).send("url为空") return res.status(500).send("url为空")
} }
if (loginCookieStr==null || loginCookieStr==""){ if (loginCookieStr == null || loginCookieStr === "") {
return res.status(500).send("cookie为空") return res.status(500).send("cookie为空")
} }
let start = new Date(); let start = new Date();
try { try {
// 执行 // 执行
let los = await fpService.get_los(url, param,html,loginCookieStr); let los = await fpService.get_los(url, param, html, loginCookieStr, publicKey);
console.log(los) // if (!los || los['hd'] === '') {
res.status(200).send(los); // console.error(`${uuid}; 生成错误!请检查 html 或 cookie, los:${JSON.stringify(los)}`)
// return res.status(500).send('生成错误!请检查 html 或 cookie')
// }
return res.status(200).send(los);
} catch (e) { } catch (e) {
console.error(e.stack) console.error(e.stack)
return res.status(500).send(e.message) return res.status(500).send(e.message)

@ -15,20 +15,15 @@ class FpService {
* @param param * @param param
* @param html * @param html
* @param loginCookieStr * @param loginCookieStr
* @param publicKey
* @returns {Promise<*>} * @returns {Promise<*>}
*/ */
async get_los(url, param, html, loginCookieStr) { async get_los(url, param, html, loginCookieStr, publicKey) {
let baseUrl = new URL(url).origin; let baseUrl = new URL(url).origin;
let urlPath = url.replace(baseUrl, ""); let urlPath = url.replace(baseUrl, "");
let headers = {}; let headers = {};
// if (param != null || param !== "") { console.time('los生成时长')
// let fpCrypt = new FpCrypt(loginCookieStr);
// let $e = fpCrypt.$e(param, urlPath);
// param = JSON.stringify({'jmbw': $e["enVal"]});
// headers['security-mes-key'] = $e["enMesKey"]
// }
console.time('js执行时长')
const [jsDom, cookieJar] = jsdomFromText({ const [jsDom, cookieJar] = jsdomFromText({
url: `${baseUrl}/invoice-query/invoice-query`, url: `${baseUrl}/invoice-query/invoice-query`,
referrer: baseUrl, referrer: baseUrl,
@ -56,103 +51,32 @@ class FpService {
window.$dunm.$byno(); window.$dunm.$byno();
} }
let fpCrypt = new FpCrypt(loginCookieStr); let fpCrypt = new FpCrypt(loginCookieStr, publicKey);
// 处理 Param
let handleParam = fpCrypt.handleParam(param, urlPath); let handleParam = fpCrypt.handleParam(param, urlPath);
console.log(`处理 Param 结果 ${JSON.stringify(handleParam)}`)
var enParam = "" var enParam = ""
if (handleParam["enVal"]) { if (handleParam["enVal"]) {
enParam = JSON.stringify({'Jmbw': handleParam["enVal"]}); enParam = JSON.stringify({'Jmbw': handleParam["enVal"]});
headers['security-mes-key'] = handleParam["enMesKey"]
} }
// headers['security-mes-key'] = $e["enMesKey"] // 处理 xhr 后缀
let handleSuffix = fpCrypt.handleSuffix(urlPath); let handleSuffix = fpCrypt.handleSuffix(urlPath);
console.log(`处理 xhr 后缀 ${JSON.stringify(handleSuffix)}`)
let los = window[window["_d_ts"]](handleSuffix, enParam); let los = window[window["_d_ts"]](handleSuffix, enParam);
console.log(urlPath) headers['lzkqow23819'] = los.hd
let cookies = cookieJar.getCookieStringSync(baseUrl); los["headers"] = headers['security-mes-key']
los["cookies"] = cookies los["cookies"] = cookieJar.getCookieStringSync(baseUrl);
console.log('js执行完成,返回结果 ', los) console.log('js执行完成,返回结果 ', los)
// 关闭 // 关闭
dom.window.close() dom.window.close()
console.timeEnd('js执行时长') console.timeEnd('los生成时长')
return los return los
} }
// random_32(enParam) {
// var n, i, e,
// a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), c = [];
// if (e = a["length"], 32) {
// for (n = 0; n < 32; 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]);
// }
// }
// console.log(`生成随机 ${e} 位字符串`, c["join"](""))
// return c["join"]("")
// }
//
// get_cookie(key, loginCookieStr) {
// var key_list = loginCookieStr.split("; ")
// for (var k = 0; key_list["length"] > k; k++) {
// if (key_list[k].includes(key)) {
// return key_list[k].split("=")[1]
// }
// }
// }
//
// reverse_str(t, loginCookieStr) {
// var i = this.get_cookie("dzfp-ssotoken", loginCookieStr), r = this.qe(i),
// c = t.split('').reverse().join("") + i.split('').reverse().join(""),
// u = "";
// for (var s = 0; s < c["length"]; s += r) {
// var l = c["substring"](s, s + r);
// u += l.split('').reverse().join("")
// }
// var res = u["substring"](0, 20);
// console.log('倒叙处理字符返回20位', res)
// return res;
// }
//
// qe(n) {
// 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 o
// }
//
// get_url(url) {
// return url + "?"
// }
//
// hex_md5(reverse_str, url) {
// var strlist = reverse_str + "+" + this.get_url(url)
// var res = CryptoJS.MD5(strlist).toString()
// console.log('md5:', res)
// return res
// }
//
// aes_encrypt(value, key) {
// const srcs = CryptoJS.enc.Utf8.parse(value);
// const key1 = CryptoJS.enc.Utf8.parse(key);
// const cipherTxt = CryptoJS.AES.encrypt(srcs, key1, {
// mode: CryptoJS.mode.ECB, //ECB模式
// padding: CryptoJS.pad.Pkcs7 //padding处理
// }).toString();
// console.log('aes:', cipherTxt)
// return cipherTxt
// }
} }
//fp = new FpService()
//fp.random_32()
//fp.get_cookie("dzfp-ssotoken","tpass_p3d8j63p8b6p4bbab8dca4832a7fj9cc=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImJjNzUxNmI4NWI0NjRiZjlhMDJlNzg2NWIxZmViMGE3In0.xMmdn82GoF9NH8ldYx5mCrHFZhP13041_34uZ51kF9INM7MB33rARWCqhCZiqNZUKwB1WkTH5jDIZLwh_bRYyw; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221920330690e83a-0f487f8b21c83b8-26001151-3153384-1920330690f1823%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkyMDMzMDY5MGU4M2EtMGY0ODdmOGIyMWM4M2I4LTI2MDAxMTUxLTMxNTMzODQtMTkyMDMzMDY5MGYxODIzIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%221920330690e83a-0f487f8b21c83b8-26001151-3153384-1920330690f1823%22%7D; tpass_mcsc7e2ssscb4sfmbsmas35sass2753b=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk3ZjQ1NjU5MzA4ODRhNmFiOWIxMjNhZDY5MDdkYTU5In0.NABIuYcca0UKpWOwvjiut7f3yn-tIIGZyBBni7S1jFAoaRR_kaH8CTZLxSxfc6-Q6n5hcG1l94prwDFGgzZWYw; tpass_k238ck9eedkb48a9a5d7k5c2c5kkka58=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImZkZTE4NTFkZGJhNDQ0MWE5ZWJlMWFjODU5NTNiNjM0In0.qHK5SMznOicFnrhi-1MnF16y2QypCSNLtbi3KE2pD1kyz4yRpLE8Fm4aHQMJ5hMa5aO1ibB-iQ-npD7QkoP3qA; tpass_te95ftefe59243cbafta4fb82bbtfcte=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImViYTMzNDVhYTU0NjQ0NWZhOTdlYmViY2Q3MWNiNWQ4In0.Rk1-kzwo4fneL4FapgQzhzxC-vBVu2zpLHQVfnylQ88x6Ik5QNt3PuyfmqLdoenoR7y69BgAOM3GvLi_KFcsoA; tpass_q4q6b8aa469v4369ae7483c4vb45cvca=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijg3MWNhNzIyMmRmZjQ1YzQ4YmFjYzViMDExYTY1MjU2In0.rUzqjvnFTAwRxRa49yeiPWqHWNF8WRmsKPayVfGRLuMja5huBOmlpHc-kEXBiGh43ei3t-ZbT7EcvGRga0aZkQ; tpass_mb29dc78543X4X769Hd7d8a35Hdd5236=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjgxYTYwZjIxZmMwZTRlMDY5NTFkNDI1YWUwOWM3MjFjIn0.V1-LfcMe6VM9W4q_F15gqOxNbA2jRLRVpCml0WFvKTYAGdFqsi3JEgGBvMCL0SEkAOSVhGIn1A9ILjCAuiJ_hg; tpass_c5djdncfa7nj4n2cajna2j68cndbj2fc=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImI1NzM2MjUwMDE5MDQyMTNiYzViNmQ0NGI1MGRlMTZlIn0.Es7Q_0jUPcvGddK90anCqeEIBjtl52YZ3669quo27iVjnObAt580ZEHJPjCSLw9vu3HAtPY2SkjYuquc0tItqA; tpass_ue7c9954acea492784ac6g78939gc2e9=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImM4Y2Y1ZGZkYjJkMTQ0NGJiYjM0NGM1ZGJjZDlhY2UwIn0.dfWdZX2tAHcB5Xgb36Y5WQJabicYJYoURhAhWzKu4cSklCYc1lK6-fjbTbiRUNmW3hAQ0lUDUkH3DHVVTuvOjA; tpass_x774e745d5k24ex5a7kkk375x933f654=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjM0NjljNWY5MThkZTQ4M2JiY2QwNDcyMjgwMzgwZWFkIn0.NKypnkLFaewOcawUAg_fZQdbFAbgFU1Nqj3ibv3FumIKIW6AZXiD7c0ASR16aTa4B4XUBjrysQiXrHksxRX-OQ; oauth2_referer=etax.hubei.chinatax.gov.cn; tpass_tct8zta97w6c46zdt9zc2648227df5z2=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjVkNTg4ZjBmN2QxNjQ0NDdhZTczYjBlMzM2ZWIzMGYzIn0.Lmt8PQ7SLdivPrcoa6hxEIW2osZBMFc34ate7WKZ31AtSaOYDDMy1lzVmlBmqaIRNIJUhS18N_jJulWz4XAcJA; tpass_sa67ddd29sc94cga9f96s7da2772s6d7=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjVlZjcyMTNmYWYwZTRkYmRiNDMyODU5MmY2NDBjM2EyIn0.jSXIt0ul0pp0Qnb7s7VSdJxVmyfY7fPqzQQg4s2ATS1dluuM49H9Q93oveAxy7URB0s4nMTtWwyTq3mqB_5mpA; tpass_b6edq5qqc5cb4c3288q6aq6fab5qc3b4=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjFlYzI1Zjc4ZGQyMDRmNTQ5MTAxZGEyNDM2MjFmOGU1In0.0VH-6AoQlwsdXMCV6u9nAWCDBWw_sknQQbZy_IzhlrxXkanffsVByh63GYra3awUBma2w-c6WfCwQBdcJGukMg; znhd-ssotoken=a8a7bf26beac4fd4929980b20971b228; ZNHD_SECURITY_CHECK_TOKEN=e4dd8ea2c69440169aede2fdce9a3180; lzkqow39189=2bb488d931034436b6248e9f304424ec; DTSwUOYx7MiWN=ab2bb065ae0ed58c8a84593bb5a3028cb6197c4c212230fce7fbf44bb130b09; dzfp-ssotoken=684d411b247b45c3bcc27ab2e6f8fe68; SSO_SECURITY_CHECK_TOKEN=1100ce6e65af4dd7bb5cf78f795e16a5; lzkqow38189=1727141642601; c_time=12; MKls83gqduGS=0fce79cac178fb6e9a66ca06fa3610191e8668277ba8c269ff723d98e73fd12d893bf51bac776eed80b13155ab4b96ea")
//fp.reverse_str("","tpass_p3d8j63p8b6p4bbab8dca4832a7fj9cc=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImJjNzUxNmI4NWI0NjRiZjlhMDJlNzg2NWIxZmViMGE3In0.xMmdn82GoF9NH8ldYx5mCrHFZhP13041_34uZ51kF9INM7MB33rARWCqhCZiqNZUKwB1WkTH5jDIZLwh_bRYyw; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221920330690e83a-0f487f8b21c83b8-26001151-3153384-1920330690f1823%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkyMDMzMDY5MGU4M2EtMGY0ODdmOGIyMWM4M2I4LTI2MDAxMTUxLTMxNTMzODQtMTkyMDMzMDY5MGYxODIzIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%221920330690e83a-0f487f8b21c83b8-26001151-3153384-1920330690f1823%22%7D; tpass_mcsc7e2ssscb4sfmbsmas35sass2753b=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk3ZjQ1NjU5MzA4ODRhNmFiOWIxMjNhZDY5MDdkYTU5In0.NABIuYcca0UKpWOwvjiut7f3yn-tIIGZyBBni7S1jFAoaRR_kaH8CTZLxSxfc6-Q6n5hcG1l94prwDFGgzZWYw; tpass_k238ck9eedkb48a9a5d7k5c2c5kkka58=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImZkZTE4NTFkZGJhNDQ0MWE5ZWJlMWFjODU5NTNiNjM0In0.qHK5SMznOicFnrhi-1MnF16y2QypCSNLtbi3KE2pD1kyz4yRpLE8Fm4aHQMJ5hMa5aO1ibB-iQ-npD7QkoP3qA; tpass_te95ftefe59243cbafta4fb82bbtfcte=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImViYTMzNDVhYTU0NjQ0NWZhOTdlYmViY2Q3MWNiNWQ4In0.Rk1-kzwo4fneL4FapgQzhzxC-vBVu2zpLHQVfnylQ88x6Ik5QNt3PuyfmqLdoenoR7y69BgAOM3GvLi_KFcsoA; tpass_q4q6b8aa469v4369ae7483c4vb45cvca=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijg3MWNhNzIyMmRmZjQ1YzQ4YmFjYzViMDExYTY1MjU2In0.rUzqjvnFTAwRxRa49yeiPWqHWNF8WRmsKPayVfGRLuMja5huBOmlpHc-kEXBiGh43ei3t-ZbT7EcvGRga0aZkQ; tpass_mb29dc78543X4X769Hd7d8a35Hdd5236=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjgxYTYwZjIxZmMwZTRlMDY5NTFkNDI1YWUwOWM3MjFjIn0.V1-LfcMe6VM9W4q_F15gqOxNbA2jRLRVpCml0WFvKTYAGdFqsi3JEgGBvMCL0SEkAOSVhGIn1A9ILjCAuiJ_hg; tpass_c5djdncfa7nj4n2cajna2j68cndbj2fc=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImI1NzM2MjUwMDE5MDQyMTNiYzViNmQ0NGI1MGRlMTZlIn0.Es7Q_0jUPcvGddK90anCqeEIBjtl52YZ3669quo27iVjnObAt580ZEHJPjCSLw9vu3HAtPY2SkjYuquc0tItqA; tpass_ue7c9954acea492784ac6g78939gc2e9=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImM4Y2Y1ZGZkYjJkMTQ0NGJiYjM0NGM1ZGJjZDlhY2UwIn0.dfWdZX2tAHcB5Xgb36Y5WQJabicYJYoURhAhWzKu4cSklCYc1lK6-fjbTbiRUNmW3hAQ0lUDUkH3DHVVTuvOjA; tpass_x774e745d5k24ex5a7kkk375x933f654=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjM0NjljNWY5MThkZTQ4M2JiY2QwNDcyMjgwMzgwZWFkIn0.NKypnkLFaewOcawUAg_fZQdbFAbgFU1Nqj3ibv3FumIKIW6AZXiD7c0ASR16aTa4B4XUBjrysQiXrHksxRX-OQ; oauth2_referer=etax.hubei.chinatax.gov.cn; tpass_tct8zta97w6c46zdt9zc2648227df5z2=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjVkNTg4ZjBmN2QxNjQ0NDdhZTczYjBlMzM2ZWIzMGYzIn0.Lmt8PQ7SLdivPrcoa6hxEIW2osZBMFc34ate7WKZ31AtSaOYDDMy1lzVmlBmqaIRNIJUhS18N_jJulWz4XAcJA; tpass_sa67ddd29sc94cga9f96s7da2772s6d7=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjVlZjcyMTNmYWYwZTRkYmRiNDMyODU5MmY2NDBjM2EyIn0.jSXIt0ul0pp0Qnb7s7VSdJxVmyfY7fPqzQQg4s2ATS1dluuM49H9Q93oveAxy7URB0s4nMTtWwyTq3mqB_5mpA; tpass_b6edq5qqc5cb4c3288q6aq6fab5qc3b4=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjFlYzI1Zjc4ZGQyMDRmNTQ5MTAxZGEyNDM2MjFmOGU1In0.0VH-6AoQlwsdXMCV6u9nAWCDBWw_sknQQbZy_IzhlrxXkanffsVByh63GYra3awUBma2w-c6WfCwQBdcJGukMg; znhd-ssotoken=a8a7bf26beac4fd4929980b20971b228; ZNHD_SECURITY_CHECK_TOKEN=e4dd8ea2c69440169aede2fdce9a3180; lzkqow39189=2bb488d931034436b6248e9f304424ec; DTSwUOYx7MiWN=ab2bb065ae0ed58c8a84593bb5a3028cb6197c4c212230fce7fbf44bb130b09; dzfp-ssotoken=684d411b247b45c3bcc27ab2e6f8fe68; SSO_SECURITY_CHECK_TOKEN=1100ce6e65af4dd7bb5cf78f795e16a5; lzkqow38189=1727141642601; c_time=12; MKls83gqduGS=0fce79cac178fb6e9a66ca06fa3610191e8668277ba8c269ff723d98e73fd12d893bf51bac776eed80b13155ab4b96ea")
//fp.get_url("/szzhzz/qlfpcx/v1/queryFpjcxx")
//fp.hex_md5("2e6f8fe68c3bcc27ab11","/szzhzz/qlfpcx/v1/queryFpjcxx")
//fp.aes_encrypt('aebb350059d1768250bc36a5320d180e{"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}',"714acfe38a3df9da5651d01fd223d74d")
module.exports = FpService module.exports = FpService

@ -1,6 +1,6 @@
const CryptoJS = require('crypto-js'); const CryptoJS = require('crypto-js');
logger = console.info; //logger = console.info;
class FpCrypt { class FpCrypt {
cookie = ""; cookie = "";
@ -8,17 +8,17 @@ class FpCrypt {
publicKey: "", tokenKey: "" publicKey: "", tokenKey: ""
}; };
constructor(cookies) { constructor(cookies, publicKey) {
this.cookie = cookies this.cookie = cookies
// if (publicKey) { if (publicKey) {
// this.publicKey = publicKey this.publicKey = publicKey
// } }
} }
/** /**
* 处理 url 后缀 * 处理 url 后缀
* @param t url * @param t url
* @param e * @param e xhr
* @returns {*} * @returns {*}
*/ */
handleSuffix(t, e) { handleSuffix(t, e) {
@ -30,7 +30,7 @@ class FpCrypt {
s = t; s = t;
l = this.Re(); l = this.Re();
// f = l['publicKey']; // f = l['publicKey'];
// d = l['tokenKey']; d = l['tokenKey'];
// h = l['urlType']; // h = l['urlType'];
p = l['urlYzm']; p = l['urlYzm'];
s = this.He(s, d, 0, e) s = this.He(s, d, 0, e)
@ -38,60 +38,14 @@ class FpCrypt {
var u = (new Date)['valueOf'](); var u = (new Date)['valueOf']();
s += '&urls='['concat'](u) 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}`) // logger(`处理url后缀${t} 完成返回${s}`)
// return s; return s;
// case "4":
// if (t['indexOf']('cssSecurity/v1/getPublicKey') > -1) return t;
// continue
// }
// break
// }
} }
/** /**
* 处理 Param * 处理 Param
* @param t * @param t param
* @param e * @param e url
* @returns {{mesKey: string, enMesKey: string, enVal}} * @returns {{mesKey: string, enMesKey: string, enVal}}
*/ */
handleParam(t, e) { handleParam(t, e) {
@ -101,7 +55,7 @@ class FpCrypt {
if (t != null && t !== '') { if (t != null && t !== '') {
l['enVal'] = this.Ye(t, e); l['enVal'] = this.Ye(t, e);
} }
logger(`处理返回`, l) // logger(`${t} ,${e} 处理返回${JSON.stringify(l)}`);
return l return l
} }
@ -112,40 +66,32 @@ class FpCrypt {
var l, f = (new Date)['valueOf'](), var l, f = (new Date)['valueOf'](),
d = (this.qe()["num"] % 2) === 0 ? (50 * Math['random'](1)) : (49 * Math['random']()) + 51; d = (this.qe()["num"] % 2) === 0 ? (50 * Math['random'](1)) : (49 * Math['random']()) + 51;
if ((d >= 0) && (d <= 50)) { if ((d >= 0) && (d <= 50)) {
// logger('对dzfp-ssotoken进行加密')
l = this.Qs(f) l = this.Qs(f)
} else if ((d >= 51) && d <= 100) {
// logger('对tokenKey进行加密')
l = this.Qt(f, e)
} }
// (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 ? "&" : "?", var h = s['indexOf']("?") === (s["length"] - 1) ? "" : s['indexOf']("?") > -1 ? "&" : "?",
p = s += ""['concat'](h, "ruuid=")['concat'](f); p = s += ""['concat'](h, "ruuid=")['concat'](f);
// if (o) { if (o) {
// var v = p['split']("?")['splice'](1); // logger(`对 ${o} 进行加密`)
// for (var b in v['map']((function (t) { var v = p['split']("?")['splice'](1);
// return t["split"]("=")[0] for (var b in v['map'](function (t) {
// })), o) if (!v["includes"](""["concat"](b))) if (i[c(2228)](i[c(315)], c(6715))) _0x2cc2bd("crypto"); else { return t["split"]("=")[0]
// var g = b["charAt"](0)['toUpperCase'](); }), o) {
// b['length'] > 1 && (g += b['slice'](1)); if (!v["includes"](""["concat"](b))) {
// var m = o[b]; if (('NenAk' !== 'NenAk')) {
// i[c(2228)](void 0, m) && (p += "&"["concat"](g, "=")["concat"](m)) // _0x2cc2bd("crypto");
// } } else {
// } var g = b["charAt"](0)['toUpperCase']();
b['length'] > 1 && (g += b['slice'](1));
var m = o[b];
(void 0 !== m) && (p += "&"["concat"](g, "=")["concat"](m))
}
}
}
}
var y = ""["concat"](l, "+")["concat"](p), x = this.he(y); var y = ""["concat"](l, "+")["concat"](p), x = this.he(y);
return s + ""["concat"](s["indexOf"]("?") ? "&" : "?", "urlyzm=")["concat"](encodeURIComponent(x)) return s + ""["concat"](s["indexOf"]("?") ? "&" : "?", "urlyzm=")["concat"](encodeURIComponent(x))
} }
@ -165,6 +111,30 @@ class FpCrypt {
return (((l["substring"](0, 5) + l['substring'](15, 20)) + l['substring'](5, 10)) + l['substring'](20, 25)) return (((l["substring"](0, 5) + l['substring'](15, 20)) + l['substring'](5, 10)) + l['substring'](20, 25))
}; };
Qt(t, e) {
var r = this.qe(),
o = r['num'],
s = r['tokenVal'],
l = (this.a(""["concat"](t)['split'](""))["join"]("") + this.a(""["concat"](s)['split'](""))["join"]("")),
f = "";
for (var d = 0; d < l['length']; d += o) {
var h = l['substring'](d, d + o);
f += this.a(h['split'](""))['join']("")
}
var p = "",
v = e;
if (e) {
for (var b = 0; (b < v['length']); b += o) {
var g = v["substring"](b, b + o);
p += this.a(g["split"](""))["join"]("")
}
} else {
p = 'wk123med876dfesd57m72hnb3yfm98fs';
}
p = this.a(""['concat'](p)['split'](""))['join']("");
return (((f['substring'](0, 5) + p['substring'](5, 10)) + f['substring'](15, 20)) + p["substring"](20, 25))
}
Ye(t, e) { Ye(t, e) {
var o = this.ke(32), a = "".concat(o).concat(t), c = this.Ue("", e); var o = this.ke(32), a = "".concat(o).concat(t), c = this.Ue("", e);
return this.de(a, c) return this.de(a, c)
@ -173,7 +143,7 @@ class FpCrypt {
ke(t, e) { ke(t, e) {
var n, i, a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), c = []; 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]); 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"]("")) // logger(`生成随机 ${e} 位字符串`, c["join"](""))
return c["join"]("") return c["join"]("")
} }
@ -183,7 +153,7 @@ class FpCrypt {
mode: CryptoJS.mode.ECB, //ECB模式 mode: CryptoJS.mode.ECB, //ECB模式
padding: CryptoJS.pad.Pkcs7 //padding处理 padding: CryptoJS.pad.Pkcs7 //padding处理
}).toString(); }).toString();
logger(`AES 加密:${t},${e} 加密所得${res}`) // logger(`AES 加密:${t},${e} 加密所得${res}`)
return res; return res;
} }
@ -206,49 +176,69 @@ class FpCrypt {
u += this.a(l["split"](""))["join"]("") u += this.a(l["split"](""))["join"]("")
} }
var res = u["substring"](0, 20); var res = u["substring"](0, 20);
logger('倒叙处理字符返回20位', res) // logger('倒叙处理字符返回20位', res)
return res; return res;
} }
Ke(t) { Ke(t) {
var n = "6|5|4|3|0|1|2"["split"]("|"), o = 0; var s, l, f;
while (1) { if ("" === t || null == t) {
switch (n[o++]) { return t;
case "0": }
f = t;
(0 !== f["indexOf"]("/")) && (f += "/");
s = t["split"]("?");
l = [];
(s["length"] > 1) && (f = s[0], l = s[1]["split"]("&")); (s["length"] > 1) && (f = s[0], l = s[1]["split"]("&"));
continue;
case "1":
for (var a = 0; a < l["length"]; a++) { for (var a = 0; a < l["length"]; a++) {
var c = l[a], u = c.split("="); var c = l[a], u = c.split("=");
("t" !== u[0]) && "urlyzm" !== u[0] && "ruuid" !== u[0] && (f += "".concat(f.includes("?") ? "&" : "?").concat(c)) ("t" !== u[0]) && "urlyzm" !== u[0] && "ruuid" !== u[0] && (f += "".concat(f.includes("?") ? "&" : "?").concat(c))
} }
continue;
case "2":
(-1 === f.indexOf("?")) && (f += "?"); (-1 === f.indexOf("?")) && (f += "?");
logger(`处理url后缀${t}完成返回${f}`) // logger(`处理url后缀${t}完成返回${f}`)
return 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
}
} }
// 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) { he(t) {
let res = CryptoJS.MD5(t).toString(); let res = CryptoJS.MD5(t).toString();
logger('生成32位小写md5', t, res) // logger(t, '生成32位小写md5 --->', res)
return res return res
} }
@ -277,50 +267,58 @@ class FpCrypt {
}; };
Ae(t) { Ae(t) {
var n = "4|2|1|3|0"["split"]("|"), i = 0, o, l, s; var o, l, s;
while (1) { s = this.cookie;
switch (n[i++]) { l = JSON["parse"](JSON["stringify"](t));
case "0":
return null;
case "1":
o = s["indexOf"](l);
continue;
case "2":
l += "="; l += "=";
continue; o = s["indexOf"](l);
case "3":
if ((-1 !== o)) { if ((-1 !== o)) {
var a = (o + l["length"]), c = s.indexOf(";", a); var a = (o + l["length"]), c = s.indexOf(";", a);
(-1 === c) && (c = s.length); (-1 === c) && (c = s.length);
var u = s.substring(a, c); var u = s.substring(a, c);
var res = unescape(u); var res = unescape(u);
logger('获取token', t, '16进制解码', res) // logger('获取token', t, '16进制解码', res)
return res; return res;
} }
continue; return null;
case "4":
// todo: 这里获取 cookie
s = this.cookie;
l = JSON["parse"](JSON["stringify"](t));
continue
}
break
}
}; };
// 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) { a(t) {
return t.reverse() 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 module.exports = FpCrypt

@ -1,5 +1,5 @@
// fp底层js // fp底层js
logger = console.info; logger = console.log;
//去除解密函数 //去除解密函数
// function _0xf207() { // function _0xf207() {
@ -5160,19 +5160,12 @@ logger = console.info;
}) })
return _0x534587; return _0x534587;
} }
this["$_y_ds"] = "";
this["$byno"] = () => { this["$byno"] = () => {
let _y_ds = ""; const _0x475ce7 = document["querySelector"]("head meta[name='_y_ds']");
let _0x475ce7 = document["querySelector"]("head meta[name='_y_ds']"); if (_0x475ce7) {
if(window.$_y_ds != null && window.$_y_ds !== ""){ var _0x13f88b = _0x475ce7["content"];
_y_ds = window.$_y_ds; // logger('1.获取meta标签 _y_ds', _0x13f88b)
logger('1.获取传入数据 _y_ds', _y_ds) var _0x4a87cf = _0x2c29b1(_0x13f88b, window);
} else if (_0x475ce7) {
_y_ds = _0x475ce7["content"];
logger('1.获取meta标签 _y_ds', _y_ds)
}
if (_y_ds){
var _0x4a87cf = _0x2c29b1(_y_ds, window);
// logger('2.获取密钥', _0x4a87cf) // logger('2.获取密钥', _0x4a87cf)
if (_0x4a87cf == null) { if (_0x4a87cf == null) {
return; return;
@ -5180,8 +5173,8 @@ logger = console.info;
_0x4a87cf["run"](); _0x4a87cf["run"]();
_0x475ce7["content"] = ''; _0x475ce7["content"] = '';
_0x475ce7["parentNode"]["removeChild"](_0x475ce7); _0x475ce7["parentNode"]["removeChild"](_0x475ce7);
// const _0x1031c9 = document["querySelector"]("head script[id='_y_ds_s']"); const _0x1031c9 = document["querySelector"]("head script[id='_y_ds_s']");
// _0x1031c9 && _0x1031c9["parentNode"]["removeChild"](_0x1031c9); _0x1031c9 && _0x1031c9["parentNode"]["removeChild"](_0x1031c9);
} }
const _0x1c8f5a = document["querySelector"]("head meta[name='_x_ds']"); const _0x1c8f5a = document["querySelector"]("head meta[name='_x_ds']");
if (_0x1c8f5a) { if (_0x1c8f5a) {

@ -84323,7 +84323,8 @@ logger = console.info;
var xe = [_0x27c221[r(1772)]], _e = r(3236), we = _0x27c221["AJhNq"], Oe = "4889e050", var xe = [_0x27c221[r(1772)]], _e = r(3236), we = _0x27c221["AJhNq"], Oe = "4889e050",
je = _0x27c221[r(6919)], Ce = "efdcb0cc", Se = _0x27c221["eeJzi"], Pe = _0x27c221["qxWSp"], je = _0x27c221[r(6919)], Ce = "efdcb0cc", Se = _0x27c221["eeJzi"], Pe = _0x27c221["qxWSp"],
De = "", Ee = 12, ke = function (t, e) { De = "", Ee = 12,
ke = function (t, e) {
var n, i, o = r, var n, i, o = r,
a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"["split"](""), c = []; 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]); 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]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save