puppeteer - Puppeteer:如何将默认浏览器上下文设置为隐身模式?
问题描述
我正在尝试使用以下代码以隐身模式启动 Chrome 浏览器。当我创建一个新页面并导航到一个 URL 时,我希望有一个 Chrome 浏览器实例,并且我希望该单个 Chrome 浏览器实例是隐身的。
但是,我遇到的问题是,即使我传入了--incognito
启动浏览器的标志,默认浏览器上下文也认为它不是隐身模式。为了解决这个问题,我尝试了两种解决方法,在代码中用“Workaround 1”和“Workaround 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();
因此,我怎样才能同时完成这两项?
- 启动单个 Chrome 浏览器实例
- 那个单一的 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();
或者,您可以在启动浏览器后使用以下命令创建新的隐身浏览器上下文browser.createIncognitoBrowserContext()
:
const browser = await puppeteer.launch();
const context = await browser.createIncognitoBrowserContext();
或者
const browser = await puppeteer.launch();
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
推荐阅读
- ios - 用户可以从应用程序外部编辑 plist 吗?
- c - 如何在已编译的可执行文件中调试 vscode?
- c# - 在 C# 中从数据库中读取和返回值
- pdf - 将 pandoc 表从 .md 转换为 PDF 时出错
- css - 手机上的布尔玛模态间距
- node.js - Discord OAuth 在请求中返回缺少的“代码”
- c - 从高级数组位置填充 char 数组
- android - 如果 Glide 找不到 URL,则无法更改 ImageView
- node.js - 博客网络中的身份验证问题,使用 node、express 和 mongoose 的后端以及使用 ejs 的前端
- amazon-web-services - Terraform 在 Sagemaker 中自动缩放