メインコンテンツまでスキップ

NodeJS

Proxyman の Automatic Setup で NodeJS アプリとスクリプトの HTTP/HTTPS 通信をキャプチャします。axios、got、superagent、fetch、node-fetch に対応しています。

1. 新しい自動設定(v4.7.0 以降)✅​

Proxyman v4.7.0 以降では、ワンクリックで NodeJS の HTTP/HTTPS 通信をキャプチャできます。

  • ワンクリックで設定できます。HTTP Proxy の設定や、自己署名証明書の手動での信頼設定は必要ありません。
  • 多くの NodeJS ライブラリに対応しています:axios、got、superagent、fetch、node-fetch

使い方:​

  1. Proxyman を開き、Setup メニュー → Automatic Setup を選択します
  2. Open New Terminal をクリックします
  3. 必要に応じて、AppleScript の権限確認を許可します
  4. 新しいターミナルウィンドウが開きます。そこで NodeJS のバックエンドサーバーを起動するか、スクリプトを実行してください。Proxyman がすべての通信を自動的にキャプチャします。
  5. 例:
$ npm start

完了 ✅

Open New Terminal ボタンがあり、axios や fetch などの NodeJS ライブラリをキャプチャする Proxyman Automatic Setup のウィンドウ

NodeJS の通信をキャプチャ

Automatic Setup のページをご覧ください:

NodeJS と Proxyman を併用する際によくある問題は次のとおりです:

1. NodeJS サーバーへの http://localhost:3000 リクエストを Proxyman でキャプチャできない​

NodeJS で localhost の Web サイト(例:http://localhost:3000 )を配信している場合、Proxyman が機能しないことがあります。例えば、ExpressJS を使って http://localhost:3000 で API サーバーを配信している場合です。

解決方法:​

localhost サーバーからリクエストが一切見えない場合をご覧ください。

2. NodeJS のローカルサーバーから送信される HTTP リクエストを Proxyman でキャプチャできない​

  • fetch や axios からのリクエストが Proxyman アプリに表示されない
  • HTTPS リクエストで SSL エラーが発生する

解決方法​

初期状態では、NodeJS ライブラリからの HTTP/HTTPS リクエストは HTTP プロキシサーバーを経由しないため、Proxyman は通信をキャプチャできません。

2.1 node-fetch​

  1. global-agent パッケージをインストールします
npm install global-agent

2. NodeJS コードの先頭に、次のコードを追加します:

import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

3. 次の環境変数を現在のシェルに追加します。Proxyman がポート 9090 で待ち受けていることを確認してください

export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090

4. 完了 ✅

NodeJS スクリプトをもう一度実行すると、HTTP/HTTPS リクエストが Proxyman アプリに表示されます。

サンプルコード​

import fetch from 'node-fetch';

// Setup global-agent
import { bootstrap } from 'global-agent';
bootstrap();
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

// fetch the data
const response = await fetch('https://httpbin.org/get?id=123');
const data = await response.json();

// Done
console.log(data);

2.2 Axios​

Axios のドキュメントによると、HTTP_PROXY と HTTPS_PROXY の環境変数を設定できます。

  1. メニューバーの Proxyman アイコン → Listen on <IP>:<Port> をクリックします
  2. Copy Shell Command をクリックします
Listen on IP and port と Copy Shell Command 項目を表示した Proxyman のメニューバーメニュー
  1. ターミナルを開き、コマンドを貼り付けます。例:export https_proxy=http://192.168.1.103:9090 http_proxy=http://192.168.1.103:9090
  2. 同じターミナルで、axios を使う NodeJS サーバーを起動します。
  3. axios の通信は Proxyman を経由して送信されます。
  4. 完了 ✅

2.3 別の NodeJS ライブラリを使用している場合​

fetch や axios を使用していない場合は、設定方法が異なる可能性があります。プロキシの設定方法と Proxyman 証明書の信頼設定については、使用しているライブラリのドキュメントをご確認ください。

詳細情報​