Node.jsは、プロキシ(Fiddlerなど)を認識し、すべてのClientRequestをプロキシ経由でルーティングするように設定できますか?
Windowsでnodeを使用していて、ブラウザーでJavaScriptにFiddlerを使用するのと同じようにhttpリクエストをデバッグしたいと思います。
はっきり言っておきますが、私はプロキシを作成したり、サーバーが受信したプロキシリクエストを作成したりしていません。 http.request()
からのリクエストをプロキシ経由でルーティングしたい。 Fiddlerを使用して、ブラウザーで要求を実行している場合と同様に、要求と応答の両方を検査したいと思います。
Fiddlerを介してクライアント要求をルーティングするには、optionsオブジェクトを次のように変更します(例:http.requestを作成する直前):
options.path = 'http://' + options.Host + ':' + options.port + options.path;
options.headers.Host = options.Host;
options.Host = '127.0.0.1';
options.port = 8888;
myReq = http.request(options, function (result) {
...
});
以下は気の利いたものだと思います。 request モジュールは、Windows環境変数からプロキシ情報を読み取ります。
Windowsコマンドプロンプトで次のように入力すると、シェルの有効期間が設定されます。このシェルからノードアプリを実行するだけです。
set https_proxy=http://127.0.0.1:8888
set http_proxy=http://127.0.0.1:8888
set NODE_TLS_REJECT_UNAUTHORIZED=0
ノードからの発信要求を監視したい場合は、 request モジュールを使用できます
そして、proxyプロパティをオプションに設定するだけです
request.post('http://204.145.74.56:3003/test', {
headers :{ 'content-type' : 'application/octet-stream'},
'body' : buf ,
proxy: 'http://127.0.0.1:8888'
}, function() {
//callback
});
8888は、fiddlerのデフォルトのポートです。
私自身の質問に答える: https://github.com/joyent/node/issues/1514によると、答えはノーです、ただし、プロキシをサポートするrequest
モジュール http://search.npmjs.org/#/request を使用できます。
process.env.https_proxy = "http://127.0.0.1:8888";
process.env.http_proxy = "http://127.0.0.1:8888";
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
一般的なケースでプロキシを構成する場合、他の答えは正しいです:ノードとして使用しているライブラリに対して手動で構成する必要があります 意図的に すぐにシステムのプロキシ設定を無視します。
ただし、Node.js用のフィドラーのようなHTTPデバッグツールを単に探している場合は、オープンソースプロジェクトでこれを行うために(ビルトインノードサポートを使用して)HTTP Toolkit。それにより
これは、一連のNPM、ノード、およびブラウザトラフィックをデバッグするデモです。
内部的には、これが機能する方法は、追加の JSスクリプト を開始済みNodeプロセスに注入し、require()
にフックしてプロキシ設定を自動的に再構成することです。あなたのために、グローバル設定を使用しないすべてのモジュールについて。