为什么Puppeteer需要--no-sandbox才能在Cloud Functions中启动Chrome

时间:2018-12-08 09:22:35

标签: node.js firebase google-cloud-functions puppeteer google-chrome-headless

当我在具有节点8的Cloud Functions上运行Puppeteer时,出现此错误。

Error: Failed to launch chrome!
[1205/063825.588245:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

使用以下游戏启动木偶

browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    headless: true
})

解决了问题。 我在互联网上进行搜索,找不到任何必要的理由吗?

为什么无头Chrome首先以root用户身份运行?

1 个答案:

答案 0 :(得分:1)

由于 Cloud Functions 是无服务器的,因此每次启动时只能使用此Chromium标志。

背景

使用--no-sandbox标志只是使浏览器可以在Linux系统上启动的一种解决方法。

它与安全性相关,具体而言:Linux sandboxing,如果您要处理不受信任的网络流量,而不是不使用chrome,则建议您为Chromium设置自己的沙箱。

您可以使用user namespace cloning在Linux上设置一个发件箱。如果使用Cloud Functions,我不知道是否可以设置任何解决方案:因此,您需要no-sandbox,但是请确保您的伪造者脚本仅访问受信任的页面。