我想在使用 Ubuntu 的 Digital Ocean 服务器中使用
headless = false
运行 puppeteer。
当我进入 digitalocean.com 上的 Digital Ocean 控制台时,它运行正常(我使用 ubuntu-desktop 作为 GUI,Chromium 实际上会弹出并开始在 GUI 中运行)。
但是,当我 ssh 进入控制台并尝试运行相同的程序时,该程序会一直工作,直到它遇到 puppeteer 脚本,并且我从 puppeteer 收到以下错误消息:
Error: Failed to launch the browser process!
Unable to open X display.
NaCl helper process running without a sandbox!
Most likely you need to configure your SUID sandbox correctly
这是我的 puppeteer 配置中的内容:
import puppeteer from "puppeteer";
export const getBrowser = async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
"--no-sandbox",
"--disable-setuid-sandbox",
"--window-size=1600,1200",
],
defaultViewport: null,
});
return browser;
};
我尝试过删除
--no-sandbox
和 --disable-setuid-sandbox
,但这并没有解决问题。
如果您问自己“他们为什么要这样做?” - 这主要是因为我发现我正在挖掘的网站在处于头脑清醒的状态时往往不会注意到(我想我可以回到傀儡师隐身状态)。
我也有同样的问题。我解决了一半。我在终端中启用了 X11 转发,现在一切都启动了。然而,我仍然在努力解决这个问题,因为我想在我的服务器上自动运行 headful 脚本而不用我干预,现在我正在考虑实现这一目标的方法。