Sem KYC — sem ID, sem selfie, sem documentos. Pague com cripto: BTC, USDT, USDC, ETH, SOL, LTC
Idioma: Português
Comece agora

Docs · Puppeteer · Chrome para Testes

Autenticação de proxy Puppeteer com IPs residenciais e proxies móveis 4G

O Chrome pega o endereço do proxy da flag de inicialização e as credenciais do page.authenticate(). Use um contexto de navegador por sessão para que as credenciais nunca vazem entre tarefas.

Última atualização: · 4 min de leitura

Resposta rápida

Como usar um proxy autenticado no Puppeteer?

Inicie o Chrome com --proxy-server=http://gw.crawlrelay.com:7777, então chame page.authenticate({ username, password }) antes da primeira goto. O Chrome ignora credenciais escritas na flag. CrawlRelay proxies residenciais leem o país e a sessão fixa do nome de usuário, assim cada página ou contexto pode ter sua própria saída. O tráfego custa US$ 0,50/GB a partir de 50 GB. Pago com cripto, sem KYC.

Configuração do Puppeteer em resumo

Endereço do proxy--proxy-server=http://gw.crawlrelay.com:7777 em args, ou proxyServer em um contexto de navegador
Credenciaisawait page.authenticate({ username, password }) antes de navegar
Sessões separadasbrowser.createBrowserContext({ proxyServer }): um contexto por sessão
SOCKS5Não com autenticação no Chrome: use a porta HTTP
Economizando tráfegopage.setRequestInterception(true) e abortar imagens, fontes e mídia

Como configurar um único proxy autenticado?

Esse é o padrão mínimo. O bloco try … finally fecha o Chrome mesmo quando a navegação falha, o que importa em servidores onde browsers órfãos se acumulam.

Node.js (módulo ES): um navegador, uma saída
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  args: ["--proxy-server=http://gw.crawlrelay.com:7777"],
});
try {
  const page = await browser.newPage();
  await page.authenticate({ username: "USERNAME-country-us", password: "PASSWORD" });
  await page.setRequestInterception(true);
  page.on("request", (req) =>
    ["image", "font", "media"].includes(req.resourceType()) ? req.abort() : req.continue()
  );
  const res = await page.goto("https://example.com/", { waitUntil: "domcontentloaded", timeout: 60000 });
  console.log(res.status(), await page.title());
} finally {
  await browser.close();
}

Como executar várias sessões ou países em um único navegador?

Crie um contexto de navegador por sessão. Um contexto é um perfil isolado com seus próprios cookies, cache e estado de rede, assim as credenciais dadas para um contexto não vazam para outro. Dê a cada contexto um nome de usuário com seu próprio país ou ID de sessão.

Node.js: um contexto por sessão fixa
import puppeteer from "puppeteer";
import { randomUUID } from "node:crypto";

const GATEWAY = "http://gw.crawlrelay.com:7777";
const browser = await puppeteer.launch();

async function visit(country, url) {
  const session = randomUUID().replaceAll("-", "").slice(0, 10);
  const context = await browser.createBrowserContext({ proxyServer: GATEWAY });
  try {
    const page = await context.newPage();
    await page.authenticate({
      username: `USERNAME-country-${country}-session-${session}-ttl-20`,
      password: "PASSWORD",
    });
    await page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
    return { country, session, ip: await page.evaluate(() => document.body.innerText.trim()) };
  } finally {
    await context.close();
  }
}

try {
  const results = await Promise.all([
    visit("us", "https://api.ipify.org"),
    visit("gb", "https://api.ipify.org"),
  ]);
  console.table(results);
} finally {
  await browser.close();
}

Por que o Puppeteer mostra 407 ou ERR_TUNNEL_CONNECTION_FAILED?

Porque o Chrome não enviou credenciais, ou enviou erradas. Verifique três coisas:

  1. page.authenticate() roda antes da primeira goto naquela página.
  2. A flag --proxy-server ou proxyServer possui só esquema, host e porta, sem parte user:pass@.
  3. O nome de usuário não tem erro na parte de destino: teste com curl primeiro, como mostrado na página 407.

Se curl funcionar com o mesmo usuário e senha e o Puppeteer falhar, leia ERR_TUNNEL_CONNECTION_FAILED.

Quanto tráfego uma página Puppeteer consome?

Tudo que o Chrome baixa é cobrado: HTML, scripts, estilos, imagens, fontes e as chamadas API que a página faz. O HTTP Archive Web Almanac 2025 mediu peso mediano de página de 2.164 KB no mobile e 2.412 KB no desktop. Bloquear imagens, fontes e mídia com interceptação de requisição normalmente reduz para poucas centenas de kilobytes, e retornar respostas em cache para scripts repetidos reduz mais. Use proxies móveis 4G rotativos só para as páginas que precisam: tráfego móvel custa US$ 1,50/GB a partir de 5 GB, residencial US$ 0,50/GB a partir de 50 GB.

Puppeteer e proxies: perguntas

Posso colocar o nome de usuário e senha em --proxy-server?

Não. O Chrome ignora credenciais na flag --proxy-server, e a primeira requisição HTTPS falha com 407 oculto por ERR_TUNNEL_CONNECTION_FAILED. Coloque só http://host:port na flag e passe as credenciais com page.authenticate() em cada nova página.

Como rotacionar IP entre páginas no Puppeteer?

Abra cada página em um novo contexto de navegador, ou dê para cada página um usuário sem ID de sessão. Um contexto novo abre conexões novas, e cada conexão geralmente recebe uma saída residencial diferente. Dentro de uma página, o Chrome reutiliza conexões, então requisições ao mesmo site dividem a saída até a conexão fechar.

O page.authenticate() funciona com interceptação de requisição?

Sim. Puppeteer trata o desafio de autenticação do proxy sozinho, e seu handler de interceptação só precisa chamar continue() ou abort() em cada requisição. Configure authenticate() primeiro, depois ative interceptação, como no primeiro exemplo.

Devo usar plugins stealth puppeteer-extra com proxies?

Não documentamos ou suportamos ferramentas para ocultar automação ou burlar detecção de bots. O objetivo delas é passar pela decisão do site de filtrar visitantes automatizados, o que nossa Política de Uso Aceitável não permite. Renderize páginas públicas com ritmo educado e use APIs oficiais quando disponíveis.

Qual Chrome o Puppeteer usa com o proxy?

Versões recentes do Puppeteer baixam automaticamente uma build Chrome for Testing correspondente e usam ela por padrão. As flags de proxy e page.authenticate() funcionam igual nela como no Chrome normal. Se apontar o Puppeteer para seu próprio Chrome com executablePath, mantenha o navegador atualizado.

Execute Puppeteer com IPs residenciais

US$ 5,94 para 10 GB, US$ 0,50/GB a partir de 50 GB.

A partir de US$ 0,50/GB · sem KYC

Comece agora