我在代理服务器后面的作物网络中工作.在我的代码中,我可以使用此线程中提到的方法设置代理(如何使用带有node.js http.Client的http代理?).
但问题是,大多数第三方模块没有代理设置,我无法修改其代码来添加代理.此外,我的代码可能会在直接连接环境中使用,这意味着我无法在代码中对代理设置进行硬编码.
我知道NPM有一个代理的全局设置
npm config set proxy http://proxy.company.com:8080 npm config set https-proxy http://proxy.company.com:8080
但我没有在Node.js中找到任何类似的配置.
Node.js是否支持全局代理设置,因此我无需更改所有代码并轻松打开和关闭.
aps*_*ers 23
不幸的是,似乎必须在每次调用时设置代理信息http.request.节点不包括全局代理设置的机制.
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
});
Run Code Online (Sandbox Code Playgroud)
之后,全局设置与呼叫建立initialize,都http.request和request库将使用的代理信息.
该模块还可以使用http_proxy环境变量:
process.env.http_proxy = 'http://proxy.example.com:3129';
globalTunnel.initialize();
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以尝试我的包node-global-proxy,它适用于所有节点版本和大多数 http 客户端(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! */
Run Code Online (Sandbox Code Playgroud)
更多信息请访问: https: //github.com/wwwzbwcom/node-global-proxy
我终于创建了一个模块来(部分)解决这个问题。基本上这个模块重写了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
| 归档时间: |
|
| 查看次数: |
77943 次 |
| 最近记录: |