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 执行完毕