const express = require("express"); const bodyParser = require("body-parser"); const multer = require('multer'); // 接受视频流 const fs = require('fs'); var captcha = require("./kuaishou/ks_slid"); // 快手滑块 var hn = require("./hnw/hn"); // 惠农网 headers var dy_signature = require("./douyin/_ac_signature"); // 抖音主页signature var wx_func = require("./wx_video/wasm_video_decode"); // 微信视频号算法生成 var wx_tool = require("./wx_video/tools"); // 微信视频号解密 var xhs = require("./xhs/xs-commen"); // 小红书x-comment let Module; // 保存对象存留 var app = express(); // 调整参数大小限制 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); // 设置multer来处理上传的文件 const storage = multer.memoryStorage(); const upload = multer({ storage: storage }); app.post("/kuaishou/get_verifyParam", function(req, res){ try{ var info = req.body["info"] var result = captcha.getJose(info); res.send(result); console.log("[kuaishou-verify_fp] 请求成功"); }catch(e){ console.log(e); res.send("[kuaishou-verify_fp] verify fp error"); } }); app.get("/hn/get_signature", function(req, res){ try{ var noce = req.query.nonce; var result = hn.getS(noce); res.send(result); console.log("[hn-get_header] 请求成功"); }catch(e){ console.log(e); res.send("[hn-get_header] get header error"); } }); app.get("/douyin/get_signature", function(req, res){ try{ var noce = req.query.nonce; var result = dy_signature.get_ac_signature(noce); res.send(result); console.log("[douyin-get_signature] 请求成功"); }catch(e){ console.log(e); res.send("[douyin-get_signature] get signature error"); } }); app.post("/wx/decode", upload.single('file'), async (req,res) =>{ if(Module == undefined){ Module = await wx_func.createWasm(); // 创建modul实例 console.log("[wx] 初始化 wasm 模块!"); } try{ if(req.file){ var buffer = req.file.buffer; // 视频流 var decodekey = req.query.decodekey; // 视频buffer var local_path = "wx_video/tmp/".concat(decodekey).concat(".mp4"); console.log("[wx] 获取到的 decodekey:", decodekey,); wx_func.p.decryptor = new Module["WxIsaac64"](decodekey); wx_func.p.decryptor.generate(131072); var video_res = await wx_tool.main1(local_path, buffer, decodekey, wx_func.p.decryptor_array); wx_func.p.decryptor.delete(); console.log("[wx] ", video_res); res.send(video_res); }else{ res.send({"status": 500, "msg": "未识别文件"}); } }catch(e){ console.log(e); res.send("[wx] decode error"); } }); // 测试版 app.post("/wx/decode1", upload.single('file'), async (req,res) =>{ if(Module == undefined){ Module = await wx_func.createWasm(); // 创建modul实例 console.log("[wx] 初始化 wasm 模块!"); } try{ var buffer = req.file.buffer; // 视频流 console.log(buffer); var decodekey = req.query.decodekey; // 视频buffer var local_path = "wx_video/tmp/".concat(decodekey).concat(".mp4"); console.log("[wx] 获取到的 decodekey:", decodekey,); wx_func.p.decryptor = new Module["WxIsaac64"](decodekey); wx_func.p.decryptor.generate(131072); const video_res = await wx_tool.main2(local_path, buffer, decodekey, wx_func.p.decryptor_array); wx_func.p.decryptor.delete(); // 将Uint8Array转换为Buffer const new_buffer = Buffer.from(video_res); // 设置响应类型为二进制 res.setHeader('Content-Type', 'application/octet-stream'); // 发送Buffer数据 res.send(new_buffer); }catch(e){ console.log(e); res.send("[wx] decode error"); } }); app.post("/xhs/get_comment", function(req, res){ try{ var a1 = req.body["a1"]; var xs = req.body["xs"]; var xt = req.body["xt"]; var result = xhs.getCommon(a1, xs, xt); // console.log(result); res.send(result); // res.send(window.code); // console.log(window.code); // console.log(a); console.log("[xhs-comment] 请求成功"); }catch(e){ console.log(e); res.send("[xhs-comment] verify fp error"); } // res.send(result.toString()); }); app.listen(3000, ()=>{ console.log("开启服务,端口3000", new Date().toString()); })