如何检测 Node.js 中是否存在 HTTP 代理?

How to detect the presence of a HTTP proxy in Node.js?

我希望能够检测到 Node.js 上的计算机(例如 Fiddler 或 Charles)何时打开此类程序/代理。

程序是否会更改您的本地 IP 地址,而我只需要检测它?如果是这样的话,我不确定我应该使用什么合适的包。谢谢。

谢谢

如果是 Charles Proxy 或 Fiddler,它们会在本地机器上 运行 并且拦截是透明的 - 因此 IP 既不会更改,也不会添加 HTTP header 来表明它们是当前的。由于这些工具用于安全测试,因此宣布它们的存在是有害的,因为被测软件可以检测到它们并表现出不同的行为。

像 Squid 或负载平衡器设置这样的普通 Web 代理应该添加以下 HTTP headers 之一:

  • Via 例如 Via: 1.1 vegur
  • X-Forwarded-For 例如 X-Forwarded-For: 192.168.1.10

因此对于像 Charles 或 Fiddler 这样的本地 MITM 代理,您将无法检测到它们的存在,但常规代理应该通过一些 HTTP header.