[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

我认为使用 Google Chrome 的无头模式可以密切监视外观,所以我尝试了一下。

你好。
我是Mandai,负责Wild 开发团队。

Beyond Co., Ltd.是一家MSP,因此我们根据客户订单监控各种事情。

其中,有一类监控称为外观监控,它使用与用户访问站点相同(或相似)的方法来访问站点,并检查页面是否正确显示。

有各种工具可以用来访问站点并检查数据是否被正确收集,并且可以使用curl等自己完成,但是这些方法不允许从各种监控工具接收警报的人您只需访问该网站即可查明原因。

没关系,但是如果您使用 Google Chrome 的无头模式,您可以通过 DevTools 获取有关哪些内容需要很长时间才能获取的详细信息,这样您就可以在不查看网站的情况下调查原因。我想探讨一下这种可能性。这可能成为可能。

准备

首先,收集尝试所需的一切。
还有一个通过稍后复制和粘贴来工作的示例。

 

谷歌浏览器

首先,安装以无头模式运行的 Google Chrome(版本 59 或更高版本)。
此版本的 Google Chrome 已经稳定,因此请像往常一样使用安装程序进行安装。
另外,如果启用了自动更新,我认为它们已经安装了。

 

Node.js

这次,我使用的是最新版本,8.0.0,但我认为即使它相当旧也没关系。

我已经使用 npm 安装了以下模块。

  • chrome 启动器
  • chrome 远程接口

chrome-launcher 用于从 Node.js 启动 Google Chrome。
chrome-remote-interface 用于从 Node.js 访问 Google Chrome 的 DevTools。

npm 安装 chrome-launcher chrome-remote-interface

 

示例脚本包含一个进程,每次启动时都会启动 Google Chrome,退出时会停止它,但如果你要认真使用它,我觉得你可以让 Google Chrome 保持运行(内存使用量似乎很快)增加,因此您可能需要定期重新启动它。)

安装完以上两件事后,就可以开始了。

关于如何使用谷歌浏览器无头模式的基本信息,可以参考谷歌浏览器59,它标配了无头模式,我们就来玩一下吧。
有关如何从 Node.js 使用 Google Chrome 的无头模式的基本信息,请参阅尝试从 Node.js 使用无头 Google Chrome。

 

示例脚本

我们准备了以下示例,请放心使用!

const ChromeLauncher = require('chrome-launcher'); const CDP = require('chrome-remote-interface'); 函数 launchChrome(headless = true) { ChromeLauncher.launch({ 端口: 9222, autoSelectChrome: true, chromeFlags: [ '--disable-gpu', headless ? '--headless' : '', '--no-sandbox', ], }).then(launcher => { CDP(协议 => { setTimeout(() => { 协议.close(); process.exit(); }, 10000); const {Page, Network} = Promise.all([ Page.enable(), Network.enable(), ]).then(() => { Page.navigate({url : 'https://beyondjapan.com/blog/2017/07/headless-chrome-networks'}); Network.responseReceived(res => { console .log(r) }) }) }) }) } launchChrome();

 

由于它不会自动结束,所以我使用 setTimeout 在 10 秒后结束它。
在一个页面内发生大量通信的站点将会有大量输出,但是如果您提取一个

{ requestId:'30371.7375',frameId:'30371.1',loaderId:'30371.190',时间戳:1197407.412915,类型:'文档',响应:{ url:'https://beyondjapan.com/',状态:200,statusText : 'OK', headers: { 日期: 'Tue, 18 Jul 2017 04:16:02 GMT', 'Transfer-Encoding': 'chunked', 服务器: 'nginx', 连接: 'keep-alive', 链接: '<https://beyondjapan.com/cms-json/> ; rel="https://api.w.org/"', Vary: 'Accept-Encoding', 'Content-Type': 'text/html' }, mimeType: 'text/html ',connectionReused:假,connectionId:5394,remoteIPAddress:'122.218.102.93',remotePort:80,fromDiskCache:假,fromServiceWorker:假,encodedDataLength:253,计时:{ requestTime:1197406.917743,proxyStart:-1,proxyEnd:-1 ,dnsStart:0.944999977946281,dnsEnd:2.30200006626546,connectStart:2.30200006626546,connectEnd:7.89500004611909,sslStart:-1,sslEnd:-1,workerStart:-1,workerReady:-1,发送开始:7.98300001770258,发送结束:8.11700010672212,推送开始:0,推送结束: 0, receiveHeadersEnd: 494.426999939606 }, 协议: 'http/1.1', securityState: '中性' } }

 

看来大部分可以从DevTools的Network选项卡中获取的信息都可以获取到。
看来时间戳周围的所有单位都是毫秒。

DevTools 似乎还能够做所有能做的事情,例如删除和添加 cookie(这对于监视使用会话的站点可能很有用)、清除缓存以及重写用户代理。
看起来创建一个显示使用 D3.js 获得的数据的 UI 会很有趣!

 

概括

您对 Google Chrome 无头模式中的外观监控感觉如何?

我认为使用监控工具会更便宜,但是由于您可以获取加载内容的所有响应,因此您可以立即识别诸如 CDN 发生的情况,或者 API 的响应非常慢之类的情况。成为它的用途。

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
1,990
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。