diff --git a/routes/index.js b/routes/index.js index 03542cc..b199810 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,15 +1,17 @@ const express = require("express"); const router = express.Router(); -const crypto = require("node:crypto") const AreaNameEnum = require('../enums/AreaNameEnum'); +let UUIDUtil = require("../utils/UUIDUtil"); + const Rs6Service = require("./service/Rs6Service"); rs6Service = new Rs6Service() router.post('/rsCookie', async (req, res) => { - let uuid = crypto.randomUUID().replace(/-/g, ""); + let uuid = UUIDUtil.uuid; + let start = new Date(); try { let url = req.body['url']; @@ -53,21 +55,4 @@ router.post('/rsCookie', async (req, res) => { }) -// 测试 handle -// handle('https://app.yunnan.chinatax.gov.cn/xxmh/html/dfts/index_frame.html', -// crypto.randomUUID().replace(/-/g, ""), -// "yunnan", -// '\n' + -// '\n' + -// '\n' + -// '\n' + -// '\n' + -// '\n' + -// '\n' + -// '\n' + -// '', -// '94UkHqjsnpGlO=60fhuKFCJ238ngXbeFvuNpiZyZvK2HCOsbkRBi7WAk8COuYc2Jv1.twWrOJ3p.Pcu_rE0FYzg9PJ4CjTocIPJHPG; tpass_tc8td8ea8edn4be483f5a9ktd52599n5=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjY2N2ZlYmU5YTM3MDQ3ZTViN2NlYmQ2MDYxYmU5NDNlIn0.zgV3bl3lf54MfLiNQ4enrhpjn0amydMPChZ2Z1fGry9oYEvE5_PbJWTczoFDdBLFyTrPEEKhsMwrkK4DF_p1Tg; tpass_m7d4a8meca944da79ppdb4bef7d7795a=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImZlMDZhZjljOWZmMTQ2MmM5MmMwZjBiZjIzZWIxMGZiIn0.tlg4c2FMwvQJ8x8f6G7lZEhVQ1x6qJEs2GkykWlmbRZD7JZOJ7NO88dQToMifIxDvnqZ7jZbbLOv9w8Mt4eVDg; dzswjCookie=3829a119fd1852b650f8f854393032dd; SF_cookie_17=31743519; YqQ7a3SgknV8O=60FAYNp0FZHRnRctdl7QyufG1rNQ_oSO8eM3AZGHqUUiLrNOzIHJ5oR7XIz58K5Li3pPYsoQGEX1OVCEWhEx_poA; SYS_CHANNEL_ID=J4; JSESSIONID=7ED72361D29F104CFF195ECD33D6D23E; channelId=J4; DZSWJ_TGC=7ED72361D29F104CFF195ECD33D6D23E', -// 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' -// ) - module.exports = router \ No newline at end of file diff --git a/test/rs6/index.js b/test/rs6/index.js index 8c3536a..4ef8fac 100644 --- a/test/rs6/index.js +++ b/test/rs6/index.js @@ -1,151 +1,10 @@ -// const express = require('express') -// const path = require('path') -// const fs = require('fs') -// const app = express() -// const PORT = 3000 -// -// // process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" -// const {jsdomFromText, jsdomFromUrl, browser} = require('sdenv'); -// const {Script} = require("vm"); -// -// -// const baseUrl = "https://etax.hebei.chinatax.gov.cn:8443/" -// -// const store = new Map(); -// -// const files = { -// html: path.resolve('../public/hubei/index.html'), -// js: path.resolve('../public/hubei/5PXGXoOF7eGJ.ed63b8f.js'), -// ts: path.resolve('../public/hubei/ts.json'), -// } -// -// function getFile(name) { -// const filepath = files[name]; -// if (!filepath) throw new Error(`getFile: ${name}错误`); -// if (!fs.existsSync(filepath)) throw new Error(`文件${filepath}不存在,请使用rs-reverse工具先获取文件`); -// return fs.readFileSync(filepath); -// } -// -// async function loadPages(key) { -// const htmlText = getFile('html'); -// const jsText = getFile('js'); -// let tsText = getFile('ts'); -// let get = `${baseUrl}`; -// const [jsDom, cookieJar] = jsdomFromText({ -// url: get, -// referrer: get, -// contentType: "text/html", -// runScripts: "dangerously",//dangerously启用在页面内执行js,outside-only在外部执行js:window.eval() -// }) -// const dom = jsDom(htmlText); -// window = dom.window -// window.$_ts = JSON.parse(tsText.toString()); -// window.onbeforeunload = async (url) => { -// const cookies = cookieJar.getCookieStringSync(baseUrl); -// console.debug('生成cookie:', cookies); -// store.set(key, cookies) -// // window.close(); -// } -// browser(window, 'chrome'); -// -// new Script(jsText.toString()).runInContext(dom.getInternalVMContext()); -// -// return cookieJar; -// } -// -// let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); -// -// -// function action(key, url) { -// return new Promise(async (resolve, reject) => { -// let cookieJar = await loadPages(key, url); -// // for (let i = 0; i < 100; i++) { -// await sleep(1000) -// let cookieStringSync = cookieJar.getCookieStringSync(baseUrl); -// let val = store.get(key); -// // console.log(val) -// console.log(cookieStringSync) -// // 尝试访问 -// let response = await fetch(baseUrl, { -// "headers": { -// "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", -// "accept-language": "zh-CN,zh;q=0.9", -// "cache-control": "no-cache", -// "pragma": "no-cache", -// "priority": "u=0, i", -// "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"", -// "sec-ch-ua-mobile": "?0", -// "sec-ch-ua-platform": "\"Linux\"", -// "sec-fetch-dest": "document", -// "sec-fetch-mode": "navigate", -// "sec-fetch-site": "none", -// "sec-fetch-user": "?1", -// "upgrade-insecure-requests": "1" -// }, -// "referrerPolicy": "strict-origin-when-cross-origin", -// "body": null, -// "method": "GET" -// }); -// console.log('11111111111', response.headers.get('set-cookie')); -// -// if (cookieStringSync !== undefined) { -// return resolve(cookieStringSync) -// } -// // } -// reject('未获取到cookie') -// }) -// } -// -// action("111111", baseUrl) -// -// app.get('/getCookie', async (req, res) => { -// let traceId = req.query['traceId']; -// if (traceId === undefined) { -// return res.send('error') -// } -// let url = req.query['url']; -// try { -// let ac = await action(traceId, url); -// return res.send(ac) -// } catch (e) { -// return res.send(e) -// } -// }) -// -// // -// // fetch("https://tpass.hebei.chinatax.gov.cn:8443/sys-api/v1.0/auth/oauth2/getPublicKey", { -// // "headers": { -// // "accept": "application/json, text/plain, */*", -// // "accept-language": "zh-CN,zh;q=0.9", -// // "authorization": "", -// // "cache-control": "no-cache", -// // "content-type": "application/json", -// // "deviceidentyno": "wrhX86TArZj82EUurHJWVBktiBVKERpy", -// // "huid": "", -// // "pragma": "no-cache", -// // "priority": "u=1, i", -// // "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"", -// // "sec-ch-ua-mobile": "?0", -// // "sec-ch-ua-platform": "\"Linux\"", -// // "sec-fetch-dest": "empty", -// // "sec-fetch-mode": "cors", -// // "sec-fetch-site": "same-origin", -// // "x-app-clientid": "", -// // "x-lang-id": "null", -// // "x-nature-ip": "", -// // "x-sm4-info": "0", -// // "x-temp-info": "fffe092bceb04d32915d41c2634ed9ff", -// // "x-ticket-id": "null" -// // }, -// // "referrer": "https://tpass.hebei.chinatax.gov.cn:8443/", -// // "referrerPolicy": "strict-origin-when-cross-origin", -// // "body": "{\"zipCode\":\"0\",\"encryptCode\":\"0\",\"datagram\":\"{}\",\"timestamp\":\"20240828150426\",\"access_token\":\"\",\"signtype\":\"HMacSHA256\",\"signature\":\"67848659b891af24ea9c2706e6fccbf03c2448666b719c00a49534dc536500fc\"}", -// // "method": "POST", -// // "mode": "cors", -// // "credentials": "include" -// // }); -// -// -// // app.listen(PORT, () => { -// // console.log(`app is running on PORT ${PORT}`) -// // }) +let Rs6Service = require("../../routes/service/Rs6Service"); + + + +let url= ""; + + + +let rs6Service = new Rs6Service(); +rs6Service.handle(url,) \ No newline at end of file diff --git a/utils/TimeUtil.js b/utils/TimeUtil.js index eabaf6e..d7c1a9f 100644 --- a/utils/TimeUtil.js +++ b/utils/TimeUtil.js @@ -1,8 +1,11 @@ class TimeUtil { static sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); - static *sleepSync(ms){ - return yield new Promise(resolve => setTimeout(resolve, ms)) + // nodeJs 是单线程的 使用该函数需要谨慎操作 推荐使用 sleep + async/await + static sleepSync(ms) { + const start = Date.now(); + while (Date.now() - start < ms) { + } } } diff --git a/utils/UUIDUtil.js b/utils/UUIDUtil.js new file mode 100644 index 0000000..797e6db --- /dev/null +++ b/utils/UUIDUtil.js @@ -0,0 +1,10 @@ +const crypto = require("node:crypto"); + +class UUIDUtil { + static uuid = crypto.randomUUID().replace(/-/g, ""); +} + + +console.log(UUIDUtil.uuid); + +module.exports = UUIDUtil; \ No newline at end of file