使用无头模式

bt365最快线路检测 📅 2025-08-21 06:43:11 👤 admin 👁️ 7687 ❤️ 887
使用无头模式

Mathias Bynens

Peter Kvitek

借助 Chrome 无头模式,您可以在无人值守的环境中运行浏览器,而无需任何可见的界面。从本质上讲,您无需 chrome 即可运行 Chrome。

无头模式是通过 Puppeteer 或 ChromeDriver 等项目进行浏览器自动化操作的热门选择。

注意: 在 Chrome 112 中,我们更新了无头模式,以便 Chrome 创建但不显示任何平台窗口。现有和未来的所有其他功能均可无限制使用。

使用无头模式

如需使用无头模式,请传递 --headless 命令行标志:

chrome --headless

使用旧版无头模式

以前,无头模式是一个单独的备选浏览器实现,恰好与同一 Chrome 二进制文件一起分发。它不会共享 //chrome 中的任何 Chrome 浏览器代码。

Chrome 现在采用了统一的无头模式和有头模式。

目前,旧版无头模式仍可供使用,但存在以下限制:

chrome --headless=old

注意 :我们打算从 Chrome 二进制文件中移除旧版无头内容。为准备移除此功能,我们已将旧版无头模式作为名为 chrome-headless-shell 的独立二进制文件提供。

在 Puppeteer 中

如需在 Puppeteer 中使用无头模式,请执行以下操作:

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({

headless: 'true', // (default) enables Headless

// `headless: 'old'` enables old Headless

// `headless: false` enables "headful" mode

});

const page = await browser.newPage();

await page.goto('https://developer.chrome.com/');

// …

await browser.close();

在 Selenium-WebDriver 中

如需在 Selenium-WebDriver 中使用无头模式,请执行以下操作:

const driver = await env

.builder()

.setChromeOptions(options.addArguments('--headless'))

.build();

await driver.get('https://developer.chrome.com/');

// …

await driver.quit();

如需了解详情,包括使用其他语言绑定的示例,请参阅 Selenium 团队的博文。

命令行标志

以下命令行标志适用于无头模式。

--dump-dom

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

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

这与使用 curl 输出 HTML 源代码不同。为了提供 --dump-dom 的输出,Chrome 会先将 HTML 代码解析为 DOM,执行任何可能会更改 DOM 的

一秒后,页面包含“1”;两秒后,页面包含“2”;依此类推。您可以按以下方式捕获 42 秒后页面的状态并将其另存为 PDF 文件:

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

--allow-chrome-scheme-url

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

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

调试

由于 Chrome 在无头模式下实际上是不可见的,因此解决问题可能听起来很棘手。您可以使用与有头 Chrome 非常类似的方式调试无头 Chrome。

使用 --remote-debugging-port 命令行标志在无头模式下启动 Chrome。

chrome --headless --remote-debugging-port=0 https://developer.chrome.com/

这会将唯一的 WebSocket 网址输出到标准输出,例如:

DevTools listening on ws://127.0.0.1:60926/devtools/browser/b4bd6eaa-b7c8-4319-8212-225097472fd9

然后,在有界面 Chrome 实例中,我们可以使用 Chrome 开发者工具远程调试功能连接到无头目标并对其进行检查。

前往 chrome://inspect,然后点击配置…按钮。

输入 WebSocket 网址中的 IP 地址和端口号。

在前面的示例中,我输入了 127.0.0.1:60926。

点击完成。您应该会看到“远程目标”窗口,其中列出了该目标的所有标签页和其他目标。

点击检查可访问 Chrome 开发者工具并检查远程无头目标,包括网页的实时视图。

反馈

我们期待收到您对无头模式的反馈。如果您遇到任何问题,请提交 bug。

相关推荐

学爵士舞好还是韩舞好 哪个更适合女孩
bt365最快线路检测

学爵士舞好还是韩舞好 哪个更适合女孩

📅 07-26 👁️ 8918
Outlook 网页中的回复设置
bat365入口

Outlook 网页中的回复设置

📅 07-19 👁️ 1582
廛居的解释及意思
bt365最快线路检测

廛居的解释及意思

📅 07-16 👁️ 553