在做JS逆向时常常会遇到需要模拟浏览器环境的情况,比如需要获取浏览器的location、document对象等。
当然,如果只是类似获取 location 对象中的某个值的话,我们可以直接在浏览器端将参数值都复制过来。
但是,如果需要对 document 进行操作那么就无能为力了,此时就需要使用到一个 NodeJS 包:jsdom
。
jsdom
是一个 NodeJS 包,它可以在 NodeJS 环境中模拟浏览器环境,包括创建一个 window
对象、document
对象等。
使用 jsdom
包,我们可以创建一个虚拟的浏览器环境,然后在该环境中执行 JS 代码,从而实现对 document 对象的操作。
安装
npm install jsdom
使用
const { JSDOM } = require('jsdom');
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>');
const window = dom.window;
const document = window.document;
// 执行 JS 代码
const script = document.createElement('script');
script.textContent = `
document.body.innerHTML = 'Hello, World!';
`;
document.body.appendChild(script);
console.log(document.body.innerHTML);
// 输出:Hello, World!