#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);
}
}
};
})();