Guia do Puppeteer · 2 min de leitura

Configuração de proxy Puppeteer com autenticação

O Puppeteer usa o servidor proxy como uma flag de lançamento, mas o nome de usuário e a senha vão para outro lugar completamente — através de page.authenticate(). Aqui está o padrão correto para proxies s4m autenticados, com código completo em Node.

Por que a bandeira sozinha não é suficiente

Chromium — the browser Puppeteer drives — accepts a proxy through the --proxy-server command-line flag. The catch is that Chromium's flag format does not accept credentials inline: you cannot write --proxy-server=http://USER:PASS@host:3128 and expect it to work. When the proxy challenges for authentication, Chromium raises a native auth prompt that a headless browser cannot answer on its own.

Puppeteer's answer is page.authenticate({ username, password }). You pass the bare host and port to the launch flag, then hand the credentials to the page, and Puppeteer responds to the proxy's 407 Proxy Authentication Required challenge for you. With s4m that means launching with --proxy-server=http://proxy.s4m.online:3128 and authenticating with your USER:PASS. The HTTP endpoint (port 3128) is the right one here — Chromium's proxy flag speaks HTTP and SOCKS, but authenticated SOCKS5 with a browser is fiddly, so HTTP is the reliable choice. See the proxy overview and the proxy authentication guide.

Lançamento autenticado do Puppeteer

O host do proxy vai na flag de lançamento; USER:PASS passa por page.authenticate(). Substitua as credenciais antes de executar.

javascript
// npm install puppeteer
const puppeteer = require("puppeteer");

const HOST = "proxy.s4m.online";
const PORT = 3128;             // HTTP proxy endpoint
const USER = "USER";
const PASS = "PASS";

(async () => {
  const browser = await puppeteer.launch({
    headless: "new",
    args: [
      `--proxy-server=http://${HOST}:${PORT}`,
      // credentials are NOT allowed here — see page.authenticate below
      "--no-sandbox",
    ],
  });

  const page = await browser.newPage();

  // This answers the proxy's 407 challenge:
  await page.authenticate({ username: USER, password: PASS });

  await page.goto("https://api.ipify.org?format=json", {
    waitUntil: "networkidle0",
    timeout: 30000,
  });
  console.log("Exit IP:", await page.evaluate(() => document.body.innerText));

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

Coisas que confundem as pessoas

Os erros que se transformam em uma página em branco ou um 407.

Credenciais vão para a página

Nunca coloque USER:PASS em --proxy-server; o Chromium ignora isso. Sempre chame page.authenticate() antes da sua primeira navegação, uma vez por página.

Use o endpoint HTTP

SOCKS5 autenticado em um navegador é pouco confiável. Aponte --proxy-server para http://proxy.s4m.online:3128 e deixe page.authenticate lidar com o login.

Autentique-se antes de ir

Chame page.authenticate() antes de page.goto(), caso contrário, a primeira solicitação atinge o proxy sem credenciais e retorna 407.

Um contexto, uma identidade

Cada contexto de navegador carrega sua própria autenticação. Para múltiplas identidades, inicie contextos separados em vez de re-autenticar uma página compartilhada.

Bloqueios, impressões digitais e honestidade

Um proxy oculta seu IP; ele não oculta que você está automatizando um navegador. Sistemas modernos de anti-bot também analisam propriedades do navegador, tempo e impressões digitais de TLS. Se um alvo sinaliza o Chromium sem cabeça, um proxy sozinho não resolverá — você pode precisar de configurações realistas de viewport e User-Agent, além de um ritmo semelhante ao humano, e mesmo assim alguns sites simplesmente não permitem automação.

Seja honesto sobre o tipo de proxy também: proxies s4m são datacenter, o que é perfeito para testes, monitoramento e sites moderadamente defendidos, mas alvos fortemente defendidos podem bloquear faixas de datacenter. Quando você precisa de uma saída estável para um login ou uma lista de permissões, adicione um IP pessoal dedicado. Prefere Playwright? O padrão é quase idêntico — veja o guia de proxy do Playwright. Verifique sua saída com as ferramentas e prototipe contra a lista de proxies gratuitos.

FAQ

Perguntas, respondidas

Por que minha solicitação do Puppeteer retorna 407?

Porque o proxy está desafiando a autenticação e você não respondeu. Chame page.authenticate({ username, password }) antes do seu primeiro page.goto() — credenciais na flag --proxy-server são ignoradas pelo Chromium.

O Puppeteer pode usar um proxy SOCKS5?

A flag de proxy do Chromium pode apontar para SOCKS, mas SOCKS5 autenticado em um navegador é pouco confiável. Use o endpoint HTTP na porta 3128 com page.authenticate() para uma configuração confiável.

Preciso autenticar cada página?

Sim — chame page.authenticate() uma vez por página (ou por contexto de navegador) antes de navegar. Cada contexto carrega suas próprias credenciais.

Um proxy vai me impedir de ser detectado como um bot?

Não. Um proxy apenas muda seu IP. Sistemas anti-bot também inspecionam impressões digitais do navegador e comportamento, então um proxy é necessário, mas não suficiente contra detecções agressivas.

Execute o Chrome sem cabeça atrás de um proxy

Proxies de datacenter autenticados em proxy.s4m.online, prontos para page.authenticate() do Puppeteer. Pagamento por uso, com um IP dedicado opcional para logins estáveis.

As pessoas encontraram esta página pesquisando por

Frases de busca reais que esta página responde — os links abrem a página que as cobre em profundidade.