问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

怎么在 macOS 上安装和使用 Headless Chrome

发布网友 发布时间:2022-04-25 20:15

我来回答

3个回答

懂视网 时间:2022-04-24 01:18

Headless Chrome指在headless模式下运行谷歌浏览器。本质就是不用谷歌运行谷歌!它将由Chromium和Blink渲染引擎提供的所有现代网页平台的特征都转化成了命令行。

它有什么用?

Headless浏览器是一种很好的工具,用于自动化测试和不需要可视化用户界面的服务器。例如,你想在一个网页上运行一些测试,从网页创建一个PDF,或者只是检查浏览器怎样递交URL。

警告:在Mac和Linux上的Chrome 59可以运行Headless模式。支持Windows的会很快提供。

命令行运行Headless Chrome

Chrome 安装(需要带梯子)

  • 下载地址

  • 几个版本的比较

  • Chromium 不是Chrome,但Chrome的内容基本来源于Chromium,这个是开源的版本,小时级别的更新

  • Canary 是试验版,翻译过来就是金丝雀,金丝雀对瓦斯等毒气很敏感,浓度稍高就会停止鸣叫甚至挂掉,金丝雀是瓦斯等毒气检测的土办法,这个场景在《寻龙诀》中黄渤的操作中也能看到。哈哈 扯远了,这个是daily build 版本。

  • Dev 是开发版,weekly build版本

  • Beta 是测试版,monthly build版本

  • Stable 是稳定版,不定期更新,一般也是一个月左右一次

  • 更新频率 Chromium > Chrome Canary > Chrome Dev > Chrome Beta > Chrome Stable

  • Chrome Dev、Chrome Beta 和 Chrome Stable三者只能同时出现一个

  • Chromium 、Chrome Canary 和 剩下的任意一个可共存

  • Windows平台下载下来的可能只是一个在线安装的程序,下载离线版在下载页面的URL里面加参数standalone=1

  • 命令行快捷配置(Mac环境)

    ~/.bashrc 中加入

    alias chrome="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
    alias chrome-canary="/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"

    重新打开终端,我们就可以直接通过 chrome打开稳定版的Chrome,chrome-canary打开试验版的Chrome了。

    命令行启动Chrome

  • 参考官方说明, Headless模式需要Chrome Version >= 59

  • 使用Chrome打开百度首页(带界面),能看到浏览器的打开

  • chrome

  • 使用无界面模式启动Chrome打开百度首页(无界面),但不到浏览器界面打开,但任务栏会有图标

  • chrome --headless

  • 使用无界面模式启动Chrome并将页面转为PDF,可以看到output.pdf的输出

  • chrome --headless --print-to-pdf

  • 使用无界面模式启动Chrome并截图,可以看到screenshot.png的输出

  • chrome --headless --screenshot --window-size=414,736

  • 使用无界面模式启动Chrome并打开交互环境

  • chrome --headless --repl

  • 使用无界面模式启动Chrome,并开启调试Server

  • chrome --headless --remote-debugging-port=9222

  • 参考 Chrome命令行参数列表

  • 命令行操作Headless Chrome

  • 确保已经启动Headless Chrome,并启用了调试Server

  • chrome --headless --remote-debugging-port=9222

  • 安装chrome-remote-interface

  • npm install chrome-remote-interface -g

  • 查看命令说明,这里可以进行各种相关操作

  • "
    $ chrome-remote-interface

    Usage: chrome-remote-interface [options] [command]
    
    Commands:
    
     inspect [options] [<target>] inspect a target (defaults to the first available target)
     list   list all the available targets/tabs
     new [<url>]  create a new target/tab
     activate <id>  activate a target/tab by id
     close <id>  close a target/tab by id
     version  show the browser version
     protocol [options] show the currently available protocol descriptor
    
    Options:
    
     -h, --help  output usage information
     -t, --host <host> HTTP frontend host
     -p, --port <port> HTTP frontend port
     -s, --secure HTTPS/WSS frontend

    "

  • 打开一个新页面

  • chrome-remote-interface new

  • 查看刚打开的页面

  • chrome-remote-interface inspect

  • 查看当前页面的URL

  • >>> Runtime.evaluate({expression:'location.href'})


    可编程方式运行Headless Chrome

    直接通过代码调用命令行启动Chrome 调试Server

    可以通过系统调用的方式直接调用上面的命令行执行方式。这种方式在跨平台的情况下会有一些工作需要做。

    Google出品的Lighthouse 这个网页质量检查工具,有一个组件专门做这事,考虑了各种平台的兼容性问题,源码参考lighthouse-chromelauncher,这个组件现在已经单独独立出来,作为一个单独的NPM组件chrome-launcher,可以直接使用这个在Node平台下调用,其他平台的也可以此为参考。

    const chromeLauncher = require('chrome-launcher');//启用无界面模式并开启远程调试,不同引用版本和方式,调用方式可能有些区别//chromeLauncher.run({chromeLauncher.launch({// port: 9222,chromeFlags: ['--headless']}).then((chrome) => {// 拿到一个调试客户端实例console.log(chrome)chrome.kill();});

    通过客户端的封装组件进行浏览器交互

    实现了ChromeDevTools协议的工具库有很多,chrome-remote-interface是NodeJS的实现。

    Chrome调试Server开启的是WebSocket交互的相关实现,要用编程的方式实现还需要封装一些WebSocket命令发送、结果接收等这一系列操作,这些chrome-remote-interface已经帮我们做了,更多实例可以参考chrome-remote-interface的wiki。

    const chromeLauncher = require('chrome-launcher');const chromeRemoteInterface = require('chrome-remote-interface')//启用无界面模式并开启远程调试,不同引用版本和方式,调用方式可能有些区别//chromeLauncher.run({chromeLauncher.launch({port: 9222,chromeFlags: ['--headless']}).then((launcher) => {chromeRemoteInterface.Version({host:'localhost',port:9222}).then(versionInfo => {console.log(versionInfo)});chromeRemoteInterface({host:'localhost',port:9222}).then((chrome) => {//这里调用ChromeDevToolsProtocol定义的接口const {Network,Page} = chrome;Network.requestWillBeSent((params) => {let {request} = params;let {url} = request;console.log(url)});Promise.all([Network.enable(),Page.enable()
     ]).then(() => {Page.navigate({url:'https://www.baidu.com'})});setTimeout(() => {launcher.kill()},5000);})});

    热心网友 时间:2022-04-23 22:26

    1.打开 Terminal 进入终端状态,默认的提示符应该是 $;
    2.进入 Chrome.app 目录;
    $ cd "/Applications/Google Chrome.app/Contents/MacOS/"
    3.将原先的启动脚本改个名字;
    $ sudo mv "Google Chrome" Google.real
    4.使用管道操作创建新的启动脚本,注意其中加入你所需要的启动参数,这里的例子是启用内置的 Flash;
    $ sudo printf '#!/bin/bash\ncd "/Applications/Google Chrome.app/Contents/MacOS"\n"/Applications/Google Chrome.app/Contents/MacOS/Google.real" --enable-internal-flash "$@"\n' > Google\ Chrome
    5.给新的脚本加上运行权限; 
    $ sudo chmod u+x "Google Chrome"

    热心网友 时间:2022-04-24 03:10

    1.打开 Terminal 进入终端状态,默认的提示符应该是 $;
    2.进入 Chrome.app 目录;

    $ cd "/Applications/Google Chrome.app/Contents/MacOS/"

    3.将原先的启动脚本改个名字;

    $ sudo mv "Google Chrome" Google.real

    4.使用管道操作创建新的启动脚本,注意其中加入你所需要的启动参数,这里的例子是启用内置的 Flash;

    $ sudo printf '#!/bin/bash\ncd "/Applications/Google Chrome.app/Contents/MacOS"\n"/Applications/Google Chrome.app/Contents/MacOS/Google.real" --enable-internal-flash "$@"\n' > Google\ Chrome

    5.给新的脚本加上运行权限; 

    $ sudo chmod u+x "Google Chrome"
    声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
    E-MAIL:11247931@qq.com
    王子变青蛙2演员表 《清乐居 村居》"村居"表示什么 dota 中遇到垃圾队友怎么办 婆婆左手手背肿了三四年了,也不疼也不痒的,有谁知道是什么事吗?_百度... 手背上起了个包 硬的 不疼不痒 应该怎么处理 玩DOTA遇到SB队友怎么办 dota的时候遇到SB队友怎么办? 矿产资源,水资源,生物资源,大气资源有什么不同 手背突然就肿了,不疼也不痒,这是怎 么回事呀? 手背浮肿,不痛不痒的,其他没感到不适?是什么原因 谷歌浏览器添加应用 首付怎么算?月供多少? 有哪些 chrome app 值得推荐 怎么用电脑下载谷歌chrome firefox软件 google chrome是什么软件 首付和月供如何计算 看视频出现Shockwave Flash has crashed 微度乐怎么样放款呢 在windows中,计算机病毒破坏的主要对象是 下载了Google Chrome软件,还是无法使用? 房子首付和月供如何计算 微度乐是什么软件 房子价位7800一平,总共118平.首付和月供怎么算 MT4系统平台哪个最好用? 君赢科技的MT4平台搭建实力怎么样 搭建一个MT4平台真的需要一百多万吗? MT4下载平台大家有什么好的推荐? 目前MT4平台搭建 出租找哪个专业 性价比高最高? 搭建一个mt4平台多少钱,crm 外汇系统 MT4》生活技能怎么选 生活技能选择攻略 如何在chrome里玩转webapps 不能更改安装路径的chrome和流氓软件有什么区别 买房如何计算首付及月供款? 电脑通过谷歌Chrome浏览器提示要访问的网站包含恶意软件怎么解决 电脑chromeplugin是什么软件 Chrome Web App 和扩展到底有什么区别? 如何创建第一个Chrome App 2020年3月上海市全国计算机等级考试报名时间推迟 如何在Chrome中安裝App 2020年上半年上海全国计算机等级考试报名公告 chrome,firefox的主页同时被国外流氓软件篡改,怎么办 2020年9月上海全国计算机等级考试报名办法预测 chrome被修改首页,虽然软件已经卸载,但是360安全卫士显示问题仍然存在并且无法修复,怎么办?? 2020年上半年上海全国计算机等级考试报考/报名信息汇总 2020年上海市全国计算机报名时间,如何报名呢 2020年3月上海全国计算机等级考试报名时间预测 上海2020年3月份的计算机等级考试推迟了,报名时间也推迟吗?在网上找不到报名入口了 上海交大计算机系分数线山东2020 2020年上海应届本科生落户,没有计算机证书能落户吗? 2020年338分工科可以上海大学计算机专业吗?
    • 焦点

    最新推荐

    猜你喜欢

    热门推荐