Puppeteer 和 Chromium 在没有标志的情况下启动

Puppeteer and Chromium launch without flags

我有以下代码并试图拦截某个特定的 HTTP 请求。我面临的问题是,当通过 puppeteer 启动 chromium 时,有一些标志导致某些请求无法获得所需的数据。当我手动启动铬时,一切正常。 以抖音为例

由 Puppeteer 打开

要求

回应

以下是铬的详细信息,您可以看到带有 .exe

的标志

当我手动打开 chromium 时出现以下内容 具有此响应的相同请求

我试过以下代码

//const puppeteer = require('puppeteer');
//const puppeteer = require('puppeteer-core');
var currentCookies = null;

//const browser = await puppeteer.launch({ignoreDefaultArgs : true });    
//const browser = await puppeteer.launch({headless: false, executablePath: 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' , ignoreDefaultArgs : true });
    const [page] = await browser.pages();

我已经通过使用正常 chrome 实现了它,但我不能在生产中使用它,因为它与 centos 和 CLI 一起运行。

我的问题是我们如何在没有任何标志的情况下启动 chromium?所以所有的操作都正常进行。

您可以使用 ignoreDefaultArgs 选项。这可以用作布尔值或数组。

布尔示例
ignoreDefaultArgs 设置为 true 时,puppeteer 不会向命令行添加任何标志,但会添加您在 args 选项中设置的标志。

const browser = await puppeteer.launch({ignoreDefaultArgs: true, args: ['--mute-audio'] });

数组示例
当您设置数组时,puppeteer 将从默认参数中删除这些标志。

const browser = await puppeteer.launch({ignoreDefaultArgs: ["-some-flag"] });

正如文档所说,这些都是危险的设置,因为我们知道 Puppeteer 使用这些苍蝇。所以我会试着看看是哪个特定的标志引起了麻烦。