我正在将puppeteer-extra软件包与puppeteer的隐身插件一起使用。在使用默认的puppeteer软件包时,隐身显示,但在使用puppeteer-extra插件时,即使在初始化隐身上下文时,隐身窗口也不会打开。任何想法,如果它有一些兼容性问题或已经有人遇到了这个问题。
我尝试了通过“ --incognito”模式的args并也使用了上下文方法。
使用--incognito参数时,它将以隐身方式打开父窗口,而使用newPage()时,它将打开第二个没有隐身流程的窗口。
我使用过的两种方法
导入人偶额外的包裹:
import puppeteer from 'puppeteer-extra';
import pluginStealth from 'puppeteer-extra-plugin-stealth';
Method 1:
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
Method 2 :
const browser = await puppeteer.launch({args:[--incognito]});
我希望在使用puppeteer-extra软件包时,其行为应与使用puppeteer相同。
答案 0 :(得分:0)
这似乎是由puppeteer-extra
库中的错误引起的。当您使用puppeteer-extra打开一个puppeteer实例时,将对浏览器实例进行热修补,以更好地集成新打开的页面与插件。
不幸的是,browser._createPageInContext
(从2.1.3版开始)的当前实现无法正确处理新页面一旦打开应属于哪个浏览器上下文。
解决方法是this pull request。 具体来说,您需要更改此行
return async (contextId) => {
对此
return async function (contextId) {
以便正确评估下一行上的arguments
const page = await originalMethod.apply(context, arguments)