执行完成后 删除引用

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) => {
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;
}

Loading…
Cancel
Save