Como configurar um proxy com autenticação no Puppeteer (Node.js)
Atualizado:
O Puppeteer gerencia o Chrome e o Chromium através do DevTools Protocol (CDP), fornecendo a API nativa await page.authenticate({ username, password }) para autenticação HTTP 407. Combinar --proxy-server=http://ip:port com page.authenticate() permite que seus scripts em Node.js naveguem pelos proxies estáticos da VinaProxy sem depender de extensões de terceiros.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
Configuração de proxy em duas etapas no Puppeteer
Nunca insira user:pass@ diretamente no argumento de inicialização --proxy-server. Em vez disso, informe host e porta no lançamento e realize a autenticação na instância da Page:
| Etapa | Código no Puppeteer | Finalidade técnica |
|---|---|---|
| 1. Iniciar o Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Direciona a interface de rede do Chromium para o seu proxy VinaProxy |
| 2. Autenticar a Página | await page.authenticate({ username, password }) | Envia as credenciais via CDP em resposta ao desafio HTTP 407 |
| 3. Navegar | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Acessa o endereço de destino por meio do túnel proxy autenticado |
Rotacionando múltiplos proxies entre abas com proxy-chain
- Lembre-se de que
page.authenticate()possui escopo individual por abaPage— execute-o em cada nova aba gerada porbrowser.newPage() - Para operar proxies diferentes em contextos anônimos dentro do mesmo processo do Chromium, converta cada URL
http://user:pass@ip:portcom o pacoteproxy-chain(anonymizeProxy()) e passe embrowser.createBrowserContext({ proxyServer }) - Compatível com o
puppeteer-extrae o plugin de evasãopuppeteer-extra-plugin-stealth
Passo a passo
- 1
Informe --proxy-server=http://ip:port no puppeteer.launch()
Abra o navegador com
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
Chame await page.authenticate() na nova página
Crie uma aba com
const page = await browser.newPage();e executeawait page.authenticate({ username: 'USER', password: 'PASS' });. - 3
Valide o endereço de IP público de saída
Navegue até
await page.goto('https://vinaproxy.com/api/my-ip');e valide o JSON recebido. - 4
Finalize o processo do navegador
Ao concluir os trabalhos, chame
await browser.close();para liberar recursos do sistema.
Perguntas frequentes
Por que o Puppeteer retorna o erro ERR_NO_SUPPORTED_PROXIES?
Esse erro ocorre quando se inclui user:pass@ na flag de inicialização: --proxy-server=http://user:pass@ip:port. Mantenha apenas --proxy-server=http://ip:port e passe o login e a senha via await page.authenticate({ username, password }).
Por que uma segunda aba aberta com browser.newPage() falha com HTTP 407?
A autenticação page.authenticate() é vinculada à aba ativa. Em cada nova aba aberta, execute await secondPage.authenticate({ username, password }) antes de navegar.
Os proxies da VinaProxy possuem limitação de tráfego para web scraping em modo headless?
Não. Todos os planos de IPv4 dedicado e ISP estático da VinaProxy oferecem transferência mensal ilimitada.
Potencialize seus scrapers Puppeteer em Node.js com IPs estáticos dedicados
Proxies IPv4 Dedicados e ISP Estáticos com ativação rápida e tráfego ilimitado em 7 países.
Comprar Proxies para Puppeteer