如何监控node.js上的网络类似于chrome / firefox开发人员工具?

时间:2015-03-05 08:37:16

标签: javascript node.js https google-chrome-devtools

在开发客户端javascript应用程序时,开发人员网络面板对于调试网络问题非常有用:

enter image description here

创建NodeJS应用程序的开发人员如何监控从nodejs应用程序到http / https服务器的网络流量?例如,如何调试以下网络流量?

var http = require('http');
var req = http.request ...
req.write ...
req.send()

我的代码正在拨打第三方https服务器,因此我无法使用wireshark或类似的数据包嗅探工具。

有关详细信息,我要调查的问题是here

编辑:

这里有类似的问题,询问如何用其他语言做同样的事情:

6 个答案:

答案 0 :(得分:8)

使用外部HTTP调试工具。您的选择包括:

启动其中一个,告诉他们在哪里路由流量,并将应用程序指向该调试代理而不是真实服务器。

答案 1 :(得分:4)

我来到这个问题寻找类似的东西,但我使用request包。在这种情况下,您需要做的就是在代码中包含以下行:

require('request-debug')(request);

(确保安装了request-debug包)

这会将所有请求数据打印到控制台。

答案 2 :(得分:0)

我知道它并不漂亮,但您可以随时在请求调用内的控制台上输出响应标头的内容:

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);
    });
});

然而,你的原始问题不是关于服务器端的问题,而是节点代码本身的问题,因此这在这里没有多大用处。

答案 3 :(得分:0)

如果您使用的是早于节点8的节点版本,我是节点检查员的忠实粉丝:

https://github.com/node-inspector/node-inspector

我相信它拥有您想要的一切: enter image description here

答案 4 :(得分:0)

如果您只需要查看传出流量的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)

免责声明:

我是debug-aid的作者
在debug-aid版本为0.2.1时写了这个答案

答案 5 :(得分:0)

使用 HTTP 工具包。通过执行在 macOS 中安装:

brew install --cask http-toolkit

它将提供有关如何拦截 node、chrome 等的说明。