执行完成后 删除引用

master
刘东琪 9 months ago
parent 06a5157ed8
commit 9bf1124b7e
  1. 23
      routes/index.js

@ -13,11 +13,11 @@ let store = new Store();
router.post('/rsCookie', async (req, res) => { router.post('/rsCookie', async (req, res) => {
console.time('rsCookie') console.time('rsCookie')
let url = req.body['url']; let url = req.body['url'];
let htmlStr = req.body['htmlStr'];
let jsStr = req.body['jsText'];
let areaName = req.body['areaName']; let areaName = req.body['areaName'];
let cookie = req.body['cookie']; let htmlStr = req.body['htmlBase64'];
let userAgent = req.body['userAgent']; let jsStr = req.body['cookieBase64'];
let cookie = req.body['cookieBase64'];
let userAgent = req.body['userAgentBase64'];
if (url == null || url === '') { if (url == null || url === '') {
return res.send('error url') return res.send('error url')
@ -45,17 +45,17 @@ router.post('/rsCookie', async (req, res) => {
jsText, jsText,
cookie != null ? Buffer.from(cookie, 'base64').toString('utf-8') : null, cookie != null ? Buffer.from(cookie, 'base64').toString('utf-8') : null,
userAgent != null ? Buffer.from(userAgent, '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) { } catch (e) {
console.error(e) console.error(e)
return res.send(e.toString()) return res.status(500).send(e.toString())
} finally { } finally {
console.timeEnd('rsCookie') console.timeEnd('rsCookie')
} }
}) })
function loadJs(window) { function loadJs(window, jsText) {
// 加载js // 加载js
let js = ''; let js = '';
// 加载 页面上的js // 加载 页面上的js
@ -89,7 +89,7 @@ async function handle(url, htmlStr, jsText, cookie, userAgent) {
cookieJar.setCookieSync(cookie, baseUrl); cookieJar.setCookieSync(cookie, baseUrl);
} }
// 加载dom // 加载dom
const dom = await jsDom(htmlStr); let dom = await jsDom(htmlStr);
window = dom.window window = dom.window
// js执行成功后的瑞树会跳转页面 会触发onbeforeunload钩子 // js执行成功后的瑞树会跳转页面 会触发onbeforeunload钩子
window.onbeforeunload = async (url) => { window.onbeforeunload = async (url) => {
@ -101,13 +101,18 @@ async function handle(url, htmlStr, jsText, cookie, userAgent) {
// 初始化浏览器 // 初始化浏览器
browser(window, 'chrome'); browser(window, 'chrome');
// 加载js // 加载js
let js = loadJs(window); let js = loadJs(window, jsText);
// 执行 js // 执行 js
let script = new Script(js); let script = new Script(js);
let internalVMContext = dom.getInternalVMContext(); let internalVMContext = dom.getInternalVMContext();
script.runInContext(internalVMContext); script.runInContext(internalVMContext);
// 等待 onbeforeunload 钩子触发后的回掉 // 等待 onbeforeunload 钩子触发后的回掉
let val = await store.waitGetAndDelete(uuid, 100, 10) let val = await store.waitGetAndDelete(uuid, 100, 10)
internalVMContext.close()
window.close()
dom = null
if (val != null) { if (val != null) {
return val; return val;
} }

Loading…
Cancel
Save