Configurando o Modo Headless no Puppeteer: Equilibrando Velocidade e Funcionalidade
Explore as diferenças entre os modos headless e headful no Puppeteer para otimizar a automação, a depuração e o desempenho dos seus projetos.

Marionetista permite automatizar Chrome or Chromium navegadores e escolher entre sem cabeça or cabeça cheia mode pode impactar significativamente o desempenho e a depuração. Aqui está uma rápida análise:
- Modo sem cabeça: Mais rápido, usa menos recursos, ideal para tarefas de automação e produção, como web scraping ou testes.
- Modo Headful: Interface visual do navegador, melhor para depuração e desenvolvimento.
Comparação Rápida
| Característica | Modo sem cabeça | Modo Headful |
|---|---|---|
| Interface Visual | Sem interface gráfica | GUI completa |
| Uso de recursos | Abaixe | Mais alto |
| velocidade de execução | Mais rápido | Padrão |
| Pegada de memória | Menor | Maior |
| Facilidade de depuração | Baseado em console | Feedback visual |
Novo Modo Headless combina o desempenho do headless com ferramentas de depuração aprimoradas, tornando-o uma escolha equilibrada para muitos fluxos de trabalho.
Escolha:
- Padrão sem cabeça para eficiência em CI/CD ou produção.
- Novo sem cabeça para depuração avançada e recursos modernos.
- Modo Headful para depuração visual e teste de elementos interativos.
Este guia explica como configurar cada modo, seus benefícios e quando usá-los.
Marionetista - Modos sem cabeça e com cabeça
1. Modo Headless Padrão
O modo headless padrão é a configuração padrão do Puppeteer, executando o Chrome ou Chromium sem sua interface gráfica de usuário (GUI). Ao pular a GUI, ele usa menos memória, processa páginas mais rápido e reduz o uso da CPU.
Características principais
O modo headless padrão oferece suporte a uma ampla variedade de operações do navegador, incluindo:
| Característica | O que faz |
|---|---|
| Simulação de usuário | Lida com cliques, entradas de formulários, navegação |
| Manipulação de Conteúdo | Injeta JavaScript, modifica o DOM |
| Geração de ativos | Captura imagens de tela, cria PDFs |
| Rede de Monitorização | Rastreia solicitações e respostas |
| Automação de página | Executa scripts, extrai conteúdo |
Como usá-lo
Você pode iniciar o modo headless com o seguinte código:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>(); <span class="hljs-comment">// Default headless</span>
<span class="hljs-comment">// OR</span>
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> }); <span class="hljs-comment">// Explicit headless</span>
Por que é útil
O modo sem cabeça é ideal para tarefas como web scraping, testes automatizados e criação de capturas de tela ou PDFs. Por exemplo, Optimizely reduziu seu ciclo de testes de 24 horas para apenas uma hora, aproveitando os testes de navegador sem interface na nuvem .
Desafios para manter em mente
Embora seja eficiente, o modo headless apresenta alguns obstáculos:
- Certos 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 extra.
Para melhorar a confiabilidade e evitar a detecção, você pode:
- Defina uma sequência de caracteres de agente de usuário personalizada.
- Adicione atrasos entre ações automatizadas.
- Use mecanismos fortes de tratamento de erros.
- Certifique-se de que a página esteja totalmente carregada antes de extrair os dados.
Para uma eficiência ainda maior em tarefas específicas do lado do servidor, você pode considerar o chrome-headless-shell variante. Esta opção leve é perfeita para fluxos de trabalho focados em automação. Inicie-a com:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-string">'shell'</span> });
Este modo é especialmente eficaz para operações do lado do servidor, oferecendo desempenho otimizado.
A seguir, vamos nos aprofundar no novo modo headless do Chrome e como ele leva o desempenho ao próximo nível.
2. ChromeNovo modo sem cabeça do
O Chrome introduziu um modo headless atualizado que leva a automação do navegador a um novo nível. Diferentemente da versão mais antiga, esse modo usa a mesma base de código do navegador Chrome regular, garantindo melhor 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 suaves.
Principais funcionalidades
O novo modo headless opera criando janelas de plataforma sem exibi-las. Isso permite que você use todos os recursos do navegador enquanto ainda aproveita os benefícios de desempenho da operação headless. Veja como você pode usá-lo em seu código:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-string">'new'</span> }); <span class="hljs-comment">// Explicitly use new headless mode</span>
<span class="hljs-comment">// OR</span>
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> }); <span class="hljs-comment">// Defaults to new headless mode</span>
Ferramentas de depuração
Este modo também inclui diversas ferramentas para facilitar a depuração:
| Característica | Propósito |
|---|---|
| Inspeção visual | Visualizar comportamento do navegador (definir headless: false) |
| Tempo de operação | Use a opção câmera lenta para atrasar as ações. |
| Monitoramento de console | Capturar saída do console para análise |
| Análise de protocolo | Habilitar registro de protocolo do DevTools |
| Diagnóstico do navegador | Use dumpio: true para obter registros detalhados. |
Solução de problemas avançada
1. Usando DevTools para depuração
Você pode habilitar o DevTools integrado do Chrome para inspecionar o comportamento do navegador em detalhes:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">headless</span>: <span class="hljs-string">'new'</span>,
<span class="hljs-attr">devtools</span>: <span class="hljs-literal">true</span>
});
2. Monitoramento de desempenho e rastreamento de erros
A base de código compartilhada permite criação precisa de perfil de desempenho e resolução de erros. Use esta configuração para monitorar e depurar operações do lado do cliente e do lado do servidor:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">headless</span>: <span class="hljs-string">'new'</span>,
<span class="hljs-attr">devtools</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">slowMo</span>: <span class="hljs-number">100</span>,
<span class="hljs-attr">args</span>: [<span class="hljs-string">'--enable-logging'</span>, <span class="hljs-string">'--v=1'</span>]
});
Orientação sobre migração
Embora o modo headless mais antigo (headless: 'old') ainda estiver disponível, é uma boa ideia mudar para a nova versão. O modo legado será eventualmente eliminado, então 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 fornece comportamento consistente em vários ambientes. Essa consistência reduz problemas específicos do ambiente e aumenta a confiabilidade de fluxos de trabalho automatizados.
sbb-itb-23997f1
3. Modo de exibição do navegador
O modo de exibição do navegador abre uma janela visível do navegador 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:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">headless</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">args</span>: [<span class="hljs-string">'--enable-gpu-rasterization'</span>],
<span class="hljs-attr">defaultViewport</span>: <span class="hljs-literal">null</span>
});
Com um navegador visível, a aceleração de hardware da GPU pode ser habilitada, o que melhora o desempenho em sites com muitas imagens. Além disso, esse modo reduz as chances de detecção de bots imitando o comportamento padrão do navegador.
Recursos de depuração aprimorados
O modo Display é ideal para solução de problemas, oferecendo feedback visual imediato. Aqui está uma configuração de depuração útil:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">headless</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">devtools</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">slowMo</span>: <span class="hljs-number">250</span>,
<span class="hljs-attr">defaultViewport</span>: {
<span class="hljs-attr">width</span>: <span class="hljs-number">1920</span>,
<span class="hljs-attr">height</span>: <span class="hljs-number">1080</span>
}
});
Esta configuração abre o DevTools automaticamente, introduz um atraso de 250 ms para melhor inspeção e usa um tamanho de viewport padrão para testes consistentes.
Cenários de uso
| Cenário | Benefícios | Dicas de configuração |
|---|---|---|
| Depuração Visual | Veja as interações em tempo real | Ative as Ferramentas de Desenvolvedor e use o modo lento. |
| Teste de GUI | Observe os comportamentos da interface do usuário | Defina um tamanho de viewport fixo |
| Fluxos de trabalho complexos | Verifique interações detalhadas | Combine com o registro do console |
Dicas de otimização
Para manter tudo funcionando perfeitamente no modo de exibição:
- Gerenciar recursos: Feche abas e janelas não utilizadas para economizar memória.
- Monitore o desempenho: Habilite o registro do navegador para rastrear métricas de desempenho.
- Usar aceleração de GPU: Ative os recursos da GPU para tarefas que envolvam 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 o headless definido como
false." - Documentação do Puppeteer
Configuração Avançada
Para tarefas mais exigentes, você pode aprimorar o modo de exibição com configurações adicionais:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">headless</span>: <span class="hljs-literal">false</span>,
<span class="hljs-attr">args</span>: [
<span class="hljs-string">'--enable-gpu-rasterization'</span>,
<span class="hljs-string">'--window-size=1920,1080'</span>,
<span class="hljs-string">'--disable-web-security'</span>
],
<span class="hljs-attr">dumpio</span>: <span class="hljs-literal">true</span>
});
Esta configuração melhora a visibilidade, permite registro detalhado e permite acesso entre origens. Esses ajustes garantem uma experiência mais suave e estabelecem as bases para comparar desempenho e funcionalidade no próximo guia.
Guia de comparação de modos
Ao configurar o Puppeteer, cada modo oferece uma mistura diferente de velocidade, uso de recursos e capacidades de depuração. Escolher o modo certo depende de suas necessidades específicas.
Aqui está uma análise dos modos:
- Modo Headless Padrão
Este modo é construído para eficiência e inicialização rápida, tornando-o perfeito para testes automatizados ou pipelines de CI/CD. Ele usa recursos mínimos do sistema e fornece saída de depuração básica por meio do console. - Novo Modo Headless
Combina recursos de depuração fortes com desempenho próximo ao Modo Headless Padrão. É uma boa escolha para tarefas que exigem uma mistura de velocidade e funcionalidade. - Modo de exibição do navegador
Este modo dá a você acesso total ao Chrome DevTools, oferecendo feedback visual em tempo real. É ideal para depuração detalhada ou análise de fluxos de trabalho complexos. Embora exija mais recursos do sistema, ele suporta tarefas que se beneficiam da aceleração de hardware e controles avançados de rede.
O marionetista aproveita o Protocolo Chrome DevTools para controle preciso do navegador, incluindo interceptação de rede e execução de JavaScript, permitindo que você ajuste as configurações.
Por exemplo, veja como você pode otimizar o Novo Modo Headless:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">headless</span>: <span class="hljs-string">'new'</span>,
<span class="hljs-attr">args</span>: [
<span class="hljs-string">'--disable-gpu'</span>,
<span class="hljs-string">'--no-sandbox'</span>,
<span class="hljs-string">'--disable-setuid-sandbox'</span>
]
});
Use o Headless Padrão para automação rápida e com uso eficiente de recursos, o Exibição do Navegador para depuração detalhada ou o Novo Headless quando precisar de um equilíbrio entre 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. . Aqui está uma análise para ajudar você a decidir:
Modo Headless Padrão é ideal se você precisa:
- Desempenho máximo usando o mínimo de recursos
- Sem depuração visual ou renderização do navegador
- Uma opção confiável para ambientes CI/CD
Novo Modo Headless funciona melhor quando você precisa:
- Ferramentas avançadas de depuração sem sacrificar o desempenho
- Compatibilidade com recursos modernos da web
- Um equilíbrio entre o uso de recursos e a funcionalidade
- Acesso à maioria dos recursos do Chrome DevTools Protocol
Modo de exibição do navegador é adequado para cenários que envolvem:
- Necessidades detalhadas de depuração
- Confirmação visual dos fluxos de trabalho de automação
- Desenvolvimento e teste de elementos interativos
- O uso da aceleração de hardware
Casos de uso comuns e recomendações:
| Tipo de Projeto | Modo Recomendado | Vantagem Chave |
|---|---|---|
| Teste de pipeline de CI/CD | Padrão sem cabeça | Execução rápida com uso mínimo de recursos |
| Desenvolvimento e Depuração | Exibição do navegador | Feedback visual completo e DevTools |
| Automação de Produção | Novo sem cabeça | Uma mistura sólida de recursos e desempenho |
A API do Puppeteer facilita a alternância entre esses modos conforme seu projeto evolui.
Artigos Relacionados



