4

これは、node を https クライアントとして使用して外の世界とやり取りするための単純な nodejs スクリプトです。のような企業プロキシの背後で実行したときに「ECONNREFUSED」エラーが発生しないように変更するにはどうすればよいhttp://10.10.10.10:8080ですか?

var https = require('https');

var options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET'
};

var req = https.request(options, function(res) {
  console.log("statusCode: ", res.statusCode);
  console.log("headers: ", res.headers);

  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', function(e) {
  console.error(e);
});

- - アップデート - -

npm 'request' パッケージ ( https://github.com/mikeal/request ) を使用する方法を見つけました。バニラノードライブラリでこれを行う方法をまだ疑問に思っています.

var request = require('request').defaults({proxy:'http://my.proxy.server:8080', agent:false});
request('https://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Print the google web page.
  }
})
4

1 に答える 1

1

通常は、システム レベルでプロキシを処理するのが最善です。スクリプトではなくプロキシを使用するようにオペレーティング システムを構成します。ただし、ほとんどの企業プロキシではすべてのポートが開いているわけではないため、これも失敗する可能性があります。

一般的な解決策は、サーバー (EC2 または Rackspace インスタンス) を独自のプロキシとして機能させ、ポート 443 で ssh をリッスンさせることです。ポート 443 は、企業のファイアウォールで https 用に開かれています。

この時点で、すべてのローカル ネットワーク トラフィックをサーバーにトンネリングするか、サーバーに ssh してスクリプトを実行することができます。

スクリプトをプロキシ固有のものにすると、移植性が低くなり、プロキシ構成が変更されたときにスクリプトが壊れるため、本番環境が強化されません。

于 2014-08-05T21:34:38.970 に答える