Javascript 木偶演员群使用中的问题
我正在练习使用无头浏览器,我计划制作一个小viewerbot。我们的目标是能够在一个网站上播放一条流,并且能够选择一些观众在流上发送,并且可以在不重新启动应用程序的情况下增加或减少观看人数 目前我在使用木偶师集群时遇到了一些问题 1/我找不到一种方法来同时处理活动任务的数量,如何随时添加或删除。也就是说,我在这个案例中的观众数量。会比我用的好吗 2/当集群的任务启动时,如果我在单个任务上出现超时问题,那么所有其他任务也会崩溃。我怎样才能解决这个问题 3/一旦启动任务,如何确保任务永不结束,查看者在页面上未被AFK检测到,或者任务已完成Javascript 木偶演员群使用中的问题,javascript,node.js,puppeteer,google-chrome-headless,Javascript,Node.js,Puppeteer,Google Chrome Headless,我正在练习使用无头浏览器,我计划制作一个小viewerbot。我们的目标是能够在一个网站上播放一条流,并且能够选择一些观众在流上发送,并且可以在不重新启动应用程序的情况下增加或减少观看人数 目前我在使用木偶师集群时遇到了一些问题 1/我找不到一种方法来同时处理活动任务的数量,如何随时添加或删除。也就是说,我在这个案例中的观众数量。会比我用的好吗 2/当集群的任务启动时,如果我在单个任务上出现超时问题,那么所有其他任务也会崩溃。我怎样才能解决这个问题 3/一旦启动任务,如何确保任务永不结束,查看者
const {Cluster} = require('puppeteer-cluster');
const vanillaPuppeteer = require('puppeteer')
const {addExtra} = require('puppeteer-extra')
const Stealth = require('puppeteer-extra-plugin-stealth')
async function main() {
const puppeteer = addExtra(vanillaPuppeteer)
puppeteer.use(Stealth())
let viewers = 3;
let live = 'https://a-live-stream.com';
const browserArgs = [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-infobars'
];
const proxies = [
'proxy:port',
'proxy:port',
'proxy:port',
];
let perBrowserOptions = [];
for (let i = 0; i < viewers; i++) {
perBrowserOptions = [...perBrowserOptions, {args: browserArgs.concat(['--proxy-server=' + proxies[i]])}]
}
const cluster = await Cluster.launch({
puppeteerOptions: {
headless: false,
args: browserArgs,
executablePath: 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe'
},
monitor: false,
puppeteer,
concurrency: Cluster.CONCURRENCY_BROWSER,
maxConcurrency: viewers,
perBrowserOptions: perBrowserOptions
});
cluster.on('taskerror', (err, data) => {
console.log(`Error crawling ${data}: ${err.message}`);
});
const viewer = async ({page, data: url}) => {
await page.goto(url, {waitUntil: 'networkidle2'})
const element = await page.$('iframe')
await element.click()
console.log('#Viewer live')
await page.waitFor(3000000)
console.log('#Closed')
};
cluster.queue(live, viewer)
cluster.queue(live, viewer)
cluster.queue(live, viewer)
await cluster.idle()
await cluster.close()
}
main().catch(console.warn)
const{Cluster}=require('puppeter-Cluster');
const Vanillapuppeter=require('puppeter')
const{addExtra}=require('puppeter-extra')
const隐身=require('puppeter-extra-plugin-steavy')
异步函数main(){
常数木偶演员=加法器(瓦尼拉木偶演员)
木偶演员。使用(隐形()
让观众=3;
让我们活下去https://a-live-stream.com';
常数browserArgs=[
“没有沙箱”,
“--禁用setuid沙盒”,
“--禁用信息栏”
];
常量代理=[
'代理:端口',
'代理:端口',
'代理:端口',
];
设perbrowsetoptions=[];
for(设i=0;i{
log(`Error crawling${data}:${err.message}`);
});
const viewer=async({page,data:url})=>{
wait page.goto(url,{waitUntil:'networkidle2'})
常量元素=等待页面。$('iframe')
等待元素。单击()
console.log(“#查看器live”)
等待页面。等待(3000000)
console.log(“#Closed”)
};
cluster.queue(实时,查看器)
cluster.queue(实时,查看器)
cluster.queue(实时,查看器)
等待cluster.idle()
等待群集。关闭()
}
main().catch(console.warn)