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

> Autenticação de proxy Puppeteer: --proxy-server mais page.authenticate(), uma sessão por contexto do navegador, interceptação de requisição para economizar tráfego.

- URL: https://crawlrelay.com/pt/docs/puppeteer/
- Última atualização: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

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.

**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

| Atributo | Valor |
| --- | --- |
| Endereço do proxy | `--proxy-server=http://gw.crawlrelay.com:7777` em `args`, ou `proxyServer` em um contexto de navegador |
| Credenciais | `await page.authenticate({ username, password })` antes de navegar |
| Sessões separadas | `browser.createBrowserContext({ proxyServer })`: um contexto por sessão |
| SOCKS5 | Não com autenticação no Chrome: use a porta HTTP |
| Economizando tráfego | `page.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*

```javascript
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*

```javascript
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](https://crawlrelay.com/pt/docs/errors/407-proxy-authentication-required/).

Se curl funcionar com o mesmo usuário e senha e o Puppeteer falhar, leia [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/pt/docs/errors/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](https://crawlrelay.com/pt/mobile-proxies/) 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](https://crawlrelay.com/pt/acceptable-use/) 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. [Veja os preços](https://crawlrelay.com/pt/pricing/) · [Guia Node.js](https://crawlrelay.com/pt/docs/node/)

---

CrawlRelay: CrawlRelay é um serviço proxy residencial rotativo e proxies móveis 4G/5G para desenvolvedores, para scrapers e pipelines de dados de IA: tráfego pay-as-you-go que não expira a partir de US$ 0,50/GB, pago com cripto, sem upload de documento. Sem KYC — sem ID, sem selfie, sem documentos. Pague com cripto.
