From 2e986540f9170ef345b8d2a3e8df7b4b7a8a00c2 Mon Sep 17 00:00:00 2001 From: liuweiqing Date: Sat, 3 Aug 2024 19:15:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=88=AA=E5=9B=BE=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- bypasscf.js | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 39024ba2..e02460a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ -.env.local \ No newline at end of file +.env.local +screenshots \ No newline at end of file diff --git a/bypasscf.js b/bypasscf.js index 226f2b88..583d2590 100644 --- a/bypasscf.js +++ b/bypasscf.js @@ -5,7 +5,11 @@ import StealthPlugin from "puppeteer-extra-plugin-stealth"; import dotenv from "dotenv"; import { fileURLToPath } from "url"; import { dirname, join } from "path"; - +// 截图保存的文件夹 +const screenshotDir = "screenshots"; +if (!fs.existsSync(screenshotDir)) { + fs.mkdirSync(screenshotDir); +} puppeteer.use(StealthPlugin()); // Load the default .env file @@ -76,6 +80,8 @@ async function launchBrowserForUser(username, password) { var { connect } = await import("puppeteer-real-browser"); const { page, browser } = await connect(browserOptions); + // 启动截图功能 + takeScreenshots(page); // await page.goto(loginUrl); //登录操作 // await page.goto(loginUrl, { waitUntil: "networkidle0" }); @@ -247,3 +253,30 @@ async function navigatePage(url, page, browser) { // 如果循环正常结束,说明页面已经加载完毕,没有超时 console.log("The page is ready for further actions."); } + +// 每秒截图功能 +async function takeScreenshots(page) { + let screenshotIndex = 0; + setInterval(async () => { + screenshotIndex++; + const screenshotPath = path.join( + screenshotDir, + `screenshot-${screenshotIndex}.png` + ); + try { + await page.screenshot({ path: screenshotPath, fullPage: true }); + console.log(`Screenshot saved: ${screenshotPath}`); + } catch (error) { + console.error("Error taking screenshot:", error); + } + }, 1000); + // 注册退出时删除文件夹的回调函数 + process.on("exit", () => { + try { + fs.rmdirSync(screenshotDir, { recursive: true }); + console.log(`Deleted folder: ${screenshotDir}`); + } catch (error) { + console.error(`Error deleting folder ${screenshotDir}:`, error); + } + }); +}