Express Proxy Server,到 Proxy Fiddler
Express Proxy Server, to Proxy Fiddler
我有一个node.js express代理服务器,我想调试它,所以我想通过fiddler抓取流量:
const express = require('express');
const expressApp = express();
const proxyTarget = 'https://my-proxy.azurewebsites.net/proxy';
//attempting to configure fiddler proxy
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;
expressApp.use('/api', proxy({
target: proxyTarget,
secure: false, // don't verify https certificates
logLevel: 'debug'
}));
我尝试使用 fiddler 捕获流量,但 fiddler 不捕获对 Azure 的请求,只捕获本地主机上的包装代理请求。
如何配置代理设置以便首先通过 fiddler?
不幸的是,Node.js 不听取 http_proxy/https_proxy 环境变量(完整讨论参见 https://github.com/nodejs/node/issues/8381)。
这意味着这对于 Fiddler 来说很难 - 您需要更改发出 HTTP 请求的每个地方以使用代理设置,或者替换 Node 的 default agent to do so (and then ensure no requests set a custom agent). There are some node modules that can help here, like https://www.npmjs.com/package/global-agent,但您还需要处理 HTTPS 信任分开(或者你只会看到不可读的 CONNECT 请求,正如上面的评论者所提到的)。
不过我自己也遇到过同样的问题,所以我一直在构建 Fiddler 的开源替代品来修复它! HTTP Toolkit 可以做你正在寻找的事情:你可以从那里打开一个终端(或在现有终端中启用它)并且在那里启动的任何节点进程都会自动拦截所有 HTTP 和 HTTPS 请求,因此你可以检查and/or 重写它们,就像 Fiddler 一样。它也处理所有证书信任的东西。
在幕后,这只是将 node
包装在命令行上,以执行您手动执行的相同操作,重新配置设置和默认值以确保一切正常运行。如果您确实想手动执行此操作,完整的源代码位于此处:https://github.com/httptoolkit/httptoolkit-server/blob/master/overrides/js/prepend-node.js
我有一个node.js express代理服务器,我想调试它,所以我想通过fiddler抓取流量:
const express = require('express');
const expressApp = express();
const proxyTarget = 'https://my-proxy.azurewebsites.net/proxy';
//attempting to configure fiddler proxy
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;
expressApp.use('/api', proxy({
target: proxyTarget,
secure: false, // don't verify https certificates
logLevel: 'debug'
}));
我尝试使用 fiddler 捕获流量,但 fiddler 不捕获对 Azure 的请求,只捕获本地主机上的包装代理请求。
如何配置代理设置以便首先通过 fiddler?
不幸的是,Node.js 不听取 http_proxy/https_proxy 环境变量(完整讨论参见 https://github.com/nodejs/node/issues/8381)。
这意味着这对于 Fiddler 来说很难 - 您需要更改发出 HTTP 请求的每个地方以使用代理设置,或者替换 Node 的 default agent to do so (and then ensure no requests set a custom agent). There are some node modules that can help here, like https://www.npmjs.com/package/global-agent,但您还需要处理 HTTPS 信任分开(或者你只会看到不可读的 CONNECT 请求,正如上面的评论者所提到的)。
不过我自己也遇到过同样的问题,所以我一直在构建 Fiddler 的开源替代品来修复它! HTTP Toolkit 可以做你正在寻找的事情:你可以从那里打开一个终端(或在现有终端中启用它)并且在那里启动的任何节点进程都会自动拦截所有 HTTP 和 HTTPS 请求,因此你可以检查and/or 重写它们,就像 Fiddler 一样。它也处理所有证书信任的东西。
在幕后,这只是将 node
包装在命令行上,以执行您手动执行的相同操作,重新配置设置和默认值以确保一切正常运行。如果您确实想手动执行此操作,完整的源代码位于此处:https://github.com/httptoolkit/httptoolkit-server/blob/master/overrides/js/prepend-node.js