我正在尝试使用以下代码以隐身模式启动Chrome浏览器。当我创建新页面并导航到URL时,我希望有一个Chrome浏览器实例,并且希望隐身该单个Chrome浏览器实例。
但是,我遇到的问题是,即使我传递了--incognito
标志来启动浏览器,默认的浏览器上下文也认为它不是隐身的。若要尝试解决此问题,我尝试了两种解决方法,在代码中分别用“解决方法1”和“解决方法2”表示。这两种方法都无法完成上述段落的粗体字。
import { Page, Browser } from "puppeteer";
const puppeteer = require('puppeteer');
async function run() {
const browser: Browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
args: [ '--incognito' ], // Passing in the flag here
});
// Shockingly, the below logs FALSE!
console.log(browser.defaultBrowserContext().isIncognito());
// Workaround 1: This creates a new page in non-incognito mode, but I would like the new page to be in incognito mode.
const browserPage: Page = await browser.newPage();
browserPage.goto("https://www.google.com");
// Workaround 2: This creates a new page in incognito mode, but I would like only one instance of the Chrome browser instead of two.
const context = await browser.createIncognitoBrowserContext();
const newContextPage: Page = await context.newPage();
newContextPage.goto("https://www.amazon.com");
}
run();
因此,我如何同时完成这两项?
我认为答案是将默认浏览器上下文设置为隐身,但是我该怎么做?
答案 0 :(得分:1)
根据此issue,这是不可能的。
答案 1 :(得分:1)
您可以尝试类似的操作,它将以隐身模式启动一个Chrome实例。
async function run() {
const browser: Browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
args: [ '--incognito' ], // Passing in the flag here
});
const [ browserPage ] = await browser.pages();
await browserPage.goto("https://www.google.com");
}
run();