【问题标题】:Puppeteer on an express.js server cookiesexpress.js 服务器 cookie 上的 Puppeteer
【发布时间】:2019-11-29 02:46:43
【问题描述】:

我在 express.js 服务器上运行 puppeteer。我去的一些网页需要 puppeteer 才能登录。我正在使用

const browser = await puppeteer.launch({
    userDataDir: "./user_data/",
  });

存储会话 cookie,这样我就不必每次都登录,但是,每当我重新启动 express.js 服务器时,cookie 似乎消失了,我需要再次登录。

为什么这种情况不断发生?有没有办法阻止它发生?

【问题讨论】:

  • 看起来这曾经是一个 Chromium 错误。你用的是什么版本的puppeteer? github.com/puppeteer/puppeteer/issues/921 puppeteer 也有可能无法正确解析 ./,会尝试使用绝对文件路径
  • 我试过绝对文件路径,但没有奏效。铬Version 79.0.3945.0 (Developer Build) (64-bit).

标签: express puppeteer


【解决方案1】:

嗯,我不能说我确切地知道是什么导致了您的问题,但我也遇到了一些困难让 puppeteer 正确保存所有会话数据(构建机器人以登录银行账户以检查余额等)为了解决这个问题,我创建了一些辅助函数,它们使用 zlib 将 cookie(来自直接的 Chrome Dev Tools 客户端命令和 puppeteer API)以及整个用户数据目录打包为 base64 字符串。

这是我创建的gist,您可以运行它。您需要决定在哪里存储包含会话数据的 base64 字符串,但一旦完成,您可以使用适当的函数将其导入任何 puppeteer 实例并复制确切的浏览器状态。就我而言,我使用的是 firestore,但显然任何存储解决方案都可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多