如何用node正确创建HTTPS透明代理服务器?

Jos*_*abo 5 https proxy node.js

我正在使用 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);
Run Code Online (Sandbox Code Playgroud)

如果我使用http包中的createServer,那么它适用于http调用(因为正在触发回调),但它不适用于带有这些指令的https。有人知道我做错了什么吗?

PS:我不在乎是否必须使用不同的 npm 包。

小智 0

您可以使用https://www.npmjs.com/package/transparent-proxy

它是扩展本机 net.createServer 而构建的。它的作用就像一个真正透明的http代理,例如,它允许您轻松向其他代理发送上游请求,并通过多个代理进行一些请求链接......等等......

安装

npm i transparent-proxy
Run Code Online (Sandbox Code Playgroud)

使用

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());
});
Run Code Online (Sandbox Code Playgroud)

它也适用于 Termux :)