Referência da linha de comando do Chrome Headless

Peter Kvitek
Peter Kvitek

As flags de linha de comando a seguir estão disponíveis no modo sem comando e no shell sem comando.

--dump-dom

A flag --dump-dom imprime o DOM serializado da página de destino em stdout. Exemplo:

chrome --headless --dump-dom https://developer.chrome.com/

Isso é diferente de imprimir o código-fonte HTML, o que você pode fazer com curl. Para mostrar a saída de --dump-dom, o Chrome primeiro analisa o código HTML em um DOM, executa qualquer <script> que possa alterar o DOM e, em seguida, transforma esse DOM de volta em uma string HTML serializada.

--screenshot

A flag --screenshot faz uma captura de tela da página de destino e a salva como screenshot.png no diretório de trabalho atual. Isso é especialmente útil em combinação com a flag --window-size.

Exemplo:

chrome --headless --screenshot --window-size=412,892 https://developer.chrome.com/

--print-to-pdf

A flag --print-to-pdf salva a página de destino como um PDF chamado output.pdf no diretório de trabalho atual. Exemplo:

chrome --headless --print-to-pdf https://developer.chrome.com/

Opcionalmente, você pode adicionar a flag --no-pdf-header-footer para omitir o cabeçalho de impressão (com a data e hora atuais) e o rodapé (com o URL e o número da página).

chrome --headless --print-to-pdf --no-pdf-header-footer https://developer.chrome.com/

--timeout

A flag --timeout define o tempo máximo de espera (em milissegundos) após o qual o conteúdo da página é capturado por --dump-dom, --screenshot e --print-to-pdf, mesmo que a página ainda esteja carregando.

chrome --headless --print-to-pdf --timeout=5000 https://developer.chrome.com/

A flag --timeout=5000 informa ao Chrome para aguardar até 5 segundos antes de imprimir o PDF. Portanto, esse processo leva no máximo 5 segundos para ser executado.

--virtual-time-budget

O --virtual-time-budget funciona como um "avanço rápido" para qualquer código dependente do tempo (por exemplo, setTimeout/setInterval). Ele força o navegador a executar qualquer código da página o mais rápido possível, fazendo com que a página acredite que o tempo realmente passa.

Para ilustrar o uso, considere esta demonstração, que incrementa, registra e mostra um contador a cada segundo usando setTimeout(fn, 1000). Confira o código relevante:

<output>0</output>
<script>
  const element = document.querySelector('output');
  let counter = 0;
  setInterval(() => {
    counter++;
    console.log(counter);
    element.textContent = counter;
  }, 1_000);
</script>

Após um segundo, a página contém "1"; após dois segundos, "2" e assim por diante. Veja como capturar o estado da página após 42 segundos e salvá-lo como um PDF:

chrome --headless --print-to-pdf --virtual-time-budget=42000 https://mathiasbynens.be/demo/time

--allow-chrome-scheme-url

A flag --allow-chrome-scheme-url é necessária para acessar URLs chrome://. Essa flag está disponível no Chrome 123. Exemplo:

chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu