添加get_los接口

master
林元实 8 months ago
parent ef818c928c
commit 58e5a6c421
  1. 2
      .idea/qry-python-js.iml
  2. 5
      app.js
  3. 36
      routes/Fp.js
  4. 47
      routes/service/FpService.js
  5. 5569
      routes/service/static/fp/chunk-npjg4qgmmrfrjl3r.js

@ -6,7 +6,7 @@
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="test" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -3,7 +3,7 @@ const express = require('express');
const IpUtil = require('./utils/IpUtil');
const rs6 = require("./routes/Rs6");
const sm4 = require("./routes/Sm4");
const fp = require("./routes/Fp");
// 读取环境变量
const port = process.env.PORT || 9081;
const nodeEnv = process.env.NODE_ENV || 'dev';
@ -23,11 +23,10 @@ app.use(express.urlencoded({limit: '10mb', extended: true}));
// 设置 public 为静态文件的存放文件夹
// app.use('/public', express.static('public'));
/* 配置框架环境 E */
app.use("/rs", rs6);
app.use("/sm", sm4);
app.use("/fp", fp);
app.listen(port, "0.0.0.0", () => {
const ips = IpUtil.getLocalIPs();
for (let ip of ips) {

@ -0,0 +1,36 @@
const express = require("express");
const router = express.Router();
const FpService = require("./service/FpService");
let UUIDUtil = require("../utils/UUIDUtil");
fpService = new FpService()
router.post('/getLos', async (req, res) => {
let uuid = UUIDUtil.uuid;
let url = req.body.url
let param = req.body.param
let html = req.body.html
let loginCookieStr = req.body.loginCookie
console.log(`${uuid};接收到 ${param} 请求:${url} loginCookieStr: ${loginCookieStr}`)
if (url==null || url==""){
return res.status(500).send("url为空")
}
if (loginCookieStr==null || loginCookieStr==""){
return res.status(500).send("cookie为空")
}
let start = new Date();
try {
// 执行
let los = await fpService.get_los(url, param,html,loginCookieStr);
console.log(los)
res.status(200).send(los);
} catch (e) {
console.error(e.stack)
return res.status(500).send(e.message)
} finally {
console.log(`${uuid};getKey ${new Date() - start} ms`)
}
})
module.exports = router

@ -0,0 +1,47 @@
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, param);
console.log('js执行完成,返回结果 ',los )
// 关闭
dom.window.close()
console.timeEnd('js执行时长')
return los
}
}
module.exports = FpService

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save