跳至内容

无头浏览器

什么是无头浏览器,它如何用于自动截图,以及常见的问题。

无头浏览器是一种没有可见窗口、由代码控制的 Web 浏览器。它使用与普通浏览器相同的引擎:解析 HTML、运行 JavaScript、计算布局并渲染像素,只是把像素绘制到屏幕外的缓冲区中。

Chrome 和 Firefox 都有无头模式。程序通过 Chrome DevTools Protocol、WebDriver 和 WebDriver BiDi 等协议控制它们。Puppeteer、Playwright 和 Selenium 等库把这些协议封装成编程 API。

由于不需要在屏幕上绘制任何内容,无头浏览器可以在没有显示器的服务器和 CI 流水线中运行。

无头浏览器的工作原理

  1. 脚本以无头模式启动浏览器。
  2. 打开页面,设置视口尺寸并加载 URL。
  3. 等待某个事件,例如 load 事件或网络空闲。
  4. 执行点击或滚动等操作,然后请求截图或 PDF。
  5. 关闭页面或浏览器。

无头浏览器的使用场景

  • 检查页面和流程的自动化测试。
  • 用于监控和存档的定时截图。
  • 从 HTML 生成 PDF 和社交媒体预览图。
  • 从需要 JavaScript 渲染的页面收集公开数据。

无头截取与有头截取

无头有头(可见窗口)
需要显示器否是
批量处理速度通常更快较慢
调试较难,没有画面可看较容易
被网站识别可能性较高可能性较低

部分网站会识别无头浏览器,返回不同内容或直接拦截。字体和 GPU 功能也可能与桌面浏览器不同,因此同一页面的渲染结果可能略有差异。

常见错误

  • 对持续加载内容的页面在 load 事件时就截取。
  • 忘记设置视口,导致每次截取都使用默认尺寸。
  • 在配置较低的机器上同时运行多个浏览器。
  • 服务器缺少字体,导致文字排版发生变化。

需要反复截取相同的截图?

Temposhot 的 Website Capture 无需编写代码,即可在你的 Mac 上用受管理的本地浏览器加载 URL,Concurrent browsers 可设为 1 到 10 个。参见网站截图自动化。

常见问题

使用无头浏览器需要写代码吗?

Puppeteer 和 Playwright 等库需要写代码。桌面工具和截图服务会把这一层隐藏起来。

无头截图与普通截图完全相同吗?

通常很接近,但字体、GPU 渲染和网站行为可能有所不同。

参考资料

相关资源

总是重复截取相同的截图吗?

Temposhot 可定时截取屏幕、窗口或指定区域,并将结果导出为 PDF、图片、ZIP 或 MP4。免费的网页工具只能处理单张图片。

相关资源

相关术语

全部术语