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

Puppeteer中关闭重启浏览器后Cookie丢失的问题咨询

Puppeteer跨会话保留Cookie失效问题解决办法

问题场景

编写Puppeteer脚本时,需要让浏览器跨会话保留Cookie,但关闭并重新打开浏览器后Cookie丢失,可复现代码如下:

import puppeteer from 'puppeteer';

(async () => {
    const userDataDir = 'C:\\junk_dir\\zxc'; 

    const args = [
        ...puppeteer.defaultArgs({ headless: false }).map(arg => {
            if (arg.startsWith('--disable-features')) {
                return arg.replace('Translate,', '').replace(',Translate', '');
            }
            return arg;
        }),
        '--start-maximized',
        '--disable-sync',
        '--no-sandbox',
        '--ignore-certificate-errors'
    ].filter(arg => !['--enable-automation', '--disable-extensions'].includes(arg));

    const browser = await puppeteer.launch({
        args,
        acceptInsecureCerts: true,
        headless: false,
        ignoreHTTPSErrors: true,
        defaultViewport: null,
        ignoreDefaultArgs: true,
        userDataDir: userDataDir,
        pipe: true
    });

    // Open a new page
    const page = await browser.newPage();

   // 

})();

解决建议

1. 确保浏览器正常关闭

脚本结束时必须调用browser.close(),让Chromium有足够时间将Cookie写入userDataDir目录。直接终止进程会导致Cookie未持久化。

2. 修正ignoreDefaultArgs配置

不要将ignoreDefaultArgs设为true,这会丢失Chromium默认的持久化相关参数。改为仅忽略不需要的特定参数:

ignoreDefaultArgs: ['--enable-automation', '--disable-extensions']

3. 检查目录权限

确认脚本对C:\\junk_dir\\zxc目录拥有读写权限,否则Chromium无法保存Cookie文件。

4. 验证Cookie持久化状态

测试时可以手动在页面完成登录操作,关闭浏览器后查看userDataDir\Default\Cookies文件是否存在且包含内容,以此确认Cookie是否被正确保存。

修改后的完整代码示例

import puppeteer from 'puppeteer';

(async () => {
    const userDataDir = 'C:\\junk_dir\\zxc'; 

    const args = [
        ...puppeteer.defaultArgs({ headless: false }).map(arg => {
            if (arg.startsWith('--disable-features')) {
                return arg.replace('Translate,', '').replace(',Translate', '');
            }
            return arg;
        }),
        '--start-maximized',
        '--disable-sync',
        '--no-sandbox',
        '--ignore-certificate-errors'
    ].filter(arg => !['--enable-automation', '--disable-extensions'].includes(arg));

    const browser = await puppeteer.launch({
        args,
        acceptInsecureCerts: true,
        headless: false,
        ignoreHTTPSErrors: true,
        defaultViewport: null,
        // 改为仅忽略指定参数,保留默认持久化配置
        ignoreDefaultArgs: ['--enable-automation', '--disable-extensions'],
        userDataDir: userDataDir,
        pipe: true
    });

    const page = await browser.newPage();

    // 这里可以添加你的页面操作,比如登录等

    // 脚本结束前必须关闭浏览器
    await browser.close();
})();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:02:16