【问题标题】:Puppeteer and Chromium launch without flagsPuppeteer 和 Chromium 启动时没有标志
【发布时间】:2019-12-07 00:10:03
【问题描述】:

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

由 Puppeteer 打开

请求

回应

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

当我手动打开铬时,会出现以下情况 与此响应相同的请求

我尝试了以下代码

//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?所以所有的操作都正常进行了。

【问题讨论】:

    标签: javascript node.js google-chrome puppeteer chromium


    【解决方案1】:

    您可以使用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 使用这些苍蝇工作。所以我会尝试看看是哪个特定的标志造成了麻烦。

    【讨论】:

    • 它给出的语法错误,你能指定使用 args 作为数组的文档吗?
    • 完成@MuneebZulfiqar
    • 我添加了所有标志,但该请求仍为空。我什至尝试在 linux CLI 上运行它但无法正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多