javascript-代理(如提琴手)可以与Node.js的ClientReques一起使用吗

是否可以将node.js设置为识别代理(例如Fiddler)并通过代理路由所有ClientRequest?

我在Windows上使用节点,并且想要调试http请求,就像在浏览器中使用Fiddler for JavaScript一样。

请注意,我不是在尝试创建代理,也不是在尝试接收服务器收到的代理请求。 我想通过代理路由http.request()发出的请求。 我想像在浏览器中执行请求一样,使用Fiddler来检查请求和响应。

chuckj asked 2020-06-26T19:31:01Z
6个解决方案
53 votes

我发现以下内容很不错。 请求模块从Windows环境变量读取代理信息。

在Windows命令提示符下键入以下内容,将其设置为Shell的生存期。 您只需要从此Shell运行节点应用程序。

set https_proxy=http://127.0.0.1:8888 
set http_proxy=http://127.0.0.1:8888
set NODE_TLS_REJECT_UNAUTHORIZED=0
Naraen answered 2020-06-26T19:31:40Z
24 votes

要通过小提琴手路由您的客户请求,请按以下方式更改您的options-object(例如:在创建http.request之前):

options.path = 'http://' + options.host + ':' + options.port + options.path;
options.headers.host = options.host;
options.host = '127.0.0.1';
options.port = 8888;

myReq = http.request(options, function (result) {
    ...
});
Peter Cools answered 2020-06-26T19:31:15Z
7 votes

如果要监视来自节点的传出请求您可以使用请求模块

并像这样在选项中设置proxy属性

request.post('http://204.145.74.56:3003/test', {
headers :{ 'content-type' : 'application/octet-stream'}, 
'body' : buf ,
 proxy: 'http://127.0.0.1:8888'
}, function() {
   //callback
});

8888是提琴手的默认端口。

doron aviguy answered 2020-06-26T19:32:08Z
5 votes

回答我自己的问题:根据[https://github.com/joyent/node/issues/1514],答案是否定的,但是您可以使用request模块[http://search.npmjs.org/#/ 请求],它确实支持代理。

chuckj answered 2020-06-26T19:32:28Z
4 votes
process.env.https_proxy = "http://127.0.0.1:8888";
process.env.http_proxy = "http://127.0.0.1:8888";
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
Warlock answered 2020-06-26T19:32:44Z
0 votes

如果您想在一般情况下配置代理,那么其他答案是正确的:您需要为要用作节点的库手动配置该代理,而有意无意中忽略了系统代理设置。

但是,如果您只是在寻找适用于Node.js的类似于提琴手的HTTP调试工具,那么我已经在一个开源项目上做了一段时间(带有内置节点支持),称为HTTP Toolkit。 它可以让你

  • 一键从应用程序打开终端
  • 从该终端启动任何节点CLI /服务器/脚本
  • 它发送的所有HTTP或HTTPS请求都会自动被代理,因此您可以查看和重写所有内容。 无需更改代码或安装npm软件包。

这是一个调试大量NPM,节点和浏览器流量的演示:

Demo screenshot

在内部,这种工作方式是将一个额外的JS脚本注入到已启动的Node进程中,该脚本会钩接到require()中,从而为每个不使用全局设置的模块自动为您重新配置代理设置。

Tim Perry answered 2020-06-26T19:33:31Z
translate from https://stackoverflow.com:/questions/8697344/can-a-proxy-like-fiddler-be-used-with-node-jss-clientrequest