You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Puppeteer Sharp的--no-sandbox选项失效问题

解决Puppeteer Sharp在Ubuntu 20.04下root运行时的沙箱错误

先确认代码参数配置是否正确

确保你在LaunchOptions的Args集合里正确添加参数,避免因写法错误导致参数未生效。

正确的配置示例:

var launchOptions = new LaunchOptions
{
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" },
    Headless = true // 根据需求添加其他配置
};

using var browser = await Puppeteer.LaunchAsync(launchOptions);

如果是用AddRange添加参数,检查语法是否正确:

var launchOptions = new LaunchOptions();
launchOptions.Args.AddRange(new[] { "--no-sandbox", "--disable-setuid-sandbox" });

手动指定Chromium可执行路径

有时Puppeteer Sharp自动下载的Chromium路径与系统安装的不一致,导致参数未传递到正确的进程。可以通过命令which chromium或which chromium-browser获取实际路径,然后在代码中指定:

var launchOptions = new LaunchOptions
{
    ExecutablePath = "/usr/bin/chromium-browser", // 替换为你的实际路径
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
};

避免以root用户运行API(推荐方案)

以root运行服务存在安全风险,建议创建普通用户来运行.NET Core API:

  • 创建新用户:
sudo adduser puppeteer-user
  • 赋予API目录权限:
sudo chown -R puppeteer-user:puppeteer-user /path/to/your/api
  • 切换用户运行API:
su - puppeteer-user
cd /path/to/your/api
dotnet YourApi.dll

普通用户运行时无需添加沙箱禁用参数,即可正常启动浏览器。

检查沙箱开关是否被手动启用

如果代码中显式设置了Sandbox = true(默认值为true),需要手动关闭:

var launchOptions = new LaunchOptions
{
    Sandbox = false, // 关闭沙箱会自动添加禁用参数
    // 此时可省略Args中的--no-sandbox和--disable-setuid-sandbox
};

内容的提问来源于stack exchange,提问作者Kuartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:14:58