From 9bf1124b7e7f25f2808273736b15ef8a135ebcfe Mon Sep 17 00:00:00 2001 From: liudongqi Date: Wed, 4 Sep 2024 11:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=AE=8C=E6=88=90=E5=90=8E?= =?UTF-8?q?=20=E5=88=A0=E9=99=A4=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/index.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/routes/index.js b/routes/index.js index d7fa0e8..9042e66 100644 --- a/routes/index.js +++ b/routes/index.js @@ -13,11 +13,11 @@ let store = new Store(); router.post('/rsCookie', async (req, res) => { console.time('rsCookie') let url = req.body['url']; - let htmlStr = req.body['htmlStr']; - let jsStr = req.body['jsText']; let areaName = req.body['areaName']; - let cookie = req.body['cookie']; - let userAgent = req.body['userAgent']; + let htmlStr = req.body['htmlBase64']; + let jsStr = req.body['cookieBase64']; + let cookie = req.body['cookieBase64']; + let userAgent = req.body['userAgentBase64']; if (url == null || url === '') { return res.send('error url') @@ -45,17 +45,17 @@ router.post('/rsCookie', async (req, res) => { jsText, cookie != null ? Buffer.from(cookie, 'base64').toString('utf-8') : null, userAgent != null ? Buffer.from(userAgent, 'base64').toString('utf-8') : null) - res.send(cookies); + res.status(200).send(cookies); } catch (e) { console.error(e) - return res.send(e.toString()) + return res.status(500).send(e.toString()) } finally { console.timeEnd('rsCookie') } }) -function loadJs(window) { +function loadJs(window, jsText) { // 加载js let js = ''; // 加载 页面上的js @@ -89,7 +89,7 @@ async function handle(url, htmlStr, jsText, cookie, userAgent) { cookieJar.setCookieSync(cookie, baseUrl); } // 加载dom - const dom = await jsDom(htmlStr); + let dom = await jsDom(htmlStr); window = dom.window // js执行成功后的瑞树会跳转页面 会触发onbeforeunload钩子 window.onbeforeunload = async (url) => { @@ -101,13 +101,18 @@ async function handle(url, htmlStr, jsText, cookie, userAgent) { // 初始化浏览器 browser(window, 'chrome'); // 加载js - let js = loadJs(window); + let js = loadJs(window, jsText); // 执行 js let script = new Script(js); let internalVMContext = dom.getInternalVMContext(); script.runInContext(internalVMContext); // 等待 onbeforeunload 钩子触发后的回掉 let val = await store.waitGetAndDelete(uuid, 100, 10) + + internalVMContext.close() + window.close() + dom = null + if (val != null) { return val; }