Proxy Port logo
Como Guias de instruções > Como configurar um proxy para Puppeteer

Como configurar um proxy para Puppeteer

O artigo fornece informações úteis para quem quer usar proxies com Puppeteer e oferece alguns bons conselhos para escolher a abordagem certa.

Se você estiver usando o Puppeteer para web scraping, talvez seja melhor usar a estrutura Crawlee, que simplifica o processo de desenvolvimento do spider e inclui um conjunto de ferramentas para trabalhar com proxies.


Exemplo de proxy Puppeteer

import puppeteer from 'puppeteer';

(async () => {
  const browser = await puppeteer.launch();
  const context = await browser.createIncognitoBrowserContext({
    proxyServer: "http://127.0.0.1:8080"
  });
  const page = await context.newPage();

  await page.goto('https://example.com/');

  console.log(await page.content());

  await browser.close();
})();
            
        
No exemplo acima, substitua http://127.0.0.1:8080 pela URL do seu servidor proxy. Se você não tiver um, considere verificar um pacote do provedor Proxy Port:

Instalar pacote:
$ npm i @proxyport/proxyport

            
Instancie ProxyPort e chame o método getProxy():
import { ProxyPort } from '@proxyport/proxyport';

const proxyPort = new ProxyPort(<API_KEY>);

(async () => {
    const proxy = await proxyPort.getProxy();
    console.log(proxy);
})();


        
Se você ainda não tem uma chave de API, não se preocupe! Aqui estão alguns instruções sobre como obter um gratuitamente.

Depois de seguir as etapas anteriores, você deve ter um código parecido com este:
import puppeteer from 'puppeteer';
import { ProxyPort } from '@proxyport/proxyport';

(async () => {
  const proxyPort = new ProxyPort(<API_KEY>);
  const proxy = await proxyPort.getProxy();

  const browser = await puppeteer.launch();
  const context = await browser.createIncognitoBrowserContext({
    proxyServer: `http://${proxy}`
  });
  const page = await context.newPage();

  await page.goto('https://example.com/');

  console.log(await page.content());

  await browser.close();
})();


        
Não se esqueça de substituir <API_KEY> pelo seu Chave de API.

Em alguns casos, você pode encontrar um erro como este:
Error: net::ERR_TIMED_OUT at https://example.com/

            
Isso ocorre porque você está usando servidores proxy públicos gratuitos. Para lidar com esse erro, você pode usar uma abordagem com novas tentativas. Veja como você pode conseguir isso:
import puppeteer from 'puppeteer';
import { ProxyPort } from '@proxyport/proxyport';

(async () => {
  const proxyPort = new ProxyPort(<API_KEY>);
  const browser = await puppeteer.launch();
  for (let i = 0; i < 10; i++) {
    const proxy = await proxyPort.getProxy();

    const context = await browser.createIncognitoBrowserContext({
      proxyServer: `http://${proxy}`
    });
    const page = await context.newPage();

    try {
      await page.goto('https://example.com/');
      console.log(await page.content());
      break;
    } catch (e) {
      console.log(`failed to load page with proxy: ${proxy}, error: ${e}\n`);
    }
  }

  await browser.close();
})();


        
Se você precisar de rotação intensiva de proxy com o Puppeteer, considere verificar o Estrutura Crawlee, que inclui recursos antibloqueio com rotação de proxy bem como suporte para Puppeteer e Playwright.
Proxy para raspagem
Saber mais