Puppeteer - 无法启动超过 2 个浏览器

时间:2021-04-07 10:03:01

标签: node.js puppeteer puppeteer-cluster

嗨,我有一个简单的 puppeteer 脚本,每个实例使用不同的 userDataDir

我无法生成超过 2 个木偶操纵者实例。

代码如下:

ipcMain.on('request-mainprocess-action', (event, arg) => {
    var taskData = arg[0];
    var url = taskData[5];
    var headlessChoice = arg[0][11];
    var taskName = taskData[21];

    var browserArgs = [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--window-size=1920x1080',
      '--lang=en-US,en',
      '--disable-infobars',
      '--no-zygote',
      '--renderer-process-limit=1',
      '--no-first-run',
      '--ignore-certificate-errors',
      '--ignore-certificate-errors-spki-list',
      '--disable-dev-shm-usage',
      '--disable-extensions',
      '--allow-insecure-localhost',
      '--disable-blink-features=AutomationControlled',
      '--remote-debugging-port=9222'
    ];

    (async () => {
        const browser = await puppeteer.launch({
            userDataDir: tasksDataDirPath+'\\'+taskName,
            headless: headlessChoice,
            ignoreHTTPSErrors: true,
            executablePath : arg[0][23],
            args: browserArgs,
            timeout: 3600000
        });
    
        const page = await browser.newPage();

        const pagesArray = await browser.pages();
        pagesArray[0].close();

        await page.emulateTimezone("Asia/Singapore");

        if(headlessChoice == true){
          await page.setViewport({width: (width/2)-21, height: height-111});
        }
        
        if(headlessChoice == true){
          await page.goto(url, { waitUntil: 'load', timeout: 3600000 });
        }
        else{
          await page.goto("https://bot.sannysoft.com/", { waitUntil: 'load', timeout: 3600000 });
        }
    
        await new Promise(resolve => { });
    })();
});

我只能启动 2 个实例,在第 3 个实例时它只加载一个空白页面。

我也知道 puppeteer-cluster 但是我意识到使用 puppeteer-cluster 我无法设置 userDataDir,所以我必须使用普通的 puppeteer :(

有人可以帮忙吗?

0 个答案:

没有答案