Node.js全局代理设置

时间:2013-09-03 07:52:16

标签: node.js proxy

我在代理服务器后面的裁剪网络中工作。在我的代码中,我可以使用此线程中提到的方法(How can I use an http proxy with node.js http.Client?)来设置代理。

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

我知道NPM具有代理的全局设置

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

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

Node.js是否支持全局代理设置,因此我无需更改所有代码并轻松打开和关闭。

5 个答案:

答案 0 :(得分:21)

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

NPM上的global-tunnel-ng module似乎可以解决这个问题:

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.requestrequests库都将使用代理信息。

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

process.env.http_proxy = 'http://proxy.example.com:3129';
globalTunnel.initialize();

答案 1 :(得分: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

答案 2 :(得分:1)

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

在配置文件中设置代理后(/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

(您可以使用nslookup [proxyurl]

获取代理的IP

答案 3 :(得分:1)

您可以尝试使用我的软件包class Wrapper { let value: AnyObject init(_ value: AnyObject) { self.value = value } } ,该软件包适用于所有节点版本和大多数http客户端(axios,get,superagent,request等)

通过

安装后

node-global-proxy

全局代理可以以

开头
npm install node-global-proxy --save

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

答案 4 :(得分: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