Riferimento riga di comando di Chrome Headless

Peter Kvitek
Peter Kvitek

I seguenti flag della riga di comando sono disponibili in modalità headless e nella shell headless.

--dump-dom

Il flag --dump-dom stampa il DOM serializzato della pagina di destinazione su stdout. Ad esempio:

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

Questo è diverso dalla stampa del codice sorgente HTML, che potresti fare con curl. Per fornirti l'output di --dump-dom, Chrome analizza prima il codice HTML in un DOM, esegue qualsiasi <script> che potrebbe modificare il DOM, quindi trasforma di nuovo il DOM in una stringa HTML serializzata.

--screenshot

Il flag --screenshot acquisisce uno screenshot della pagina di destinazione e lo salva come screenshot.png nella directory di lavoro corrente. Questa opzione è particolarmente utile in combinazione con il flag --window-size.

Ad esempio:

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

--print-to-pdf

Il flag --print-to-pdf salva la pagina di destinazione come PDF denominato output.pdf nella directory di lavoro corrente. Ad esempio:

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

Facoltativamente, puoi aggiungere il flag --no-pdf-header-footer per omettere l'intestazione di stampa (con la data e l'ora correnti) e il piè di pagina (con l'URL e il numero di pagina).

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

--timeout

Il flag --timeout definisce il tempo di attesa massimo (in millisecondi) dopo il quale i contenuti della pagina vengono acquisiti da --dump-dom, --screenshot e --print-to-pdf, anche se la pagina è ancora in fase di caricamento.

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

Il flag --timeout=5000 indica a Chrome di attendere fino a 5 secondi prima di stampare il PDF. Pertanto, l'esecuzione di questo processo richiede al massimo 5 secondi.

--virtual-time-budget

Il flag --virtual-time-budget funge da "avanzamento rapido" per qualsiasi codice dipendente dal tempo (ad esempio, setTimeout/setInterval). Forza il browser a eseguire il codice della pagina il più rapidamente possibile, facendo credere alla pagina che il tempo passi effettivamente.

Per illustrarne l'utilizzo, considera questa demo, che incrementa, registra e visualizza un contatore ogni secondo utilizzando setTimeout(fn, 1000). Ecco il codice pertinente:

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

Dopo un secondo, la pagina contiene "1", dopo due secondi "2" e così via. Ecco come acquisire lo stato della pagina dopo 42 secondi e salvarlo come PDF:

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

--allow-chrome-scheme-url

Il flag --allow-chrome-scheme-url è necessario per accedere agli URL chrome://. Questo flag è disponibile a partire da Chrome 123. Ad esempio:

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