global.cursor_config = { currentScriptSrc: "$$currentScriptSrc$$", fp:{ UNMASKED_VENDOR_WEBGL:"$$UNMASKED_VENDOR_WEBGL$$", UNMASKED_RENDERER_WEBGL:"$$UNMASKED_RENDERER_WEBGL$$", userAgent: "$$userAgent$$" } } $$env_jscode$$ let console_log = console.log; console.log = function () { } dtavm = console; delete __dirname; delete __filename; function proxy(obj, objname, type) { function getMethodHandler(WatchName, target_obj) { let methodhandler = { apply(target, thisArg, argArray) { if (this.target_obj) { thisArg = this.target_obj } let result = Reflect.apply(target, thisArg, argArray) if (target.name !== "toString") { if (target.name === "addEventListener") { dtavm.log(`调用者 => [${WatchName}] 函数名 => [${target.name}], 传参 => [${argArray[0]}], 结果 => [${result}].`) } else if (WatchName === "window.console") { } else { dtavm.log(`调用者 => [${WatchName}] 函数名 => [${target.name}], 传参 => [${argArray}], 结果 => [${result}].`) } } else { dtavm.log(`调用者 => [${WatchName}] 函数名 => [${target.name}], 传参 => [${argArray}], 结果 => [${result}].`) } return result }, construct(target, argArray, newTarget) { var result = Reflect.construct(target, argArray, newTarget) dtavm.log(`调用者 => [${WatchName}] 构造函数名 => [${target.name}], 传参 => [${argArray}], 结果 => [${(result)}].`) return result; } } methodhandler.target_obj = target_obj return methodhandler } function getObjhandler(WatchName) { let handler = { get(target, propKey, receiver) { let result = target[propKey] if (result instanceof Object) { if (typeof result === "function") { dtavm.log(`调用者 => [${WatchName}] 获取属性名 => [${propKey}] , 是个函数`) return new Proxy(result, getMethodHandler(WatchName, target)) } else { dtavm.log(`调用者 => [${WatchName}] 获取属性名 => [${propKey}], 结果 => [${(result)}]`); } return new Proxy(result, getObjhandler(`${WatchName}.${propKey}`)) } if (typeof (propKey) !== "symbol") { dtavm.log(`调用者 => [${WatchName}] 获取属性名 => [${propKey?.description ?? propKey}], 结果 => [${result}]`); } return result; }, set(target, propKey, value, receiver) { if (value instanceof Object) { dtavm.log(`调用者 => [${WatchName}] 设置属性名 => [${propKey}], 值为 => [${(value)}]`); } else { dtavm.log(`调用者 => [${WatchName}] 设置属性名 => [${propKey}], 值为 => [${value}]`); } return Reflect.set(target, propKey, value, receiver); }, has(target, propKey) { var result = Reflect.has(target, propKey); dtavm.log(`针对in操作符的代理has=> [${WatchName}] 有无属性名 => [${propKey}], 结果 => [${result}]`) return result; }, deleteProperty(target, propKey) { var result = Reflect.deleteProperty(target, propKey); dtavm.log(`拦截属性delete => [${WatchName}] 删除属性名 => [${propKey}], 结果 => [${result}]`) return result; }, defineProperty(target, propKey, attributes) { var result = Reflect.defineProperty(target, propKey, attributes); dtavm.log(`拦截对象define操作 => [${WatchName}] 待检索属性名 => [${propKey.toString()}] 属性描述 => [${(attributes)}], 结果 => [${result}]`) // debugger return result }, getPrototypeOf(target) { var result = Reflect.getPrototypeOf(target) dtavm.log(`被代理的目标对象 => [${WatchName}] 代理结果 => [${(result)}]`) return result; }, setPrototypeOf(target, proto) { dtavm.log(`被拦截的目标对象 => [${WatchName}] 对象新原型==> [${(proto)}]`) return Reflect.setPrototypeOf(target, proto); }, preventExtensions(target) { dtavm.log(`方法用于设置preventExtensions => [${WatchName}] 防止扩展`) return Reflect.preventExtensions(target); }, isExtensible(target) { var result = Reflect.isExtensible(target) dtavm.log(`拦截对对象的isExtensible() => [${WatchName}] isExtensible, 返回值==> [${result}]`) return result; }, } return handler; } if (type === "method") { return new Proxy(obj, getMethodHandler(objname, obj)); } return new Proxy(obj, getObjhandler(objname)); } // window = proxy(window, 'window'); global.document = window.document; $$cursor_jscode$$ window.V_C[0]().then(value => console_log(JSON.stringify(value)));