微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 puppeteer(node js) 在 gmail 中保持登录状态

如何解决如何使用 puppeteer(node js) 在 gmail 中保持登录状态

所以我想要做的是打开一个已经登录的 gmail 帐户,我使用了 here 的这个答案 wolfy 但问题是它会在一段时间后将您从帐户中注销或者当我使用相同的 cookie 打开多个实例时,您必须再次输入密码

我是怎么做到的

const getCookies = async (page) => {
    // Get all cookies
    const cookiesArray = await page._client.send('Network.getAllCookies');

    // Get cookies from array
    const cookies = await cookiesArray.cookies;

    // Save cookies to file
    fs.writeFile('./cookies.json',JSON.stringify(cookies,null,4),(err) => {
        if (err) console.log(err);
        return;
    });
}

const setCookies = async (page) => {
    // Get cookies from file
    let cookies = JSON.parse(fs.readFileSync('./cookies.json'));

    // Set page cookies
    await page.setCookie(...cookies);
    return
}

我是如何发送 cookie 的

// Create page once browser loads
let [page] = await browser.pages();

// Turn on page request interception
await page.setRequestInterception(true);

// Add event listener on request
page.on('request',async (req) => {

    // If the request url is what I want,start my function
    if (req.url() === 'https://youtube.com/?authuser=0') {
        await getCookies(page);
        await browser.close();
    }

    // If the url is not,continue normal functionality of the page
    req.continue();
});

// Then go to my url once all the listeners are setup
await page.goto('https://accounts.google.com/AccountChooser?service=wise&continue=https://youtube.com')

解决方法

正如我们在评论中所说,我将尝试复制这个问题,看看我是否能为您找到合适的解决方案。但是,您可以尝试的一种方法是在每次关闭浏览器之前恢复 cookie。您只需再次调用您的 getCookies 方法,它就会获得最新版本的 cookie(因为它们自上次以来就会发生变化)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。