如何使用Fiddler从请求节点库捕获http消息

客户端发起的对节点服务器的请求在Fiddler中被捕获得很好。 但是,从节点发送到Web服务的请求不会被捕获。 它没有帮助将代理(127.0.0.1:8888)的configuration传递给请求方法。 如何通过Fiddler路由请求消息?

var http = require('http'); var request = require('request'); request.get(webserviceURL, { "auth" : {"user": "user", "pass" = "pass", sendImmediately: true }, "proxy" : { "host" : "127.0.0.1", "port" : 8888 }}, function (error, response) { console.log( "response received" ); }); 

请求回购: https : //github.com/mikeal/request

我只是试图自己做(使用小提琴手和npm的请求库)。 以下是我如何工作:

 process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; // Ignore 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' authorization error // Issue the request request( { method: "GET", uri: "https://secure.somewebsite.com/", proxy: "http://127.0.0.1:8888" // Note the fully-qualified path to Fiddler proxy. No "https" is required, even for https connections to outside. }, function(err, response, body) { console.log("done"); }); 

这是与Fiddler2使用默认的端口和代理选项(并且没有代理身份validation)。

提琴手通过设置您的“Internet选项”(从开始菜单)“连接”>“局域网设置”>“代理服务器”到其端口,从而使所有HTTP通信( 服从该设置的客户端)通过它。

您应该指出您的node.js客户端lib使用代理,在您启动Fiddler之后,将在该选项对话框中写入设置。

代理选项应该是一个完整的URL,像这样:

 proxy : "http://127.0.0.1:8888" 

要临时执行此操作,而不更改代码,可以使用环境variables。

请求方面:

  • HTTP_PROXY
  • HTTPS_PROXY
  • NO_PROXY

所以,代理只需在运行你的进程之前在你的控制台中设置。

例如,要设置http和https代理使用:

 set HTTP_PROXY="http://127.0.0.1:8888" set HTTPS_PROXY="http://127.0.0.1:8888" set NODE_TLS_REJECT_UNAUTHORIZED=0 

后一行通过提琴手代理停止SSL问题。