如何解决如何使用 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 举报,一经查实,本站将立刻删除。