Headless Chrome 是在无头环境中运行 Chrome 的一种方式,即在没有 chrome 的情况下运行 Chrome。恩?没有 chrome 还怎么运行,这里有点绕,没有 chrome 是指不用真的打开一个浏览器,而是在命令行中运行命令,并模拟 Chrome 加载网页。这种方式在开发中很是方便。
版本要求
Chrome 59 版本以上才支持这个功能,如果你不知道当前客户端的版本,打开一个浏览器并打开 chrome://version
即可,如果版本过低,先升级下吧。
运行命令
在电脑中安装的 Chrome 客户端是并没有在环境变量中的,修改 ~/.bash_profile
1
2
3alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"
alias chromium="/Applications/Chromium.app/Contents/MacOS/Chromium"
随后执行 source ~/.bash_profile
使变量生效,并在终端中输入 chrome
可以打开一个浏览器,这样环境变量就生效了。
使用 headless
打印 Dom
参数 --dump-dom
可以将 document.body.innerHTML
打印到标准输出中1
chrome --headless --disable-gpu --dump-dom https://wxnacy.com
--headless
即为使用 headless 模式打开 chrome--disable-gpu
如果在 Windows 中需要使用该参数
输出 PDF
将网页输出到名为 output.pdf
的文件中1
chrome --headless --disable-gpu --print-to-pdf https://wxnacy.com
截图
将网页截图并命名为 screenshot.png
保存到当前目录中1
chrome --headless --disable-gpu --screenshot https://wxnacy.com
设定打开多大的模拟浏览器在加载页面1
chrome --headless --disable-gpu --screenshot --window-size=1280,1696 https://wxnacy.com
REPL 模式 (read-eval-print loop)
该模式会进入一个 Javascript 环境,并可以通过输入 Javascript 指令来分析 Dom 元素1
2
3
4wxnacy@bogon ~/Documents> chrome --headless --disable-gpu --repl https://wxnacy.com
location.hre[0212/160208.469737:INFO:headless_shell.cc(398)] Type a Javascript expression to evaluate or "quit" to exit.
>>> document.title
{"result":{"type":"string","value":"wxnacy 博客"}}