Latenode

Configurando o modo headless no Puppeteer: equilibrando velocidade e funcionalidade

Explore as diferenças entre os modos headless e com interface gráfica no Puppeteer para otimizar a automação, a depuração e o desempenho dos seus projetos.

8 min de leitura
Janela do Puppeteer exibindo opções dos modos headless e com interface gráfica

Puppeteer permite automatizar navegadores Chrome ou Chromium, e escolher entre o modo headless ou headful pode impactar significativamente o desempenho e a depuração. Veja um resumo rápido:

  • Modo headless: Mais rápido, usa menos recursos, ideal para automação e tarefas de produção, como web scraping ou testes.
  • Modo headful: Interface visual do navegador, melhor para depuração e desenvolvimento.

Comparação rápida

RecursoModo headlessModo headful
Interface visualSem GUIGUI completa
Uso de recursosMenorMaior
Velocidade de execuçãoMais rápidaPadrão
Consumo de memóriaMenorMaior
Facilidade de depuraçãoBaseada no consoleFeedback visual

O novo modo headless combina o desempenho do modo headless com ferramentas de depuração aprimoradas, tornando-se uma opção equilibrada para muitos fluxos.

Escolha:

  • Modo headless padrão para eficiência em CI/CD ou produção.
  • Novo modo headless para depuração avançada e recursos modernos.
  • Modo headful para depuração visual e testes de elementos interativos.

Este guia explica como configurar cada modo, seus benefícios e quando utilizá-los.

Puppeteer - Modos headless e headful

1. Modo headless padrão

O modo headless padrão é a configuração padrão do Puppeteer, que executa o Chrome ou Chromium sem sua interface gráfica de usuário (GUI). Ao dispensar a GUI, ele usa menos memória, processa páginas mais rapidamente e reduz o uso da CPU.

Principais recursos

O modo headless padrão oferece suporte a uma ampla variedade de operações do navegador, incluindo:

RecursoO que faz
Simulação de usuárioLida com cliques, entradas em formulários e navegação
Manipulação de conteúdoInjeta JavaScript e modifica o DOM
Geração de ativosCaptura screenshots e cria PDFs
Monitoramento de redeRastreia solicitações e respostas
Automação de páginasExecuta scripts e extrai conteúdo

Como usar

Você pode iniciar o modo headless com o seguinte código:

const browser = await puppeteer.launch(); // Default headless
// OR
const browser = await puppeteer.launch({ headless: true }); // Explicit headless

Por que é útil

O modo headless é ideal para tarefas como web scraping, testes automatizados e criação de screenshots ou PDFs. Por exemplo, a Optimizely reduziu seu ciclo de testes de 24 horas para apenas uma hora ao utilizar testes em navegador headless na nuvem [1].

Desafios a considerar

Embora seja eficiente, o modo headless apresenta alguns obstáculos:

  • Determinados sites podem detectar e bloquear navegadores headless.
  • A depuração é mais difícil sem feedback visual.
  • Interações de usuário mais complexas podem exigir configuração adicional.

Para melhorar a confiabilidade e evitar detecção, você pode:

  • Definir uma string user-agent personalizada.
  • Adicionar atrasos entre as ações automatizadas.
  • Usar mecanismos robustos de tratamento de erros.
  • Garantir que a página esteja totalmente carregada antes de extrair dados.

Para obter ainda mais eficiência em tarefas específicas no servidor, você pode considerar a variante chrome-headless-shell. Essa opção leve é perfeita para fluxos focados em automação. Inicie-a com:

const browser = await puppeteer.launch({ headless: 'shell' });

Esse modo é especialmente eficaz para operações no servidor, oferecendo desempenho otimizado.

Em seguida, vamos explorar o novo modo headless do Chrome e como ele leva o desempenho a outro nível.

2. Novo modo headless do Chrome

O Chrome lançou um modo headless aprimorado que eleva a automação de navegadores a um novo patamar. Ao contrário da versão anterior, esse modo usa a mesma base de código do navegador Chrome convencional, garantindo mais estabilidade e acesso a todos os recursos do navegador. Ele combina a eficiência da operação headless com a funcionalidade de um navegador completo, tornando a automação e a depuração muito mais fluidas.

Principais recursos

O novo modo headless funciona criando janelas da plataforma sem exibi-las. Isso permite usar todos os recursos do navegador enquanto você ainda aproveita os benefícios de desempenho da operação headless. Veja como usá-lo no seu código:

const browser = await puppeteer.launch({ headless: 'new' }); // Explicitly use new headless mode
// OR
const browser = await puppeteer.launch({ headless: true }); // Defaults to new headless mode

