@naimi/alib
Version:
40 lines (33 loc) • 1.31 kB
JavaScript
const fs = require("fs");
const puppeteer = require("puppeteer");
(async () => {
const url = process.argv[2];
if (url == undefined) {
console.log('Usage: node puppeteer-save-mht.cjs "URL"'
+ '\ne.g.: node puppeteer-save-mht.cjs "http://google.com"');
return;
}
const browser = await puppeteer.launch();
//const browser = await puppeteer.launch({args:['--proxy-server=socks5://127.0.0.1:9050']}); // use tor
const page = await browser.newPage();
await page.setViewport({ width: 1600, height: 2200, deviceScaleFactor: 1 });
// await page.setRequestInterception(true);
// page.on("request", (request) => {
// console.log(`Intercepting: ${request.method} ${request.url}`);
// request.continue();
// });
await page.goto(url);
// await page.waitForNavigation({waitUntil: 'load'});
// await page.waitForNavigation({ waitUntil: "networkidle0" });
await page.waitFor(5000);
//! save
const title = await page.title();
const fn = "dl-" + title;
console.log(title);
const session = await page.target().createCDPSession();
await session.send('Page.enable');
const { data } = await session.send('Page.captureSnapshot');
// console.log(data);
fs.writeFileSync(fn + '.mhtml', data);
browser.close();
})();