除了这里和这里的答案之外,这是您如何执行此操作的方法。基本上,这个想法是在其他docker上运行chrome并从另一个docker连接到docker,然后在需要时使用它。它将需要一些维护,错误处理,超时和并发,但这不是这里的问题。
puppeteer
您将puppeteer保存在主帐户上
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD =true,使用来安装puppeteer时不安装chrome,而是使用它连接到在另一个docker上运行的辅助puppeteer。
const browser = await puppeteer.connect({ browserWSEndpoint: "ws://123.123.123.123:8080", ignoreHTTPSErrors: true});websocket
您在此处设置了完全运行的Chrome,公开了websocket。有不同的方法可以做到这一点。这是最简单的一个。
const http = require('http');const httpProxy = require('http-proxy');const proxy = new httpProxy.createProxyServer();http .createServer() .on('upgrade', async(req, socket, head) => { const browser = await puppeteer.launch(); const target = browser.wsEndpoint(); proxyy.ws(req, socket, head, { target }) }) .listen(8080);


