diff --git a/routes/Fp.js b/routes/Fp.js index 9152c0b..728d028 100644 --- a/routes/Fp.js +++ b/routes/Fp.js @@ -13,19 +13,23 @@ router.post('/getLos', async (req, res) => { let param = req.body.param let html = req.body.html let loginCookieStr = req.body.loginCookie - console.log(`${uuid};接收到 ${param} 请求:${url} loginCookieStr: ${loginCookieStr}`) - if (url==null || url==""){ + let publicKey = req.body.publicKey; + console.log(`${uuid};接收到 ${param} 请求:${url} loginCookieStr: ${loginCookieStr} publicKey: ${JSON.stringify(publicKey)}`); + if (url == null || url === "") { return res.status(500).send("url为空") } - if (loginCookieStr==null || loginCookieStr==""){ + if (loginCookieStr == null || loginCookieStr === "") { return res.status(500).send("cookie为空") } let start = new Date(); try { // 执行 - let los = await fpService.get_los(url, param,html,loginCookieStr); - console.log(los) - res.status(200).send(los); + let los = await fpService.get_los(url, param, html, loginCookieStr, publicKey); + // if (!los || los['hd'] === '') { + // console.error(`${uuid}; 生成错误!请检查 html 或 cookie, los:${JSON.stringify(los)}`) + // return res.status(500).send('生成错误!请检查 html 或 cookie') + // } + return res.status(200).send(los); } catch (e) { console.error(e.stack) return res.status(500).send(e.message) diff --git a/routes/service/FpService.js b/routes/service/FpService.js index 79d5f42..60bcd0e 100644 --- a/routes/service/FpService.js +++ b/routes/service/FpService.js @@ -15,20 +15,15 @@ class FpService { * @param param * @param html * @param loginCookieStr + * @param publicKey * @returns {Promise<*>} */ - async get_los(url, param, html, loginCookieStr) { + async get_los(url, param, html, loginCookieStr, publicKey) { let baseUrl = new URL(url).origin; let urlPath = url.replace(baseUrl, ""); let headers = {}; -// if (param != null || param !== "") { -// 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执行时长') + console.time('los生成时长') const [jsDom, cookieJar] = jsdomFromText({ url: `${baseUrl}/invoice-query/invoice-query`, referrer: baseUrl, @@ -56,103 +51,32 @@ class FpService { window.$dunm.$byno(); } - let fpCrypt = new FpCrypt(loginCookieStr); + let fpCrypt = new FpCrypt(loginCookieStr, publicKey); + // 处理 Param let handleParam = fpCrypt.handleParam(param, urlPath); + console.log(`处理 Param 结果 ${JSON.stringify(handleParam)}`) var enParam = "" - if (handleParam["enVal"]){ + if (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); + console.log(`处理 xhr 后缀 ${JSON.stringify(handleSuffix)}`) let los = window[window["_d_ts"]](handleSuffix, enParam); - console.log(urlPath) - let cookies = cookieJar.getCookieStringSync(baseUrl); - los["cookies"] = cookies + headers['lzkqow23819'] = los.hd + los["headers"] = headers['security-mes-key'] + los["cookies"] = cookieJar.getCookieStringSync(baseUrl); + console.log('js执行完成,返回结果 ', los) // 关闭 dom.window.close() - console.timeEnd('js执行时长') + console.timeEnd('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 \ No newline at end of file diff --git a/routes/service/static/fp/fp-crypt.js b/routes/service/static/fp/fp-crypt.js index 19d977b..e06547d 100644 --- a/routes/service/static/fp/fp-crypt.js +++ b/routes/service/static/fp/fp-crypt.js @@ -1,6 +1,6 @@ const CryptoJS = require('crypto-js'); -logger = console.info; +//logger = console.info; class FpCrypt { cookie = ""; @@ -8,17 +8,17 @@ class FpCrypt { publicKey: "", tokenKey: "" }; - constructor(cookies) { + constructor(cookies, publicKey) { this.cookie = cookies - // if (publicKey) { - // this.publicKey = publicKey - // } + if (publicKey) { + this.publicKey = publicKey + } } /** * 处理 url 后缀 * @param t url - * @param e + * @param e xhr * @returns {*} */ handleSuffix(t, e) { @@ -30,7 +30,7 @@ class FpCrypt { s = t; l = this.Re(); // f = l['publicKey']; - // d = l['tokenKey']; + d = l['tokenKey']; // h = l['urlType']; p = l['urlYzm']; s = this.He(s, d, 0, e) @@ -38,60 +38,14 @@ class FpCrypt { var u = (new Date)['valueOf'](); s += '&urls='['concat'](u) } - logger(`处理url后缀${t} 完成返回${s}`) +// 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 + * @param t param + * @param e url * @returns {{mesKey: string, enMesKey: string, enVal}} */ handleParam(t, e) { @@ -101,7 +55,7 @@ class FpCrypt { if (t != null && t !== '') { l['enVal'] = this.Ye(t, e); } - logger(`处理返回`, l) +// logger(`${t} ,${e} 处理返回${JSON.stringify(l)}`); return l } @@ -112,40 +66,32 @@ class FpCrypt { var l, f = (new Date)['valueOf'](), d = (this.qe()["num"] % 2) === 0 ? (50 * Math['random'](1)) : (49 * Math['random']()) + 51; if ((d >= 0) && (d <= 50)) { +// logger('对dzfp-ssotoken进行加密') 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 ? "&" : "?", 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)) - // } - // } + if (o) { +// logger(`对 ${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 (('NenAk' !== 'NenAk')) { + // _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); 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)) }; + 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) { var o = this.ke(32), a = "".concat(o).concat(t), c = this.Ue("", e); return this.de(a, c) @@ -173,7 +143,7 @@ class FpCrypt { 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"]("")) +// logger(`生成随机 ${e} 位字符串`, c["join"]("")) return c["join"]("") } @@ -183,7 +153,7 @@ class FpCrypt { mode: CryptoJS.mode.ECB, //ECB模式 padding: CryptoJS.pad.Pkcs7 //padding处理 }).toString(); - logger(`AES 加密:${t},${e} 加密所得${res}`) +// logger(`AES 加密:${t},${e} 加密所得${res}`) return res; } @@ -206,49 +176,69 @@ class FpCrypt { u += this.a(l["split"](""))["join"]("") } var res = u["substring"](0, 20); - logger('倒叙处理字符返回20位', res) +// 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 + var s, l, f; + if ("" === t || null == t) { + return t; + } + f = t; + (0 !== f["indexOf"]("/")) && (f += "/"); + s = t["split"]("?"); + l = []; + (s["length"] > 1) && (f = s[0], l = s[1]["split"]("&")); + 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)) } + (-1 === f.indexOf("?")) && (f += "?"); +// logger(`处理url后缀${t}完成返回${f}`) + return f; + } + // 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) +// logger(t, '生成32位小写md5 --->', res) return res } @@ -277,50 +267,58 @@ class FpCrypt { }; 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 + var o, l, s; + s = this.cookie; + l = JSON["parse"](JSON["stringify"](t)); + l += "="; + o = s["indexOf"](l); + 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; } + return null; }; + // 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 \ No newline at end of file diff --git a/test/fp/chunk-npjg4qgmmrfrjl3r.js b/test/fp/chunk-npjg4qgmmrfrjl3r.js index a244386..c655f24 100644 --- a/test/fp/chunk-npjg4qgmmrfrjl3r.js +++ b/test/fp/chunk-npjg4qgmmrfrjl3r.js @@ -1,5 +1,5 @@ // fp底层js -logger = console.info; +logger = console.log; //去除解密函数 // function _0xf207() { @@ -5160,19 +5160,12 @@ logger = console.info; }) return _0x534587; } - this["$_y_ds"] = ""; this["$byno"] = () => { - let _y_ds = ""; - let _0x475ce7 = document["querySelector"]("head meta[name='_y_ds']"); - if(window.$_y_ds != null && window.$_y_ds !== ""){ - _y_ds = window.$_y_ds; - logger('1.获取传入数据 _y_ds', _y_ds) - } else if (_0x475ce7) { - _y_ds = _0x475ce7["content"]; - logger('1.获取meta标签 _y_ds', _y_ds) - } - if (_y_ds){ - var _0x4a87cf = _0x2c29b1(_y_ds, window); + const _0x475ce7 = document["querySelector"]("head meta[name='_y_ds']"); + if (_0x475ce7) { + var _0x13f88b = _0x475ce7["content"]; + // logger('1.获取meta标签 _y_ds', _0x13f88b) + var _0x4a87cf = _0x2c29b1(_0x13f88b, window); // logger('2.获取密钥', _0x4a87cf) if (_0x4a87cf == null) { return; @@ -5180,8 +5173,8 @@ logger = console.info; _0x4a87cf["run"](); _0x475ce7["content"] = ''; _0x475ce7["parentNode"]["removeChild"](_0x475ce7); - // const _0x1031c9 = document["querySelector"]("head script[id='_y_ds_s']"); - // _0x1031c9 && _0x1031c9["parentNode"]["removeChild"](_0x1031c9); + const _0x1031c9 = document["querySelector"]("head script[id='_y_ds_s']"); + _0x1031c9 && _0x1031c9["parentNode"]["removeChild"](_0x1031c9); } const _0x1c8f5a = document["querySelector"]("head meta[name='_x_ds']"); if (_0x1c8f5a) { diff --git a/test/fp/chunk-vendors.5dea4a66.js b/test/fp/chunk-vendors.5dea4a66.js index fa69bf9..c8d247a 100644 --- a/test/fp/chunk-vendors.5dea4a66.js +++ b/test/fp/chunk-vendors.5dea4a66.js @@ -84323,7 +84323,8 @@ logger = console.info; 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"], - De = "", Ee = 12, ke = function (t, e) { + De = "", Ee = 12, + ke = function (t, e) { var n, i, o = r, 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]); diff --git a/test/fp/invoice-business.html b/test/fp/invoice-business.html index 143ac17..7657c30 100644 --- a/test/fp/invoice-business.html +++ b/test/fp/invoice-business.html @@ -1,45 +1,45 @@ -