Ferramentas de depuração

Esse modo também inclui várias ferramentas para facilitar a depuração:

RecursoFinalidade
Inspeção visualVisualize o comportamento do navegador (defina headless: false)
Tempo de operaçãoUse a opção slowMo para atrasar ações
Monitoramento do consoleCapture a saída do console para análise
Análise de protocoloAtive o registro do protocolo DevTools
Diagnóstico do navegadorUse dumpio: true para logs detalhados

Solução avançada de problemas

1. Uso do DevTools para depuração

Você pode ativar o DevTools integrado do Chrome para inspecionar detalhadamente o comportamento do navegador:

const browser = await puppeteer.launch({
  headless: 'new',
  devtools: true
});

2. Monitoramento de desempenho e rastreamento de erros

A base de código compartilhada permite criar perfis de desempenho precisos e resolver erros. Use essa configuração para monitorar e depurar operações tanto do lado do cliente quanto do servidor:

const browser = await puppeteer.launch({
  headless: 'new',
  devtools: true,
  slowMo: 100,
  args: ['--enable-logging', '--v=1']
});

Orientações para migração

Embora o modo headless antigo (headless: 'old') ainda esteja disponível, é uma boa ideia migrar para a nova versão. O modo legado será descontinuado futuramente, portanto, fazer a transição agora garante consistência e prepara você para atualizações futuras.

Benefícios de desempenho

Ao usar uma base de código unificada, o novo modo headless oferece comportamento consistente em diferentes ambientes. Essa consistência reduz problemas específicos de cada ambiente e aumenta a confiabilidade dos fluxos automatizados.

sbb-itb-23997f1

3. Modo de exibição do navegador

O modo de exibição do navegador abre uma janela visível durante as operações do Puppeteer. Embora use mais recursos, ele oferece melhores ferramentas de depuração e feedback visual.

Considerações de desempenho

A execução no modo de exibição aumenta o uso de recursos, mas oferece algumas vantagens:

const browser = await puppeteer.launch({
  headless: false,
  args: ['--enable-gpu-rasterization'],
  defaultViewport: null
});

Com um navegador visível, a aceleração de hardware da GPU pode ser ativada, melhorando o desempenho em sites com muitas imagens. Além disso, esse modo reduz as chances de detecção como bot ao imitar o comportamento padrão de um navegador.

Recursos avançados de depuração

O modo de exibição é ideal para solucionar problemas, pois oferece feedback visual imediato. Veja uma configuração útil para depuração:

const browser = await puppeteer.launch({
  headless: false,
  devtools: true,
  slowMo: 250,
  defaultViewport: {
    width: 1920,
    height: 1080
  }
});

Essa configuração abre o DevTools automaticamente, introduz um atraso de 250 ms para facilitar a inspeção e usa um tamanho de viewport padrão para testes consistentes.

Cenários de uso

CenárioBenefíciosDicas de configuração
Depuração visualVeja as interações em tempo realAtive o DevTools e use slowMo
Testes de GUIObserve os comportamentos da interface do usuárioDefina um tamanho fixo de viewport
Fluxos complexosVerifique interações detalhadasCombine com registros do console

Dicas de otimização

Para manter tudo funcionando sem problemas no modo de exibição:

  • Gerencie recursos: Feche abas e janelas não utilizadas para economizar memória.
  • Monitore o desempenho: Ative os logs do navegador para acompanhar métricas de desempenho.
  • Use aceleração de GPU: Ative recursos de GPU para tarefas com gráficos pesados.

"Às vezes, é útil ver o que o navegador está exibindo. Em vez de iniciar no modo headless, inicie uma versão completa do navegador com headless definido como false." - Documentação do Puppeteer [2]

Configuração avançada

Para tarefas mais exigentes, você pode aprimorar o modo de exibição com configurações adicionais:

const browser = await puppeteer.launch({
  headless: false,
  args: [
    '--enable-gpu-rasterization',
    '--window-size=1920,1080',
    '--disable-web-security'
  ],
  dumpio: true
});

Essa configuração melhora a visibilidade, ativa logs detalhados e permite acesso entre origens. Esses ajustes garantem uma experiência mais fluida e estabelecem a base para comparar desempenho e funcionalidade no próximo guia.

Guia de comparação de modos

Ao configurar o Puppeteer, cada modo oferece uma combinação diferente de velocidade, uso de recursos e recursos de depuração. Escolher o mais adequado depende das suas necessidades específicas.

