首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Chrome headless不能作为root使用--no-sandbox?

Chrome的headless模式是一种无界面运行模式,它允许你在不打开浏览器窗口的情况下运行自动化测试或其他需要与网页交互的任务。然而,出于安全考虑,Chrome不允许以root用户身份在无沙盒模式下运行。这是因为如果以root用户运行,一旦Chrome出现漏洞,攻击者可能会获得系统的完全控制权。

--no-sandbox参数用于禁用Chrome的沙盒模式。沙盒模式是一种安全机制,它限制了Chrome进程可以访问的系统资源,从而减少了潜在的安全风险。但是,当你需要以root用户运行Chrome时,沙盒模式会阻止Chrome启动,因为以root用户运行时,Chrome无法创建必要的沙盒环境。

如果你确实需要在无沙盒模式下以root用户运行Chrome,可以考虑以下几种替代方案:

1. 使用非root用户

最安全的做法是创建一个非root用户,并在该用户下运行Chrome。这样可以避免潜在的安全风险。

代码语言:javascript
复制
# 创建一个新用户
sudo useradd -m chromeuser

# 切换到新用户
sudo su - chromeuser

# 在该用户下运行Chrome
google-chrome --headless --disable-gpu

2. 使用--disable-setuid-sandbox

在某些情况下,你可以使用--disable-setuid-sandbox参数来替代--no-sandbox。这个参数会禁用setuid沙盒,但仍然会启用其他类型的沙盒保护。

代码语言:javascript
复制
sudo google-chrome --headless --disable-gpu --disable-setuid-sandbox

3. 使用Docker容器

将Chrome运行在一个Docker容器中,可以提供一个隔离的环境,并且不需要以root用户运行Chrome。

代码语言:javascript
复制
# 创建一个Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y google-chrome-stable
CMD ["google-chrome", "--headless", "--disable-gpu"]

# 构建Docker镜像
docker build -t chrome-headless .

# 运行Docker容器
docker run -it --rm chrome-headless

4. 使用其他无头浏览器

如果Chrome不适合你的需求,可以考虑使用其他无头浏览器,如Puppeteer(基于Chromium)或PhantomJS。

代码语言:javascript
复制
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: true,
    args: ['--no-sandbox']
  });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await browser.close();
})();

总之,尽量避免以root用户运行Chrome,特别是在无沙盒模式下。使用上述替代方案可以提供更安全的运行环境。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

centos安装使用puppeteer和headless chrome

