Chrome 无头模式命令行参考文档

Mathias Bynens
Mathias Bynens
Peter Kvitek
Peter Kvitek

以下命令行标志可在无头模式和无头 shell 中使用。

--dump-dom

--dump-dom 标志会将目标网页的序列化 DOM 打印到标准输出。 例如:

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

这与打印 HTML 源代码不同,后者可以使用 curl 来实现。为了向您提供 --dump-dom 的输出,Chrome 首先将 HTML 代码解析为 DOM,执行任何可能会更改 DOM 的 <script>,然后将该 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 标志会将目标网页保存为当前工作目录中名为 output.pdf 的 PDF 文件。例如:

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

您可以选择添加 --no-pdf-header-footer 标志,以省略打印页眉(包含当前日期和时间)和页脚(包含网址和页码)。

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 在打印 PDF 之前最多等待 5 秒。因此,此流程最多需要 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

必须启用 --allow-chrome-scheme-url 标志才能访问 chrome:// 网址。此标志从 Chrome 123 开始提供。示例如下:

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