1、首先需要确保已经安装了Node.js,可自行要官网下载安装。
2、使用以下命令安装jsdom模块:
npm install jsdom
3、将此段代码复制到js代码头部:
const {JSDOM} = require("jsdom");
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`, {
url: 'https://www.zhipin.com/' // 网站url,手动修改
});
window=dom.window;
document=window.document; //document对象:代表给定浏览器窗口中的HTML文档,
navigator=window.navigator; // 关于运行当前脚本的应用程序的相关信息
location=window.location; //对象包含当前页面的URL信息
history=window.history; // 历史会话
screen=window.screen; // 浏览器屏幕
Math.random = function(){
return 0.50
};
null_function = function (){
console.log(arguments)
}
window.SourceBuffer = null_function
window.ScreenOrientation = null_function
window.SpeechSynthesisUtterance = null_function
window.localStorage = {}
localStorage = window.localStorage
window = new Proxy(window, {
set(target, property, value, receiver) {
console.log("设置属性set window", property, typeof value);
return Reflect.set(...arguments);
},
get(target, property, receiver) {
console.log("获取属性get window", property, typeof target[property]);
return target[property]
}
});
document = new Proxy(document, {
set(target, property, value, receiver) {
console.log("设置属性set document", property, typeof value);
return Reflect.set(...arguments);
},
get(target, property, receiver) {
console.log("获取属性get document", property, typeof target[property]);
return target[property]
}
});
navigator = new Proxy(navigator, {
set(target, property, value, receiver) {
console.log("设置属性set navigator", property, typeof value);
return Reflect.set(...arguments);
},
get(target, property, receiver) {
console.log("获取属性get navigator", property, typeof target[property]);
return target[property]
}
});
location = new Proxy(location, {
set(target, property, value, receiver) {
console.log("设置属性set location", property, typeof value);
return Reflect.set(...arguments);
},
get(target, property, receiver) {
console.log("获取属性get location", property, typeof target[property]);
return target[property]
}
});
history = new Proxy(history, {
set(target, property, value, receiver) {
console.log("设置属性set history", property, typeof value);
return Reflect.set(...arguments);
},
get(target, property, receiver) {
console.log("获取属性get history", property, typeof target[property]);
return target[property]
}
});
screen = new Proxy(screen, {
set(target, property, value, receiver) {
console.log("设置属性set screen", property, typeof value);
return Reflect.set(...arguments);
},
get(target, property, receiver) {
console.log("获取属性get screen", property, typeof target[property]);
return target[property]
}
});