diff --git a/quickjs/src/main/assets/js/lib/spider.js b/quickjs/src/main/assets/js/lib/spider.js new file mode 100644 index 000000000..baaef84ed --- /dev/null +++ b/quickjs/src/main/assets/js/lib/spider.js @@ -0,0 +1,10 @@ +import * as spider from '%s' + +if (!globalThis.__JS_SPIDER__) { + if (spider.__jsEvalReturn) { + globalThis.req = http + globalThis.__JS_SPIDER__ = spider.__jsEvalReturn() + } else if (spider.default) { + globalThis.__JS_SPIDER__ = typeof spider.default === 'function' ? spider.default() : spider.default + } +} \ No newline at end of file diff --git a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java index d7498e409..5d4a1e6ba 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java @@ -209,13 +209,11 @@ public class Spider extends com.github.catvod.crawler.Spider { String spider = "__JS_SPIDER__"; String global = "globalThis." + spider; String content = Module.get().fetch(api); + if (content.startsWith("//bb")) ctx.execute(Module.get().bb(content), spider); + else ctx.evaluateModule(content.replace(spider, global), api); + ctx.evaluateModule(String.format(Path.asset("js/lib/spider.js"), api)); if (content.startsWith("//bb") || content.contains(jsEval)) cat = true; - if (content.startsWith("//bb")) ctx.execute(Module.get().bb(content), spider, jsEval); - else if (content.contains(jsEval)) ctx.evaluateModule(content, api, jsEval); - else if (content.contains(spider)) ctx.evaluateModule(content.replace(spider, global), api); - else ctx.evaluateModule(content.replaceAll("export default.*?[{]", global + " = {"), api); jsObject = (JSObject) ctx.getProperty(ctx.getGlobalObject(), spider); - if (cat) ctx.evaluate("req = http"); } private JSObject cfg(String ext) {