Skip to content

how to launch puppeteer with an already existing profile multiple time

so am trying to launch puppeteer with already existed chrome profile and it works , but what i want to do is to launch the same process multiple time which throw an error

(node:12820) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process! [0311/152606.490:ERROR:chrome_main_delegate.cc(679)] Web security may only be disabled if ‘–user-data-dir’ is also specified with a non-default value

am doing it in this way :

 const browser = await puppeteer.launch({
    executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
    headless: false,
    // excludeSwitches: 'enable-automation',
    args: [

      '--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'
    ],
  });

Answer

As far as I can tell Puppeteer doesn’t allow itself to be launched more than once for the same userDataDir because that folder includes a caching folder which must be unique per puppeteer instance. You can however open multiple pages using the same browser instance. For example:

   const browser = await puppeteer.launch({
      executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
      headless: false,
      // excludeSwitches: 'enable-automation',
      args: [
         '--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'
      ],
   });
   const page1 = await browser.newPage();
   const page2 = await browser.newPage();
   await page1.goto("https://www.bbc.co.uk", {waitUntil: 'networkidle2'});
   await page2.goto("https://www.google.co.uk", {waitUntil: 'networkidle2'});

If you truly need completely isolated Puppeteer processes you’ll need to launch each with its own unique userDataDir. You could try building a lightweight profile with just the config files you need and making a copy for each process you launch.

Sorry, that this isn’t really a perfect solution but I don’t think what you’re trying to do is possible.