Veja um detalhamento dos modos:

  • Modo headless padrão
    Esse modo foi desenvolvido para eficiência e inicialização rápida, tornando-se perfeito para testes automatizados ou pipelines de CI/CD. Ele usa recursos mínimos do sistema e fornece saída básica de depuração pelo console.
  • Novo modo headless
    Combina recursos robustos de depuração com desempenho próximo ao modo headless padrão. É uma boa escolha para tarefas que exigem uma combinação de velocidade e funcionalidade.
  • Modo de exibição do navegador
    Esse modo oferece acesso completo ao Chrome DevTools, com feedback visual em tempo real. É ideal para depuração detalhada ou análise de fluxos complexos. Embora exija mais recursos do sistema, ele oferece suporte a tarefas que se beneficiam de aceleração de hardware e controles avançados de rede.

O Puppeteer utiliza o Chrome DevTools Protocol para controle preciso do navegador, incluindo interceptação de rede e execução de JavaScript, permitindo ajustar detalhadamente as configurações.

Por exemplo, veja como otimizar o novo modo headless:

const browser = await puppeteer.launch({
  headless: 'new',
  args: [
   '--disable-gpu',
   '--no-sandbox',
   '--disable-setuid-sandbox'
  ]
});

Use o modo headless padrão para automação rápida e eficiente em recursos, o modo de exibição do navegador para depuração detalhada ou o novo modo headless quando precisar equilibrar desempenho e funcionalidade.

Escolhendo o modo certo

Ao selecionar um modo no Puppeteer, considere os objetivos e requisitos específicos do seu projeto. O Puppeteer prioriza velocidade, segurança, estabilidade e simplicidade [3]. Veja um detalhamento para ajudar você a decidir:

O modo headless padrão é ideal se você precisa de:

  • Máximo desempenho usando o mínimo de recursos
  • Nenhuma depuração visual ou renderização do navegador
  • Uma opção confiável para ambientes de CI/CD

O novo modo headless funciona melhor quando você precisa de:

  • Ferramentas avançadas de depuração sem sacrificar desempenho
  • Compatibilidade com recursos modernos da web
  • Equilíbrio entre uso de recursos e funcionalidade
  • Acesso à maioria dos recursos do Chrome DevTools Protocol

O modo de exibição do navegador é adequado para cenários que envolvem:

  • Necessidades detalhadas de depuração
  • Confirmação visual dos fluxos de automação
  • Desenvolvimento e testes de elementos interativos
  • Uso de aceleração de hardware

Casos de uso comuns e recomendações:

Tipo de projetoModo recomendadoPrincipal vantagem
Testes de pipeline de CI/CDHeadless padrãoExecução rápida com uso mínimo de recursos
Desenvolvimento e depuraçãoExibição do navegadorFeedback visual completo e DevTools
Automação em produçãoNovo headlessUma combinação sólida de recursos e desempenho

A API do Puppeteer facilita a alternância entre esses modos à medida que seu projeto evolui.

References

FAQ

Frequently Asked Questions

O modo headless executa o Chrome ou Chromium sem uma interface gráfica visível, consumindo menos recursos e funcionando mais rápido — ideal para CI/CD, scraping e automação em produção. O modo com interface gráfica (headless: false) abre uma janela visível do navegador com acesso completo ao DevTools, sendo mais indicado para depuração visual e testes interativos.

Isso foi útil? Compartilhe →

Escrito por

Vasiliy Datsenko

Head of Customer Support

Vasiliy Datsenko é Head of Customer Support na Latenode e um escritor de automação focado em produto. Seu trabalho conecta conversas com clientes, pesquisa de automação de fluxos de trabalho, casos de uso de IA e educação prática sobre produtos para equipes que tentam automatizar processos de negócios reais.

Perfil do autor →

Verificado por

Oleg Zankov

CEO da Latenode, Especialista em No-code

Com uma filosofia enraizada em inovação, resolução de problemas e experiência do usuário, estou focado em capacitar equipes a criar integrações personalizadas e automatizar fluxos de trabalho com facilidade e eficiência. Trazendo uma vasta experiência em desenvolvimento de negócios, empreendedorismo tecnológico e desenvolvimento de software, reconheci a necessidade de uma solução de integração mais acessível, escalável e adaptável. Assim, nasceu a Latenode.com. Com nossa plataforma, as empresas podem aproveitar o poder da tecnologia sem a necessidade de conhecimentos extensos em programação. Apaixonado por promover um futuro onde a tecnologia nos serve, e não o contrário, minha missão é tornar processos complexos simples. Acredito em democratizar a tecnologia e equipar as equipes com as ferramentas para inovar, crescer e ter sucesso em um mundo cada vez mais digital.

Perfil do autor →

Continue lendo