网站搜索

什么是无头 Chrome,以及为什么有人会想要使用无头浏览器?


摘要

  • 无头 Chrome 在没有图形界面的情况下运行,加载网页更快,并且使用的资源远少于普通模式。
  • 使用脚本(Playwright/Selenium)自动化抓取、监控、自动填写、提醒或批量任务。
  • 开发者使用无头 Chrome 进行精确的性能测试和批量页面指标分析。

谷歌浏览器不仅仅可以用来浏览网站和运行浏览器扩展。还有一个版本的 Chrome 可以自动处理枯燥的任务,为你节省数小时的辛苦工作。

是什么让浏览器无头?

当你启动浏览器时,首先看到的是一个加载网页内容的窗口。这就是我们所说的图形用户界面(GUI),但实际上有一些操作可以在没有GUI的情况下在浏览器中完成。不显示可视界面的浏览器被称为“无头”浏览器。

你怎么控制一个没有图形界面的浏览器呢?你只需要一个键盘和命令行控制台。你可以执行不同的浏览器命令并完成一些有用的操作。如果你已经安装了常规的谷歌浏览器,你甚至不需要下载其他任何东西。你只需打开终端并以无头模式运行 Chrome 即可。

无头浏览器的特别之处在于它的资源使用情况。由于无头模式下的 Chrome 不需要渲染用户界面或网页内容,因此速度快得多。

大多数人用它来进行网页抓取

想象一下,如果有人让你存档Doom Wiki,或者仅仅存档Doom Wiki中的图片。你可以手动打开每个页面并保存图片或整个页面为HTML。Doom Wiki大约有20,000个页面。你将不得不重复这些步骤几千次,抓取整个网站将需要一个多月的时间。

现在,如果你使用像无头 Chrome 这样的无头浏览器,整个过程可以自动化,并在不到 10 分钟内完成。这个过程被称为网页抓取,因为你是在“抓取”网站上的数据并将其保存以供离线使用。

默认情况下,您可以使用这样的命令以无头模式运行谷歌浏览器,并将《毁灭战士》维基首页保存到文本文件中。

谷歌浏览器中没有内置的单一功能可以自动“抓取”并保存网站上的所有页面。要真正抓取网站上的所有页面,你有两个选择。

  1. 你可以使用 Linux 或 Windows 子系统 Linux (WSL) 来编写并运行 Bash 脚本,该脚本会自动访问每个网站页面并保存它们。
  2. 你可以使用专门的网站自动化库,如 Playwright 或 Selenium。例如,你可以使用 Playwright(它使用无头 Chrome)编写一个 Python 脚本来自动化网页抓取。

现代网站不会一次性加载所有内容。想想 Instagram 或 YouTube,它们会根据你的偏好动态加载内容。通常你需要与网站互动,比如点击“加载更多”按钮或完成验证码。一个简单的 Bash 脚本可以很好地抓取静态文本页面,但对于抓取动态网站,使用专门的库更为合适。




这是一个使用 Playwright 的 Python 脚本,可以自动抓取 Doom Wiki 上的前 100 篇文章。

你可以用无头 Chrome 自动化操作

自动抓取网页是使用无头 Chrome 可以自动化的众多任务之一。你可以自动化监控股票价格,或者从多个来源查找招聘信息或新闻。

无头 Chrome 可以运行一个脚本,从 Indeed 或 LinkedIn 等平台抓取数千个相关的职位列表。你可以按小时跟踪不同竞争对手之间的价格比较。你可以将来自不同新闻来源的新闻文章聚合到本地数据库中。与其抓取整个网站,你也可以抓取特定的 Twitter 话题标签或 subreddit。

你甚至可以根据提取的数据运行自动操作。例如,你可以运行一个自动填写调查问卷或工作申请的脚本。你也可以运行一个监控网站更新的脚本,比如促销或票价,并向你发送提醒,甚至将目标商品加入购物车。

无需打开浏览器即可截图

无需打开浏览器即可同时保存多个网页。

chrome --headless --print-to-pdf=output.pdf https://doom.fandom.com

使用一个简单的命令,Headless Chrome 可以生成网页的 PDF。这就像你在普通 Chrome 浏览器中使用“另存为 PDF”按钮一样,但更强大。首先,它加载网页的速度快得多,并且会自动保存为 PDF 或 PNG。此外,如果你将所有目标 URL 放入一个文本文件中并对该文本文件运行相同的命令,它还可以批量处理网页。

你可能使用过互联网档案馆或时光机来访问旧版本网站的存档。他们使用类似的脚本,通过无头浏览器实例来存档这些网站。

开发者用它来检查网站性能并测试功能

如果网站加载时间过长,人们可能会在网站完全加载之前就离开。此外,如果网站加载缓慢,谷歌也会降低该网站的排名。因此,网页开发者会投入大量时间和精力来提高网站的性能。他们可以在常规浏览器中加载网站,从而“感受”网站的加载速度。然而,当需要测试成千上万个网页时,通常的方法并不适用,而且也不够精确。

在无头模式下使用 Chrome 命令,开发者可以获得精确的性能指标,例如页面平均加载时间(以秒为单位)。他们还可以按照特定的网络限制规范加载页面。此外,它还可以确保诸如浏览器扩展程序之类的因素不会干扰测试。


网络自动化是一种超能力,因为它可以帮你节省数小时的繁琐工作。无头浏览器是实现网络自动化的关键。你的浏览器可以在你睡觉时抓取并存档整个网站,或者在商店对你关心的产品提供折扣时立即发送提醒给你。

相关文章