如果代理拒绝连接,Puppeteer使用多个代理并更改自动代理

时间:2018-02-13 14:21:25

标签: node.js proxy puppeteer

你能告诉我这是否可行?

如果代理拒绝连接,我想使用多个代理并自动更改代理。

args: [
    '--proxy-server=127.0.0.1:9876', // Or whatever the address is
]

因此,你可以使用一个代理,但如果它拒绝连接,如何使用多个并让它自动更改?

1 个答案:

答案 0 :(得分:1)

使用Tor。

您可以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地址是否不同。