我如何使用https代理和node.js https / request客户端?

我需要通过内部网代理将我的客户端HTTPS请求发送到服务器。 我使用https和request + global-tunnel,这两种解决scheme似乎都不起作用。
与“http”类似的代码工作。 还有其他设置我错过了吗?

代码失败,出现错误:请求:请求问题:无法build立隧道套接字,原因=套接字挂断

HTTPS:events.js:72扔呃; //未处理的'错误'事件^错误:套接字在CleartextStream.read(如_read)上的EncryptedStream.CryptoStream._done(tls.js:703:22)上的SecurePair.error(tls.js:1011:23)挂起tls.js:499:24)

  • 代码是简单的httpstesting。

    var http = require(“https”);

    var options = {host:“proxy.myplace.com”,port:912,path:“ https://www.google.com ”,标题:{Host:“www.google.com”}};

    http.get(options,function(res){console.log(res); res.pipe(process.stdout);});

您可能希望通过代理在您的节点应用程序和目标目标之间build立TLSencryption连接。

为了做到这一点,你需要发送一个连接请求与目标目标主机名和端口。 代理将创build到目标主机的TCP连接,然后简单地在您和目标目标之间转发软件包。

我强烈build议使用请求客户端 。 这个包简化了HTTP / S请求的处理过程。

使用请求客户端的示例代码

var request = require('request'); request({ url: 'https://www.google.com', proxy: 'http://97.77.104.22:3128' }, function (error, response, body) { if (error) { console.log(error); } else { console.log(response); } }); 

不使用外部依赖关系的示例代码:

 var http = require('http'), tls = require('tls'); var req = http.request({ host: '97.77.104.22', port: 3128, method: 'CONNECT', path: 'twitter.com:443' }); req.on('connect', function (res, socket, head) { var tlsConnection = tls.connect({ host: 'twitter.com', socket: socket }, function () { tlsConnection.write('GET / HTTP/1.1\r\nHost: twitter.com\r\n\r\n'); }); tlsConnection.on('data', function (data) { console.log(data.toString()); }); }); req.end();