简单的,让gpt帮忙翻译成py代码
py+node.js处理
一点点抠出来
缺什么补什么,一个个函数抠出来,这样比较复杂,但是性能很好。
手术移植法
对于一些调用层次特别深的,我们不必要一个个去分析了,直接整个JS保留,利用window.xxx函数嫁接到我们想要的算法函数上,然后直接改成:
// cb = w1()
cb = window.cb_w1()
把整个js文件拷贝一份,然后尝试node.js运行看看缺什么。
补环境
缺window
const jsdom = require("jsdom");
const {JSDOM} = jsdom;
const html = `<!DOCTYPE html><p>Hello world</p>`;
const dom = new JSDOM(html, {
url: "https://dun.163.com/trial/jigsaw",
referrer: "https://dun.163.com/",
contentType: "text/html"
});
document = dom.window.document;
window = global;
Object.assign(global, {
location: {
hash: "",
host: "dun.163.com",
hostname: "dun.163.com",
href: "https://dun.163.com/trial/jigsaw",
origin: "https://dun.163.com/",
pathname: "/trial/jigsaw",
port: "",
protocol: "https:",
search: "",
},
navigator: {
appCodeName: "Mozilla",
appName: "Netscape",
appVersion: "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36",
cookieEnabled: true,
deviceMemory: 8,
doNotTrack: null,
hardwareConcurrency: 4,
language: "zh-CN",
languages: ["zh-CN", "zh"],
maxTouchPoints: 0,
onLine: true,
platform: "MacIntel",
product: "Gecko",
productSub: "20030107",
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36",
vendor: "Google Inc.",
vendorSub: "",
webdriver: false
}
});
//很多js文件加载 setTimeout setInterval
window.setTimeout = function (){};
至于js文件,可以模仿下面传参:
var value = window.N_w8(process.argv[2], process.argv[3]);
console.log(value);