简单的,让gpt帮忙翻译成py代码

py+node.js处理

一点点抠出来

缺什么补什么,一个个函数抠出来,这样比较复杂,但是性能很好。

手术移植法

对于一些调用层次特别深的,我们不必要一个个去分析了,直接整个JS保留,利用window.xxx函数嫁接到我们想要的算法函数上,然后直接改成:

  1. // cb = w1()
  2. cb = window.cb_w1()

把整个js文件拷贝一份,然后尝试node.js运行看看缺什么。

补环境

缺window

  1. const jsdom = require("jsdom");
  2. const {JSDOM} = jsdom;
  3. const html = `<!DOCTYPE html><p>Hello world</p>`;
  4. const dom = new JSDOM(html, {
  5. url: "https://dun.163.com/trial/jigsaw",
  6. referrer: "https://dun.163.com/",
  7. contentType: "text/html"
  8. });
  9. document = dom.window.document;
  10. window = global;
  11. Object.assign(global, {
  12. location: {
  13. hash: "",
  14. host: "dun.163.com",
  15. hostname: "dun.163.com",
  16. href: "https://dun.163.com/trial/jigsaw",
  17. origin: "https://dun.163.com/",
  18. pathname: "/trial/jigsaw",
  19. port: "",
  20. protocol: "https:",
  21. search: "",
  22. },
  23. navigator: {
  24. appCodeName: "Mozilla",
  25. appName: "Netscape",
  26. 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",
  27. cookieEnabled: true,
  28. deviceMemory: 8,
  29. doNotTrack: null,
  30. hardwareConcurrency: 4,
  31. language: "zh-CN",
  32. languages: ["zh-CN", "zh"],
  33. maxTouchPoints: 0,
  34. onLine: true,
  35. platform: "MacIntel",
  36. product: "Gecko",
  37. productSub: "20030107",
  38. 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",
  39. vendor: "Google Inc.",
  40. vendorSub: "",
  41. webdriver: false
  42. }
  43. });
  44. //很多js文件加载 setTimeout setInterval
  45. window.setTimeout = function (){};

至于js文件,可以模仿下面传参:

  1. var value = window.N_w8(process.argv[2], process.argv[3]);
  2. console.log(value);