如何减小 Puppeteer 的大小

How to reduce Puppeteer size

我正在使用 Puppeteer 进行网络抓取,并使用我制作的小型 NodeJs 网络应用程序。此网络应用程序托管在 Heroku 上,使用 jontewks/puppeteer-heroku-buildpack 即可运行。

我面临的问题是,由于 Heroku 的大小限制,我的应用程序不再构建:

Compiled slug size: 537.4M is too large (max is 500M).

我试过几种方法:

我的最后三点将我的鼻涕虫体积缩小到 490M。所以我的应用程序正在运行,但它对(关闭的)未来来说并不是很好,比如拥有最新的 Puppeteer 版本。

所以我在这里寻求帮助,因为我目前没有更多的想法。

非常感谢您的帮助

最后,我最终使用了 Playwright。

使用 this Buildpack,我的应用程序构建只有 250Mb!

以下是我遵循的几个步骤:

  • 使用 NPM 安装 playwright-chromium 以仅下载 Chromium。

  • 在 Heroku 中将 PLAYWRIGHT_BUILDPACK_BROWSERS env 变量设置为 chromium 以仅安装 Chromium 依赖项。

  • 在 Heroku 中将此构建包放在 Node.js 构建包之前。

  • 通过 this trick,您可以使用 puppeteer-stealth 中的大部分内容。

  • 如果需要,您可以像在 Puppeteer 中那样阻止资源:

await page.route('**/*', route => ([
    'stylesheet',
    'image',
    'media',
    'font',
    // 'script',
    'texttrack',
    'xhr',
    'fetch',
    'eventsource',
    'websocket',
    'manifest',
    'other',
].includes(route.request().resourceType()) ? route.abort() : route.continue()))