javascript 从puppeteer导出所有用户/会话数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 从puppeteer导出所有用户/会话数据相关的知识,希望对你有一定的参考价值。
async getChromeUserData() {
assert(this.userDataDir, 'userDataDir is empty');
try {
const buf = await streamToBuffer(await tar.c({
gzip: true,
cwd: this.userDataDir,
filter(path) {
if (/BrowserMetrics-active\.pma$/i.test(path)) return false;
if (/\/Favicons(-journal)?$/.test(path)) return false;
if (/\/History(-journal)?$/.test(path)) return false;
if (/\/Top Sites(-journal)?$/.test(path)) return false;
if (/\/Last Session$/.test(path)) return false;
if (/\/Last Tabs$/.test(path)) return false;
if (/\/Visited Links$/.test(path)) return false;
if (/\/ShaderCache\//.test(path)) return false;
if (/\/ShaderCache$/.test(path)) return false;
if (/\/GPUCache\//.test(path)) return false;
if (/\/GPUCache$/.test(path)) return false;
return true;
},
}, ['.']));
return buf;
} catch (error) {
this.logger.error('error-getChromeUserData', {
error,
});
return Buffer.from('');
}
}
async export() {
assert(this.page, 'page is empty');
// eslint-disable-next-line no-underscore-dangle
const { cookies } = (await this.page._client.send('Network.getAllCookies'));
return new Promise(async (resolve, reject) => {
try {
return zlib.gzip(JSON.stringify({
chromeUserData: (await this.getChromeUserData()).toString('base64'),
puppeteerCookies: cookies,
cookies: cookies.map(c => ({
domain: c.domain,
expires: new Date((c.expires || Date.now() / 1000) * 1000).toGMTString(),
expiry: c.expires,
httponly: c.httpOnly,
name: c.name,
path: c.path,
secure: c.secure,
value: c.value,
})),
}), (err, buf) => {
if (err) return reject(err);
return resolve(buf.toString('base64'));
});
} catch (error) {
return reject(error);
}
});
}
}
以上是关于javascript 从puppeteer导出所有用户/会话数据的主要内容,如果未能解决你的问题,请参考以下文章
Puppeteer 类型 node_modules/puppeteer/lib/types"' 没有导出成员 'Cookie'
如何在 puppeteer 中执行 javascript 代码
有没有办法从JavaScript文件中获取所有导出的名称?
玩转Puppeteer
如何获取 Puppeteer 访问的页面的所有 DOM 元素上的所有事件 - 基本上是 getEventListeners
傀儡师 |等待所有 JavaScript 执行完毕