|
|
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()); })
|