Искатель кукловода - ошибка: net :: ERR_TUNNEL_CONNECTION_FAILED - PullRequest
0 голосов
/ 12 февраля 2019

В настоящее время мой Кукольник работает с прокси на Heroku.Локально реле прокси работает совершенно нормально.Однако я получаю сообщение об ошибке: net :: ERR_TUNNEL_CONNECTION_FAILED.Я установил всю информацию .env в конфигурационных файлах Heroku, чтобы они были доступны.

Есть идеи, как я могу исправить эту ошибку и решить проблему?

У меня в настоящее время

 const browser = await puppeteer.launch({
      args: [
      "--proxy-server=https=myproxy:myproxyport",
      "--no-sandbox",
      '--disable-gpu',
      "--disable-setuid-sandbox",
      ],
      timeout: 0,
      headless: true,
    });

1 Ответ

0 голосов
/ 12 февраля 2019

page.authentication

Правильный формат аргумента прокси-сервера:

--proxy-server=HOSTNAME:PORT

Если это прокси HTTPS, вы можете передать имя пользователя и пароль, используя page.authenticate, прежде чем даже делатьнавигация,

page.authenticate({username:'user', password:'password'});

Полный код будет выглядеть следующим образом:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
        headless:false,
        ignoreHTTPSErrors:true,
        args: ['--no-sandbox','--proxy-server=HOSTNAME:PORT']
  });
  const page = await browser.newPage();

  // Authenticate Here 
  await page.authenticate({username:user, password:password});
  await page.goto('https://www.example.com/');
})();

Proxy Chain

Если каким-либо образом аутентификация не работает с использованием вышеуказанного метода, вы можете захотетьобрабатывать аутентификацию где-то еще.

Для этого существует несколько пакетов, один из которых proxy-chain, при этом вы можете взять один прокси и использовать его в качестве нового прокси-сервера.

proxyChain.anonymizeProxy(proxyUrl) возьмет один прокси с именем пользователя и паролем, создайте один новый прокси, который вы можете использовать в своем скрипте.

const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');

(async() => {
    const oldProxyUrl = 'http://username:password@hostname:8000';
    const newProxyUrl = await proxyChain.anonymizeProxy(oldProxyUrl);

    // Prints something like "http://127.0.0.1:12345"
    console.log(newProxyUrl);

    const browser = await puppeteer.launch({
        args: [`--proxy-server=${newProxyUrl}`],
    });

    // Do your magic here...
    const page = await browser.newPage();
    await page.goto('https://www.example.com');
})();
...