你能告诉我这是否可行?
如果代理拒绝连接,我想使用多个代理并自动更改代理。
args: [
'--proxy-server=127.0.0.1:9876', // Or whatever the address is
]
因此,你可以使用一个代理,但如果它拒绝连接,如何使用多个并让它自动更改?
答案 0 :(得分:1)
您可以here,使您可以通过Tor网络通过Puppeteer浏览,并非常轻松地更改您的身份(IP地址)。
使用--proxy-server
标志使用Tor启动木偶:
const browser = await puppeteer.launch({
args: [
'--proxy-server=socks5://127.0.0.1:9050',
],
});
然后,如果响应失败(install the tor
package),则在page.on('response')
上使用child_process.exec()
更改代理。
以下命令将创建一个新的Tor身份:
(echo authenticate \'""\'; echo signal newnym; echo quit) | nc localhost 9051
用法示例:
'use strict';
const puppeteer = require('puppeteer');
const exec = require('child_process').exec;
(async () => {
const browser = await puppeteer.launch({
args: [
'--proxy-server=socks5://127.0.0.1:9050'
],
});
const page = await browser.newPage();
let current_ip_address = '';
page.on('response', response => {
if (response.ok() === false) {
exec('(echo authenticate \'""\'; echo signal newnym; echo quit) | nc localhost 9051', (error, stdout, stderr) => {
if (stdout.match(/250/g).length === 3) {
console.log('Success: The IP Address has been changed.');
} else {
console.log('Error: A problem occured while attempting to change the IP Address.');
}
});
} else {
console.log('Success: The Page Response was successful (no need to change the IP Address).');
}
});
await page.goto('http://checkip.amazonaws.com/');
current_ip_address = await page.evaluate(() => document.body.textContent.trim());
console.log(current_ip_address);
await browser.close();
})();
注意:Tor可能需要一段时间来更改身份,因此在继续执行程序之前,最好先验证IP地址是否不同。