如何在 node.js 上监控网络,类似于 chrome/firefox 开发者工具?
how to monitor the network on node.js similar to chrome/firefox developer tools?
开发客户端 javascript 应用程序时,开发者网络面板对于调试网络问题非常有用:
创建 NodeJS 应用程序的开发人员如何监控从 nodejs 应用程序到 http/https 服务器的网络流量?例如如何调试以下网络流量?
var http = require('http');
var req = http.request ...
req.write ...
req.send()
我的代码正在调用第三方 https 服务器,所以我无法使用 wireshark 或类似的数据包嗅探工具。
有关更多信息,我正在尝试调查的问题是 。
编辑:
以下是询问如何用其他语言做同样事情的类似问题:
- PYTHON:
- JAVA:
我知道这不太好,但您始终可以在请求调用内的控制台上输出响应内容 headers:
var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.on('data', function(d) {
process.stdout.write(d);
});
});
然而,您最初的问题不是关于服务器端的问题,而是节点代码本身的问题,因此这在这里没有多大用处。
使用外部 HTTP 调试工具。您的选择包括:
- node-http-proxy 如
所示
- middlefiddle 写在 node.js(但现在已经放弃 3 年了)https://github.com/mdp/middlefiddle
- mitmproxy - 一个 CLI 工具 http://mitmproxy.org
- 提琴手http://www.telerik.com/fiddler
- 还有更多 - https://www.google.pl/search?q=HTTP+debugger
您启动其中一个,告诉他们将流量路由到哪里,然后将您的应用程序指向该调试代理而不是真实服务器。
我来到这个问题是为了寻找类似的东西,但我使用的是 request
包。在这种情况下,您需要做的就是在您的代码中包含这一行:
require('request-debug')(request);
(确保安装了请求调试包)
这会将所有请求数据打印到控制台。
如果您使用的是 node 8 之前的 node 版本,我是 node-inspector 的忠实粉丝:
https://github.com/node-inspector/node-inspector
我相信它有你要找的一切:
如果您只需要查看传出流量的 URL 及其原因,您可以使用 debugging-aid
npm i -D debugging-aid
node --require debugging-aid/network app.js
最终的控制台输出可能如下所示:
[aid] network, outgoing to: http://example.com/
stack: at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:277:16)
at Object.request (http.js:44:10)
at Request.start (myapp-path/node_modules/request/request.js:751:32)
at Request.end (myapp-path/node_modules/request/request.js:1511:10)
[aid] network, outgoing to: http://example.com/
stack: at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:277:16)
at Object.request (http.js:44:10)
at get (myapp-path/node_modules/got/source/request-as-event-emitter.js:234:22)
at Immediate.<anonymous> (myapp-path/node_modules/got/source/request-as-event-emitter.js:305:10)
免责声明:
我是调试助手的作者
这个答案是在 debugging-aid 版本为 0.2.1
时写的
使用 HTTP 工具包。通过执行以下命令在 macOS 中安装:
brew install --cask http-toolkit
它将提供如何拦截节点的说明,chrome和其他。
我还希望在 devtools 中有一个用于 NodeJS 调试的网络选项卡。由于它不存在,我使用了下面的包。这会跟踪来自 NodeJs 应用程序的所有 http 和 https 请求,并将它们显示在 chrome 网络选项卡中,例如 UI.
开发客户端 javascript 应用程序时,开发者网络面板对于调试网络问题非常有用:
创建 NodeJS 应用程序的开发人员如何监控从 nodejs 应用程序到 http/https 服务器的网络流量?例如如何调试以下网络流量?
var http = require('http');
var req = http.request ...
req.write ...
req.send()
我的代码正在调用第三方 https 服务器,所以我无法使用 wireshark 或类似的数据包嗅探工具。
有关更多信息,我正在尝试调查的问题是
编辑:
以下是询问如何用其他语言做同样事情的类似问题:
- PYTHON:
- JAVA:
我知道这不太好,但您始终可以在请求调用内的控制台上输出响应内容 headers:
var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.on('data', function(d) {
process.stdout.write(d);
});
});
然而,您最初的问题不是关于服务器端的问题,而是节点代码本身的问题,因此这在这里没有多大用处。
使用外部 HTTP 调试工具。您的选择包括:
- node-http-proxy 如 所示
- middlefiddle 写在 node.js(但现在已经放弃 3 年了)https://github.com/mdp/middlefiddle
- mitmproxy - 一个 CLI 工具 http://mitmproxy.org
- 提琴手http://www.telerik.com/fiddler
- 还有更多 - https://www.google.pl/search?q=HTTP+debugger
您启动其中一个,告诉他们将流量路由到哪里,然后将您的应用程序指向该调试代理而不是真实服务器。
我来到这个问题是为了寻找类似的东西,但我使用的是 request
包。在这种情况下,您需要做的就是在您的代码中包含这一行:
require('request-debug')(request);
(确保安装了请求调试包)
这会将所有请求数据打印到控制台。
如果您使用的是 node 8 之前的 node 版本,我是 node-inspector 的忠实粉丝:
https://github.com/node-inspector/node-inspector
我相信它有你要找的一切:
如果您只需要查看传出流量的 URL 及其原因,您可以使用 debugging-aid
npm i -D debugging-aid
node --require debugging-aid/network app.js
最终的控制台输出可能如下所示:
[aid] network, outgoing to: http://example.com/
stack: at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:277:16)
at Object.request (http.js:44:10)
at Request.start (myapp-path/node_modules/request/request.js:751:32)
at Request.end (myapp-path/node_modules/request/request.js:1511:10)
[aid] network, outgoing to: http://example.com/
stack: at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:277:16)
at Object.request (http.js:44:10)
at get (myapp-path/node_modules/got/source/request-as-event-emitter.js:234:22)
at Immediate.<anonymous> (myapp-path/node_modules/got/source/request-as-event-emitter.js:305:10)
免责声明:
我是调试助手的作者
这个答案是在 debugging-aid 版本为 0.2.1
使用 HTTP 工具包。通过执行以下命令在 macOS 中安装:
brew install --cask http-toolkit
它将提供如何拦截节点的说明,chrome和其他。
我还希望在 devtools 中有一个用于 NodeJS 调试的网络选项卡。由于它不存在,我使用了下面的包。这会跟踪来自 NodeJs 应用程序的所有 http 和 https 请求,并将它们显示在 chrome 网络选项卡中,例如 UI.