Google推出了无图形界面的headless Chrome之后,可以直接在远程服务器上直接跑一些测试脚本或者爬虫脚本了,猴开心!Google还附送了Puppeteer用于驱动没头的Chome。...在阿里云的Centos 7.3上,安装puppeteer之后,会发现并不能启动官方的example: const puppeteer = require('puppeteer'); (async ()...网上很多讨论是说,直接调试那个Chrome。按照并不能解决问题的说法:直接去puppeteer的目录找到.local-chrome里面的Chromium执行文件,直接执行 ..../chrome -v --no-sandbox --disable-setuid-sandbox (chrome:5333): Gtk-WARNING **: cannot open display:...回想一下,Puppet本身估计自带了--headless,所以如果直接去命令行执行chrome,还是要带上--headless

3.3K20
  • 在 Docker 中配置 Headless Chrome Node.js 服务器

    Headless Chrome 与 Node.js Node.js 是 Google Chrome 开发团队使用的主要环境,它拥有用于与 Chrome 通信的原生集成库:Puppeteer.js。...默认情况下,容器中的所有内容都以 root 用户身份运行,浏览器会在本地执行 JavaScript 文件。...以下是负责 Google Chrome 设置的 Dockerfile 例子。我们将选择 Alpine Linux 作为基本容器,因为用它生成的 Docker 镜像占用的空间最小。...Headless Chrome 的常见问题 Google Chrome 在执行时会占用大量内存,因此 Headless Chrome 在服务器端产生相同的情况也就不足为奇了。...这将使用相同的浏览器管理协议连接到 headless Chrome DevTools 套接字。 结论 在容器内运行浏览器可提供很多灵活性和可伸缩性。它也比传统的基于 VM 的实例便宜很多。

    2.9K10

    聊聊 Python 自动化脚本部署服务器全流程(详细)

    # 检查Chrome浏览器的版本 google-chrome -version 安装完成之后,发现使用 Root 用户启动 Chrome 浏览器失败PS:服务器 Chrome 浏览器不支持直接使用...,需要以 --no-sandbox 参数启动 # 以--no-sandbox方式启动Chrome浏览器 # 方式一:命令行启动 /usr/bin/google-chrome-stable --no-sandbox...# 方式二:修改Chrome浏览器快捷图标的启动方式 # 启动方式:--no-sandbox 2-4 配置 Chrome Driver 及授权 在官网下载 Chrome 浏览器对应版本的 Chrome...将自动化脚本上传到服务器,设置以有头模式运行 注意:由于服务器的 Chrome 需要配置以 no-sandbox 模式启动,因此自动化脚本需要添加设置属性 option = webdriver.ChromeOptions...() # 以无头模式运行 #option.add_argument('headless') option.add_argument('no-sandbox') option.add_argument(

    1.3K30

    论如何利用可控参数拼接完成RCE

    很容易理解这个使用方式,这里补充一点就是createprocess并不是cmd,不能用cmd里的命令方式来分割执行别的程序比如calc && notepad其中的notepad并没有正常运行。...比如: chrome.exe urlstr 其中urlstr可控,原意是使用chrome.exe打开用户传递的链接。...="cmd.exe" 在新版本Chrome里必须要加no-sandbox,因为不加的话由于有sandbox的作用所以会导致cmd不执行。...所以要加sandbox chrome.exe https://www.baidu.com --no-sandbox --gpu-launcher="cmd.exe" 其他 类似的,很多都是Chrome...可控制的urlstr中过滤了空格 当我们可控制的过滤了空格,参数拼接就会变得异常困难,正常情况可以认为是不能再插入自定义参数了。因为我们前面插入额外参数全部依赖于空格作为分割符。

    33810

    重要|RAID不能作为备份系统使用

    使用场景 RAID能够保护您免受单个磁盘驱动器故障的影响——当您替换故障磁盘并重建副本时,冗余镜像将接管一段时间。 使用误区 RAID和备份有很大的区别,或者说根本不是一个概念。...举个简单的例子,某个人执行了数据库的drop tables操作之后,无论使用什么模式下的RAID都不能有效保护您的数据。然而,备份是数据的副本,它存储在其他地方,并在空间和时间上与原始数据分离。...简而言之,即使您使用RAID,您仍然必须使用有效的备份软件才能保护您的数据免受损坏。...使用了块级别的条带化。 在上图中B1 B2 B3是块。p1 p2 p3是奇偶校验。 使用多个数据磁盘和一个专用磁盘存储奇偶校验。...常用的RAID 10 从RAID 0到6来看,使用起来收效较低,大多场景下,不能做到有效的平衡,RAID 0和RAID 1分别用于增强存储性能(RAID 0 条带)和数据安全性(RAID 1 镜像),

    1.3K30

    聊聊 Python 自动化脚本部署服务器全流程(详细)

    # 检查Chrome浏览器的版本 google-chrome -version 安装完成之后,发现使用 Root 用户启动 Chrome 浏览器失败PS:服务器 Chrome 浏览器不支持直接使用,...需要以 --no-sandbox 参数启动 # 以--no-sandbox方式启动Chrome浏览器 # 方式一:命令行启动 /usr/bin/google-chrome-stable --no-sandbox...# 方式二:修改Chrome浏览器快捷图标的启动方式 # 启动方式:--no-sandbox 2-4  配置 Chrome Driver 及授权 在官网下载 Chrome 浏览器对应版本的 Chrome...将自动化脚本上传到服务器,设置以有头模式运行 注意:由于服务器的 Chrome 需要配置以 no-sandbox 模式启动,因此自动化脚本需要添加设置属性 option = webdriver.ChromeOptions...() # 以无头模式运行 #option.add_argument('headless') option.add_argument('no-sandbox') option.add_argument(

    1.1K30

    攻防启示:Chromium组件风险剖析与收敛

    为何 --no-sandbox 会如此泛滥呢?我们不妨来看一下,当我们在ROOT下启动Chrome,会有什么样的提示呢?...,且无法启动 Chrome;这对于以研发效率和产品功能优先的研发同学来说无异于提示“请使用 --no-sandbox 来启动 Chrome”, 应用容器化的进程也加剧了使用ROOT用户启动应用程序的情况...[1fab740efe4b9250d572831581ca6eca.png] 所以,网络上有大量的文档和博客推荐启用 --no-sandbox 来解决 Chrome headless使用问题,这也间接助长了...--no-sandbox 2、使用普通用户而非 root 用户启动 chrome headless 进程 方案2....也因此,在HIDS进程大盘中, 启用 --no-sandboxChrome headless 进程也一直在持续增多。

    1.3K10

    基于Chorme headless的xss检测实践

    01 — 起因 扫描器不能满足需求,phantomjs不支持html5标签。所以自己查阅资料和api,写了一个基于chrome headless xss扫描插件。...学习了一下:https://github.com/wilson9x1/ChromeHeadlessInterface 的项目后,决定自己使用webscoket和chrome进行通信。...--remote-debugging-port=9222 --headless -remote-debugging-address=0.0.0.0 --disable-xss-auditor --no-sandbox...2>&1 & chrome_headless_xss 1# tmp_url为添加payload的url,如果是post请求则为原始url 2chrome_headless_drive = ChromeHeadLess.../ 05 — 总结及思考 1、 其实使用websocket和chrome进行通信整个过程是异步的,使用异步的方法可以解决粗暴的通过超时来控制循环监听的问题,同时也能提高扫描效率。

    1.5K40

    WSL运行Chrome Headless模式

    前言 Google Chrome早就支持了headless模式,但一般都是在Linux上运行,而我则习惯于在WSL上开发,折腾了好久终于找到了可以在WSL上跑headless模式的方法。....deb $ which google-chrome /usr/bin/google-chrome 使用Chrome Headless访问网页 使用 官方文档的方法打开Chrome: $ google-chrome...: $ google-chrome --no-sandbox --headless --no-gpu --disable-setuid-sandbox --screenshot http://www.baidu.com...使用puppeteer提供的Chrome 无意中发现,puppeteer中提供的Chrome竟然可以在WSL中开启调试端口并正常访问。...总结 安装依赖库,包括中文字体库 使用puppeteer提供的Chrome版本 完整的启动命令行:chrome --no-sandbox --headless --no-gpu --disable-setuid-sandbox

    4.4K31
    领券