技术问询:程序已启动Headless模式Chromium,能否用Puppeteer再启动非Headless实例?
当然可以!
完全没问题——Puppeteer每次调用puppeteer.launch()都会启动一个独立的Chromium实例,这些实例之间相互隔离,不会共享状态或配置。哪怕你已经有一个Headless模式的Chromium在运行,依然可以再启动一个非Headless(可视化)的实例,两者互不干扰。
给你举个简单的代码示例,直观展示如何同时运行两个不同模式的实例:
const puppeteer = require('puppeteer'); async function runMultipleInstances() { // 启动Headless模式的Chromium实例 const headlessBrowser = await puppeteer.launch({ headless: 'new', // 新版Headless模式,也可传true使用旧版 args: ['--disable-gpu'] }); // 启动非Headless模式的Chromium实例 const visibleBrowser = await puppeteer.launch({ headless: false, // 明确设置为false,启动可视化窗口 args: ['--start-maximized'] // 可选配置:启动时自动最大化窗口 }); // 分别操作两个实例 const headlessPage = await headlessBrowser.newPage(); await headlessPage.goto('https://example.com'); console.log('Headless实例已打开example.com'); const visiblePage = await visibleBrowser.newPage(); await visiblePage.goto('https://google.com'); console.log('可视化实例已打开google.com'); // 按需关闭实例(如果不需要长期运行的话) // await headlessBrowser.close(); // await visibleBrowser.close(); } runMultipleInstances();
额外提醒几个细节:
- 每个实例会占用独立的系统资源(内存、CPU),如果启动多个实例,要留意资源消耗情况
- 在部分Linux环境下,启动非Headless实例可能需要额外配置(比如安装桌面环境、添加
--no-sandbox参数),但Windows/macOS环境下一般直接就能运行 - 你可以给每个实例设置完全不同的启动参数(比如窗口大小、代理、用户数据目录等),彼此的配置完全独立
内容的提问来源于stack exchange,提问作者Proketel
相关产品推荐
相关产品推荐

