簡體   English   中英

如何監控 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 或類似的數據包嗅探工具。

有關更多信息,我要調查的問題在這里

編輯:

以下是類似的問題,詢問如何用其他語言做同樣的事情:

使用外部 HTTP 調試工具。 您的選擇包括:

您啟動其中之一,告訴他們將流量路由到哪里,並將您的應用程序指向該調試代理而不是真正的服務器。

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

免責聲明:

我是調試助手的作者
這個答案是在調試幫助版本 0.2.1 時寫的

我來到這個問題尋找類似的東西,但我正在使用request包。 在這種情況下,您需要做的就是在代碼中包含這一行:

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

(確保安裝了請求調試包)

這會將所有請求數據打印到控制台。

我知道這並不漂亮,但是您始終可以在請求調用中的控制台上輸出響應標頭的內容:

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

但是,您最初的問題不是關於服務器端的問題,而是節點代碼本身的問題,所以這在這里沒有多大用處。

如果你使用的節點版本早於節點 8,我是節點檢查器的忠實粉絲:

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

我相信它擁有您正在尋找的一切: 在此處輸入圖片說明

使用 HTTP 工具包。 通過執行在 macOS 中安裝:

brew install --cask http-toolkit

它將提供有關如何攔截 node、chrome 等的說明。

我還希望在 devtools 中有一個用於 NodeJS 調試的網絡選項卡。 由於它不存在,我使用了下面的 package。 這會跟蹤來自 NodeJs 應用程序的所有 http 和 https 請求,並在類似於 UI 的 chrome 網絡選項卡中顯示它們。

網絡活動查看器

一種簡單的方法是使用船尾記錄器功能。 由於您應該為測試用例存根通信,因此您可能無論如何都需要將此庫作為開發依賴項。

以下將所有 http[s] 通信記錄到控制台,但您可以記錄到文件等。此處的文檔https://github.com/nock/nock#recording

import nock from 'nock'

nock.recorder.rec({
  output_objects: true
})

您可以使用 grackle_tracking 腳本並使用 grackle 的平台查看您的數據 - 我們只是出於完全相同的目的構建它: https://www.getgrackle.com/libraries#grackle_tracking_overview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM