我无法在木偶群集脚本中使用轮换 IP 代理



我试图用多个地址IP运行此代码,但我认为我把代理代码放错了地方。有人能帮忙吗,代理仪表板显示代码使用了代理,但当他打开浏览器时,地址IP仍然是我的本地IP。代码需要运行多个浏览器,每个浏览器都有一个唯一的不同IP。


const puppeteer = require("puppeteer-extra");
const StealthPlugin = require("puppeteer-extra-plugin-stealth");
puppeteer.use(StealthPlugin());
const { Cluster } = require("puppeteer-cluster");
const util = require('util');
const fs = require('fs');
const readFile = util.promisify(fs.readFile);
const langBtns = require('./langBtns');
async function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

let choices = Object.values(langBtns);
let randObj;
let buttons;
let lang;
let button;
let goodBtnSelector;
let cluster;
const start = async () => {
cluster = await Cluster.launch({
concurrency: Cluster.CONCURRENCY_CONTEXT,
maxConcurrency: 4, // provide the puppeteer-core library
puppeteer,
puppeteerOptions: {
headless: false,
executablePath:
"C:\Program Files\Google\Chrome\Application\chrome.exe",
slowMo: 10,
defaultViewport: null,
args: [

"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-dev-shm-usage",
"--disable-accelerated-2d-canvas",
"--no-first-run",
"--no-zygote",
"--disable-gpu",
"--disable-notifications",
"--proxy-server=megaproxy.rotating.proxyrack.net:1200"
],
},
// and provide executable path (in this case for a Chrome installation in Ubuntu)
});
await cluster.task(async ({ page, data: lang}) => {
await Promise.all([
await visitWebsite(page, lang),

]);
});
//add number of bots, here 5
for (let index = 0; index < 1000000; index++) {
//Choosing an object (lang+buttons) from the JSON file
randObj = choices[Math.floor(Math.random()*choices.length)];
//Storing the buttons of the choosing language in the array buttons
buttons = randObj.buttons;
button = buttons[Math.floor(Math.random()*buttons.length)];
lang = randObj.language;
goodBtnSelector = randObj.goodButtonSelector;

}
await cluster.idle();
await cluster.close();
};
const visitWebsite = async (page, lang) => {
await cluster.queue(lang);

//  add proxy credentials
await page.authenticate({
username: 'XXXXXXXX',
password: 'XXXXXXXXXXX'
});
console.log(lang);

try{
await page.goto(`https://whatismyipaddress.com/`, {
waitUntil: "load",
timeout: 60000
});
await sleep(200 + Math.floor(Math.random() * 50));
let scriptFilePath = 'search.js';
let testScript = (await readFile(`${scriptFilePath}`));
await Promise.all([
eval('(async () => {' + testScript.toString() + '})')()
]);
}catch (e) {
console.log(e.toString());
}
};
start();

我在木偶师集群v0.22.0中遇到了同样的问题我通过将concurrency Option更改为Cluster解决了这个问题。concurrent_PAGE

例如:

this.cluster = await Cluster.launch({
puppeteer,
puppeteerOptions: {
headless: true,
ignoreHTTPSErrors: true,
args,
ignoreDefaultArgs: ['--mute-audio', '--hide-scrollbars'],
},
concurrency: Cluster.CONCURRENCY_PAGE,
maxConcurrency: 12,
timeout: 900000,
retryLimit: 4,
});

最新更新