rpascal
rpascal

Reputation: 753

Puppeteer Launch Incognito

I am connected to a browser using a ws endpoint (puppeteer.connect({ browserWSEndpoint: '' })).

When I launch the browser that I ultimately connect to, is there a way to launch this in incognito?

I know I can do something like this:

const incognito = await this.browser.createIncognitoBrowserContext();

But it seems like the incognito session is tied to the originally opened browser. I just want it to be by itself.

I also see you can do this:

const baseOptions: LaunchOptions = { args: ['--incognito']};

But I am not sure if this is the best way or not.

Any advice would be appreciated. Thank you!

Upvotes: 27

Views: 44034

Answers (4)

Glynz
Glynz

Reputation: 41

Unfortunately, the browser.createIncognitoBrowserContext() has been deprecated making the other answers outdated. As a work around, you can launch the browser in incognito and access the default context and it's page via pages() which is the existing Incognito page.

const browser = await puppeteer.launch({
  args: [
    '--incognito',
  ],
});

const context = browser.defaultBrowserContext();
const page = (await context.pages())[0]

Upvotes: 4

atoms
atoms

Reputation: 3093

For Puppeteer sharp it's rather messy but this seems to work.. Hopefully it helps someone.

using (Browser browser = await Puppeteer.LaunchAsync(options))
{
     // create the async context 
    var context = await browser.CreateIncognitoBrowserContextAsync();

    // get the page created by default when launch async ran and close it whilst keeping the browser active
    var browserPages = await browser.PagesAsync();
    await browserPages[0].CloseAsync();

    // create a new page using the incognito context
    using (Page page = await context.NewPageAsync())
    {
        // do something 
    }
}

Upvotes: -1

MrE
MrE

Reputation: 20798

the solutions above didn't work for me:

an incognito window is created, but then when the new page is created, it is no longer incognito.

The solution that worked for me was:

const browser = await puppeteer.launch();
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();

then you can use page and it's an incognito page

Upvotes: 38

Grant Miller
Grant Miller

Reputation: 29037

The best way to accomplish your goal is to launch the browser directly into incognito mode by passing the --incognito flag to puppeteer.launch():

const browser = await puppeteer.launch({
  args: [
    '--incognito',
  ],
});

Alternatively, you can create a new incognito browser context after launching the browser using browser.createIncognitoBrowserContext():

const browser = await puppeteer.launch();
const context = await browser.createIncognitoBrowserContext();

You can check whether a browser context is incognito using browserContext.isIncognito():

if (context.isIncognito()) { /* ... */ }

Upvotes: 41

Related Questions