46

我在代理服务器后面的公司网络中工作。在我的代码中,我可以使用此线程中提到的方法设置代理。

但问题是大多数 3rd 方模块没有代理设置,我无法修改他们的代码来添加代理。此外,我的代码可能会在直接连接环境中使用,这意味着我无法在代码中硬编码我的代理设置。

我知道 NPM 有一个全局代理设置,即

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

但是我在 Node.js 中没有找到任何类似的配置。

Node.js 是否支持全局代理设置,这样我就不需要更改所有代码并轻松打开和关闭?

4

5 回答 5

28

不幸的是,似乎必须在每次调用时设置代理信息http.request。Node 不包含全局代理设置机制。

NPM 上的global-tunnel-ng模块似乎可以处理这个问题,但是:

var globalTunnel = require('global-tunnel-ng');

globalTunnel.initialize({
  host: '10.0.0.10',
  port: 8080,
  proxyAuth: 'userId:password', // optional authentication
  sockets: 50 // optional pool size for each http and https
});

通过调用 建立全局设置后initialize,库http.requestrequest都将使用代理信息。

该模块还可以使用http_proxy环境变量:

process.env.http_proxy = 'http://proxy.example.com:3129';
globalTunnel.initialize();
于 2015-01-07T18:02:13.520 回答
4

我终于创建了一个模块来解决这个问题(部分)。基本上这个模块重写http.request了功能,添加了代理设置然后触发。查看我的博文:https ://web.archive.org/web/20160110023732/http://blog.shaunxu.me:80/archive/2013/09/05/semi-global-proxy-setting-for-node .js.aspx

于 2013-12-12T03:22:04.377 回答
1

虽然不是 Nodejs 设置,但我建议您使用觉得相当方便的代理链。它可能在您的包管理器中可用。

在配置文件中设置代理后(/etc/proxychains.conf对我来说),您可以运行proxychains npm startproxychains4 npm start(即proxychains [command_to_proxy_transparently])并且您的所有请求将被自动代理。

为我配置设置:

这些是您必须附加的最小设置

## Exclude all localhost connections (dbs and stuff)
localnet 0.0.0.0/0.0.0.0
## Set the proxy type, ip and port here
http    10.4.20.103 8080

(您可以使用 获取代理的 ip nslookup [proxyurl]

于 2017-07-27T15:49:01.347 回答
1

你可以试试我的包node-global-proxy,它适用于所有节点版本和大部分 http-client(axios、got、superagent、request 等)

安装后

npm install node-global-proxy --save

全局代理可以从

const proxy = require("node-global-proxy").default;

proxy.setConfig({
  http: "http://localhost:1080",
  https: "https://localhost:1080",
});
proxy.start();

/** Proxy working now! */

此处提供更多信息:https ://github.com/wwwzbwcom/node-global-proxy

于 2020-06-03T14:10:44.357 回答
0

用您在组织中的 ID 和密码替换{userid}{password}或登录到您的机器。

npm config set proxy http://{userid}:{password}@proxyip:8080/
npm config set https-proxy http://{userid}:{password}@proxyip:8080/
npm config set http-proxy http://{userid}:{password}@proxyip:8080/
strict-ssl=false
于 2019-04-02T12:37:15.757 回答