我正在使用声称对此有所帮助的npm包http-proxy,但我完全无法使其正常工作。到目前为止,我只是通过制作透明的HTTP代理服务器获得了成功,但是当它创建一个透明的HTTPS代理服务器时,没有任何反应。
我正在使用Android设备配置为使用代理期望配置的端口的代理,但在nodejs端没有触发任何内容。只有当我配置了HTTP代理服务器时,事情似乎才有效。
这是我对HTTPS的代码:
var https = require('https');
var fs = require('fs');
var httpProxy = require('http-proxy');
var options = {
key: fs.readFileSync('./client-key.pem', 'utf8'),
cert: fs.readFileSync('./client-cert.pem', 'utf8')
};
var proxy = httpProxy.createProxyServer({
ssl: options
});
https.createServer(options, function (req, res) {
console.log("new", req.url);
proxy.web(req, res, {
target: req.url
});
}).listen(8000);
如果我使用http包中的createServer,那么它适用于http调用(因为触发了回调),但不适用于带有这些指令的https。谁知道我做错了什么?
PS:我不在乎是否必须使用不同的npm包。
答案 0 :(得分:0)
你可以使用https://www.npmjs.com/package/transparent-proxy
它是在扩展原生 net.createServer 的基础上构建的。它就像一个真正的透明 http 代理,它允许你,例如,轻松地向其他代理发送上游请求,并通过多个代理进行一些请求链接......等等......
安装
npm i transparent-proxy
使用
const ProxyServer = require('transparent-proxy');
//init ProxyServer
const server = new ProxyServer();
//starting server on port 8080
server.listen(8080, '0.0.0.0', function () {
console.log('TCP-Proxy-Server started!', server.address());
});
它也适用于 Termux :)