无头模式现在是 Google Chrome 59 的标准配置,所以我打算试用一下。

大家好,
我是Mandai,Wild团队负责开发工作的成员。
Google Chrome 59 版本引入了无头模式。
此前,比较知名的无头浏览器包括 PhantomJS 和 Selenium(我个人也用过 Watir,参见 无头浏览器列表
这些都需要进行各种环境配置,但 Google Chrome 59 只需安装即可搭建无头环境!所以我决定试一试。
从版本 59 开始,它与 Windows 不兼容,因此我们已确认它在 CentOS 7 上运行。
更新谷歌浏览器
如果你是通过 yum 安装的,那么更新就很容易。
sudo yum -y upgrade google-chrome-stable
如果尚未安装,页面下载 rpm 软件包
Chrome 的软件源将自动添加,因此以后可以使用 yum 命令进行更新。
我们来运行一下 DOM 检查。
通过谷歌浏览Beyond 的主页让我们尝试
google-chrome --headless --disable-gpu --dump-dom https://beyondjapan.com<body id="index" style=""> ...
通过运行带有“--dump-dom”选项的程序,我能够获取网站的 DOM。
我们来试试运行一下~截图~
接下来,我试试截屏。
google-chrome --headless --disable-gpu --screenshot --window-size=1280,1440 https://beyondjapan.com [0608/054855.748933:INFO:headless_shell.cc(436)] 已写入文件 screenshot.png。.
截屏时,如果不指定浏览器显示大小,则只能截取很小的区域,因此需要使用“--window-size=[width],[height]”选项设置屏幕大小。
要通过指定文件名来保存文件,
google-chrome --headless --disable-gpu --screenshot=top.png --window-size=1280,1440 https://beyondjapan.com [0608/055147.536344:INFO:headless_shell.cc(436)] 已写入文件 top.png。.
将文件名作为“--screenshot”选项的参数指定。
我们来试试运行一下~PDF转换~
接下来,尝试将网站转换为 PDF 格式。
google-chrome --headless --disable-gpu --print-to-pdf https://beyondjapan.com [0608/033512.266562:INFO:headless_shell.cc(436)] 已写入文件 output.pdf。.
输出的 PDF 文件名为 output.pdf。
检查内容后发现,输出的 PDF 文件完美地复刻了网站的布局。
虽然这并不算特别罕见,但网站固定在顶部的页眉会显示在每一页上,遮挡住后续页面的顶部。
我认为这是一个相当普遍的问题,所以了解一下很有必要。
另外,如果您使用此命令将多个页面转换为 PDF,它们将被覆盖。
google-chrome --headless --disable-gpu --print-to-pdf=top.pdf https://beyondjapan.com [0608/033723.196640:INFO:headless_shell.cc(436)] 已写入文件 top.pdf。.
通过将文件名作为“--print-to-pdf”选项的参数,您可以将 PDF 文件保存为不同的名称。
概括
即使您只是偶尔使用 Google Chrome,它也会自动更新到最新版本,但我认为这次更新可能会产生相当大的影响,所以我决定在这里介绍一下。
实际上,可以通过 DevTools 协议,使用 Node.js 控制以无头模式运行的 Google Chrome,我认为这让操作更加便捷,也便于进行更深入的探索。我
以后会专门写一篇文章来介绍这方面的内容。
今天是世界摇滚日(第69届),所以我想要做一些摇滚主题的东西,但效果不太好。
附录:我写了一篇相关的文章,名为[使用无头谷歌浏览器和Node.js | Beyond Inc.](https://beyondjapan.com/blog/2017/07/headless-chrome-with-nodejs)。
附录 2:我还写了一篇相关的文章,名为[我尝试使用 Google Chrome 的无头模式,因为它似乎可以进行详细的外部监控 | Beyond Inc.](https://beyondjapan.com/blog/2017/07/headless-chrome-networks)。
就这样。
0
