Справочник по командной строке Chrome Headless

Петер Квитек
Peter Kvitek

В режиме без графического интерфейса и в оболочке без графического интерфейса доступны следующие флаги командной строки.

--dump-dom

Флаг --dump-dom выводит сериализованный DOM целевой страницы в стандартный поток вывода. Например:

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

Это отличается от вывода исходного HTML-кода, который можно получить с помощью curl . Чтобы получить вывод команды --dump-dom , Chrome сначала анализирует HTML-код, преобразуя его в DOM, выполняет любой <script> , который может изменить DOM, а затем преобразует этот DOM обратно в сериализованную строку HTML.

--screenshot

Флаг --screenshot делает снимок экрана целевой страницы и сохраняет его как screenshot.png в текущем рабочем каталоге. Это особенно полезно в сочетании с флагом --window-size .

Например:

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

--print-to-pdf

Флаг --print-to-pdf сохраняет целевую страницу в формате PDF с именем output.pdf в текущем рабочем каталоге. Например:

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

При желании можно добавить флаг --no-pdf-header-footer чтобы опустить заголовок (с текущей датой и временем) и нижний колонтитул (с URL-адресом и номером страницы) для печати.

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

--timeout

Флаг --timeout определяет максимальное время ожидания (в миллисекундах), по истечении которого содержимое страницы будет сохранено с помощью параметров --dump-dom , --screenshot и --print-to-pdf даже если страница еще загружается.

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

Флаг --timeout=5000 указывает Chrome подождать до 5 секунд перед печатью PDF-файла. Таким образом, этот процесс занимает не более 5 секунд.

--virtual-time-budget

Параметр --virtual-time-budget действует как "ускоренная перемотка" для любого кода, зависящего от времени (например, setTimeout / setInterval ). Он заставляет браузер выполнять любой код страницы как можно быстрее, создавая у страницы впечатление, что время действительно идет.

Для иллюстрации его использования рассмотрим этот пример, который увеличивает, записывает и отображает счетчик каждую секунду с помощью setTimeout(fn, 1000) . Вот соответствующий код:

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

Через одну секунду на странице отобразится «1»; через две секунды — «2» и так далее. Вот как можно зафиксировать состояние страницы через 42 секунды и сохранить его в формате PDF:

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

--allow-chrome-scheme-url

Для доступа к URL-адресам с префиксом chrome:// необходим флаг --allow-chrome-scheme-url . Этот флаг доступен начиная с Chrome 123. Вот пример:

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