You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

49 lines
1.8 KiB

const {jsdomFromText, browser} = require("sdenv");
const {Script} = require("node:vm");
const fs = require("node:fs");
const path = require("node:path");
class FpService {
js = fs.readFileSync(path.resolve(__dirname, './static/fp/chunk-npjg4qgmmrfrjl3r.js'), 'utf8').toString();
async get_los (url, param,html,loginCookieStr) {
let baseUrl = new URL(url).origin;
console.time('js执行时长')
const [jsDom, cookieJar] = jsdomFromText({
url: `${baseUrl}/invoice-query/invoice-query`,
referrer: baseUrl,
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
contentType: "text/html",
runScripts: "outside-only", // runScripts: 'dangerously'/'outside-only'
})
// 加载dom
let dom = await jsDom(html);
const window = dom.window
// 设置 cookie
for (let cookie of loginCookieStr.trim().split("; ")) {
cookieJar.setCookieSync(cookie, baseUrl);
}
browser(window, 'chrome');
// 加载js
let script = new Script(this.js);
let internalVMContext = dom.getInternalVMContext();
// 执行 js
script.runInContext(internalVMContext, {timeout: 1000});
if (window.$dunm.$byno) {
window.$dunm.$byno();
}
let los = window[window["_d_ts"]](url.replace(baseUrl,""), param);
console.log(url.replace(baseUrl,""))
let cookies = cookieJar.getCookieStringSync(baseUrl);
los["cookies"] = cookies
console.log('js执行完成,返回结果 ',los )
// 关闭
dom.window.close()
console.timeEnd('js执行时长')
return los
}
}
module.exports = FpService