как открыть несколько экземпляров puppeteer, не влияя на скорость экземпляров / сети

#javascript #node.js #automation #puppeteer #node-worker-threads

#javascript #node.js #автоматизация #puppeteer #узел-рабочий-потоки

Вопрос:

итак, я делаю автоматизацию для некоторого веб-сайта, на котором я хочу открыть несколько (6-10) экземпляров одновременно, для этой цели я делаю это с помощью рабочих потоков, но дело в том, что чем больше экземпляров я открываю, тем медленнее это получается, это нормально или это можно исправить

и я использую прокси, каждый экземпляр имеет свой собственный прокси-код :

   const browser = await puppeteer.launch({
    executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
    headless: false,
    devtools: false,
    ignoreHTTPSErrors: true,
    ignoreDefaultArgs: "--enable-automation",

    args: [
      " --enable-automation",
      "--no-sandbox",
      "--ignore-certificate-errors",
      "--enable-features=NetworkService",
      "--allow-running-insecure-content",
      "--disable-web-security",
      `--window-size=${options.width},${options.height}`,
      "--proxy-server="   Proxyy,
      // '--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'

    ],
  });
  const page = await browser.newPage();
  await page.setDefaultNavigationTimeout(0); 
  await page.authenticate({
    username: Puser,
    password: Ppass,
  });
 

действительно нормальные материалы и код рабочих потоков

 Multi_processing = (() => {
  return async () => {
    if (isMainThread) {

 
//? -------------------------------------------------------------------------- */
//?                                 Proxy input                                */
//? -------------------------------------------------------------------------- */
      let ProxyList = await prompt(" Input Proxy List ");
      Proxy_list = ProxyList.split("r");
      console.log(`${Proxy_list.length} tasks has been started `.green.bold)
//! -------------------------------------------------------------------------- */
//!                           Starting MultiThreading                          */
//! -------------------------------------------------------------------------- */
      for (let i = 0; i < Proxy_list.length; i  ) {        
          new Worker(__filename, {
          workerData: {
            Proxy_list: Proxy_list[i],
          
          },
        });
      }
    } else {
  
      /* -------------------------------------------------------------------------- */
      /*                               Proxie spliting                              */
      /* -------------------------------------------------------------------------- */
      parts = workerData.Proxy_list.split(":");
      if (parts.length == 4) {
        Aproxy = parts[0]   ":"   parts[1];
        pUser = parts[2];
        pPass = parts[3];
      }

      // console.log("Proxies : ".green   parts);
      console.log("Worker Of ID ".green   threadId);
      /* -------------------------------------------------------------------------- */
      /*                                Main Function                               */
      /* -------------------------------------------------------------------------- */
      try {
        MAIN(pUser, pPass, Aproxy,threadId);
      } catch (e) {
        console.log("Failed".red);
        console.log(e);
      }
    }
  };
})();