You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用Playwright/Puppeteer(JS)设置浏览器启动时恢复上次会话?

用Puppeteer实现浏览器会话自动恢复

当然可以实现,核心思路是让Puppeteer复用Chrome的用户数据目录——Chrome本身会把会话状态(包括打开的标签页、浏览历史、设置)存在这个目录里,只要指定固定的目录路径,每次启动浏览器就会自动恢复上次关闭时的会话,完全不用手动保存标签页再重新打开。

具体实现步骤

  1. 指定固定用户数据目录:在puppeteer.launch()中配置userDataDir参数,指向一个本地固定路径(不要用临时目录),这样会话数据会被持久化存储。
  2. 首次启动自动打开目标页面:第一次运行时,判断是否只有默认的空白页,如果是则自动跳转到目标页面;后续启动时,Chrome会直接恢复之前的标签页。

代码示例

const puppeteer = require('puppeteer');

(async () => {
  // 自定义固定的用户数据目录路径,可根据需求修改
  const browser = await puppeteer.launch({
    userDataDir: './persistent-chrome-profile',
    headless: false, // 非无头模式便于直观查看效果
    args: ['--start-maximized'] // 可选,启动时最大化窗口
  });

  // 首次运行自动打开目标页面(后续启动会自动恢复会话,无需此步骤)
  const initialPages = await browser.pages();
  if (initialPages.length === 1 && initialPages[0].url() === 'about:blank') {
    await initialPages[0].goto('https://stackoverflow.com');
  }

  // 等待浏览器被手动关闭(也可通过代码触发关闭)
  await browser.waitForTarget(target => target.type() === 'browser' && target.url() === 'about:blank');
  await browser.close();
})();

关键说明

  • userDataDir是核心:这个目录会存储Chrome的所有会话数据,包括打开的标签页、Cookie、扩展等,只要路径固定,每次启动都会复用这些数据。
  • 无需手动保存标签页:Chrome会自动在关闭时将会话状态写入用户数据目录,下次启动直接读取恢复。
  • 权限注意:确保指定的目录有读写权限,否则无法持久化会话数据。
  • 无头模式兼容:如果需要无头模式运行,只需将headless设为true,会话恢复逻辑同样生效。

内容的提问来源于stack exchange,提问作者Rafael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:43:25