DEV Community

Cover image for Charles Proxyの代替に最適なツール
Akira
Akira

Posted on Originally published at apidog.com

Charles Proxyの代替に最適なツール

Charles Proxyの代替に最適なツール

Charles Proxy は 2000 年代半ばから開発者のマシンに定着してきました。Charles の料金ページによれば、$50 の買い切りライセンスで Windows、macOS、Linux(さらに iOS アプリ)向けのデバッグプロキシを購入できます。このプロキシは、マシンから出ていくすべてのリクエストを記録し、SSL プロキシで HTTPS を復号し、接続をスロットリングし、Rewrite や Map Local といったツールでレスポンスを偽装・書き換えます。Charles Proxy の代替を探しているなら、まず「その多くの用途のうち、自分が実際に使っているのはどれか」を問うべきです。それらは 2 つのカテゴリに分かれ、それぞれ異なる代替を必要とするからです。

今すぐ Apidog を試す

先に結論を言いましょう。自分が制御していないトラフィック(サードパーティアプリ、SDK、証明書ピンニングを施したモバイルクライアント)をキャプチャするために Charles を使っているなら、代替は別のキャプチャプロキシです。mitmproxy、Proxyman、HTTP Toolkit、Fiddler などがあり、以下で比較します。しかし、ほとんどの API 開発者と同様に、API 作業の回避策として Charles を使っているなら(自分の API のレスポンスを覗き見る、Map Local でレスポンスを偽装してフロントエンドの開発を進められるようにする、バグが現れるまでリクエストを再送する)、より良い代替は別のプロキシではありません。Apidog です。専用設計の API プラットフォームであり、同じ作業がドキュメント化されたエンドポイント、スマートモックサーバー、再現可能なテストに変わり、最大 4 ユーザーまで無料で使えます。本記事では両方の道を扱い、どのツールがどの作業に適しているかを率直に述べます。

Charles とは何か、いくらかかるか

Charles は man-in-the-middle(MITM)デバッグプロキシです。デバイスやアプリのトラフィックをここ経由にし、ルート証明書をインストールすると、通信路上のすべてが見えます。日々の価値の源泉はドキュメント化されたツールセットです。

  • SSL プロキシは HTTPS トラフィックを復号し、リクエストとレスポンスの本文を読めるようにします。
  • スロットリングは遅い、あるいは損失のあるネットワークをシミュレートし、悪い接続でアプリがどう振る舞うかを確認できます。
  • ブレークポイントはリクエストやレスポンスを途中で止め、手動で編集できます。
  • Rewrite はトラフィックが通過する際にヘッダー、本文、URL を自動で変更するルールを適用します。
  • Map Local は実際のサーバーレスポンスの代わりにディスク上のファイルを返します。Map Remote はリクエストを別のサーバーへリダイレクトします。
  • Repeat はキャプチャしたリクエストを再送します。反復と並行実行のための高度なモードもあります。

ライセンスは 1 ユーザーあたり $50 の買い切りです(5 席と 10 席でボリュームディスカウント、サイトライセンスは $400)。30 日間の無料トライアル付きです。サブスクリプションではないので、人々は 10 年も使い続けます。そこに問題はありません。問題は、プロキシにできないこと、そしてその不足を補うために Charles に費やされている時間の量です。

代替を決める問い

1 週間、Charles で実際に何をしているか観察してみてください。2 つのパターンが見えてきます。

キャプチャ作業:自分が観察するが所有していないトラフィックです。ドキュメント化されていない API のリバースエンジニアリング、SDK が外部に何を送信しているかの監査、リビルドできないアプリのデバッグ。これは恒久的にプロキシの領域です。どんな API クライアントもこれに取って代わりません。

偽装された API 作業:自分が両端を所有しているトラフィックです。自分のバックエンドのレスポンスをキャプチャしてペイロードを確認する(どこにもドキュメント化されていないから)。モバイルチームがまだ存在しないエンドポイントに対して開発できるよう、JSON ファイルを Map Local する(モックサーバーがないから)。エラーパスをテストするためにブレークポイントでレスポンスを編集する(それを注入するテストがないから)。これらの括弧の中身は 1 つ残らず API ツーリングの欠けたピースであり、プロキシはその場しのぎのガムテープです。チーム全体がサードパーティのトラフィックを一切検査せずに、一日中 Charles を動かしていることもあります。同じ力学が Postman のプロキシ機能も駆り立てています。Postman プロキシが何をするかとPostman Interceptor のインストールと使い方で扱っています。

Charles に費やす時間のほとんどが 2 番目のパターンなら、Charles を別のプロキシに置き換えても、より見栄えの良いガムテープを買うだけです。

API 作業の答え:Apidog

Apidog は 50 万人を超える開発者が使う API 開発プラットフォームです。設計、デバッグ、テスト、モック、ドキュメントを、1 つのスペックで駆動する 1 つのアプリで行います。範囲を明確にしておくと、Apidog はトラフィックスニファーではありません。他のアプリのパケットをキャプチャすることはできません。それがあなたの仕事なら、以下のキャプチャツールへ進んでください(あるいはパケットキャプチャツールと Apidog がどこに位置するかのまとめをご覧ください)。Apidog が行うのは、Charles 利用のうち API 作業の半分を不要にすることです。各回避策が本物の機能になるからです。

  1. 「ペイロードを見るために自分のレスポンスをキャプチャする」がドキュメント化されたエンドポイントになります。 Apidog のクライアントでリクエストを送信し、スキーマとともに保存すれば、ペイロードの形はチーム全体に見えるインタラクティブなドキュメントになり、誰か 1 人のセッションウィンドウに閉じ込められません。
  2. Map Local がスマートモックサーバーになります。 ディスク上の JSON ファイルを手で編集し、デバイスをノート PC 経由にする代わりに、Apidog はエンドポイントが定義された瞬間から URL でスキーマベースのモックレスポンスを返します。チームの誰もがモック URL にアクセスでき、誰もルート証明書をインストールする必要がありません。
  3. ブレークポイントと編集がテストシナリオになります。 エラーパスを確認するためにレスポンスを手で編集するのは 1 回限りです。エラーパスをアサートする Apidog のテストシナリオは、Apidog CLI を通じてコミットのたびに実行されます。
  4. Repeat がランナーになります。 バリエーションを変えてリクエストを再送することこそ、コレクション、環境、データ駆動のテストケースの役割です。

これらすべて、無制限のモックとテスト実行を含め、最大 4 ユーザーまで無料プランで利用できます。有料プランは 1 ユーザー月額 $9 からです。

Map Local からスマートモックへの移行を具体的に

これが日常業務を最も変える切り替えです。Charles の設定で /api/v2/orders をディスク上の orders-fake.json にマッピングし、iOS チームがバックエンドの出荷前に注文画面を開発できるようにしているとします。

  1. Apidog でエンドポイントを定義します。 GET /api/v2/orders を作成し、レスポンス例として orders-fake.json を貼り付けます。さらに良いのは、レスポンススキーマを定義することです(Apidog はワンクリックで JSON からスキーマを生成します)。
  2. モック URL が即座に存在します。 スマートモックはスキーマを読み取り、ルールを書かなくてもリアルな値(名前に見える名前、日付に見える日付)を返します。1 つの静的ファイルが、多様で妥当なデータになります。
  3. アプリをモックのベース URL に向けます。 iOS ビルドはモックサーバー URL を開発用 API ホストとして使います。デバイス上のプロキシも、証明書のインストールも、「Dana のノート PC がオフィスの Wi-Fi につながっているときだけ動く」もありません。
  4. 実際のバックエンドが出荷されたら、環境を切り替えます。 エンドポイント定義はそのまま残り、テスト対象のコントラクトになり、ドキュメントはずっと公開されていたことになります。

本質的な違い:Map Local はマシンごとの小技で、Charles セッションとともに消えます。モックはそれを超えて生き残る共有インフラです。

真のキャプチャ作業のために:正直なプロキシ候補リスト

自分が所有していないトラフィックを検査する作業なら、プロキシを選びましょう。一行の適合メモです。

  • mitmproxy:無料、オープンソース(MIT)、コンソール、Web、Python スクリプティングのインターフェース付き。「無料」と「自動化可能」が GUI の洗練より重要なときの既定の答えです。
  • Proxyman:macOS でのネイティブアプリ体験(iOS、Android、Windows、Linux 版あり)、フリーミアム。Apple 中心のチームにとって最も近い Charles の同種アップグレードで、独自の Map Local とブレークポイントを備えています。
  • HTTP Toolkit:オープンソースで無料のコアを備え、Windows、macOS、Linux 対応。特定のブラウザやターミナルをワンクリックでインターセプトする機能は、限定的なデバッグにおいてシステム全体のプロキシより優れています。
  • Fiddler:長く続く Windows の名前。Fiddler Everywhere はそのクロスプラットフォームでサブスクリプションベースの後継です。検討しているなら、同じ正直な範囲設定で最高の Fiddler 代替を書いています。

多くのチームにとって理にかなった最終形はペアです。API ライフサイクル用の Apidog と、たまのキャプチャ作業用の mitmproxy(無料)。

Charles Proxy 対 Apidog の早見表

Charles Proxy vs Apidog comparison

Charles Proxy Apidog
カテゴリ MITM デバッグプロキシ API 開発プラットフォーム
価格 1 ユーザー $50 買い切り 最大 4 ユーザー無料、有料は 1 ユーザー月額 $9 から
サードパーティトラフィックのキャプチャ 可(中核機能) 不可
SSL プロキシ / 復号 可、ルート証明書経由 該当なし(両端を自分が所有)
ネットワークスロットリング 可 不可(デバイス単位のスロットリングにはプロキシを併用)
レスポンスの偽装 Map Local / Rewrite、マシンごと スマートモックサーバー、共有 URL、スキーマベース
通信中のリクエスト編集 ブレークポイント、手動 スクリプトによる前後処理、再現可能
リクエストの再送 Repeat / Repeat Advanced コレクション、ランナー、データ駆動ケース
API ドキュメント なし 公開されたインタラクティブドキュメント
自動テスト / CI なし テストシナリオ + CI での CLI
チーム共有 セッションファイル クラウドワークスペース、リアルタイム同期
モバイルキャプチャ 可、iOS アプリ含む 不可

用語について一つ注記すると、「プロキシ」はこの会話のあらゆる層で異なる意味を持ちます。検索が混乱しているなら、API プロキシ対 API ゲートウェイの解説が整理してくれます。

コスト計算を正直に

Charles の $50 買い切りは、何年もかけて償却すればほぼ無料であり、Apidog が定価勝負で Charles に勝つと装うのは、あなたの電卓に失礼です。比較すべきはライセンスではなく、その周りのワークフローです。Charles 中心の API ワークフローには隠れた項目があります。スクリーンショットで文書化されたペイロード、1 台のノート PC にしか存在しないモックデータ、手動でテストされて二度と実行されないエラーパス、新しいチームメイトが毎回 wiki ページから組み直すプロキシ設定。Apidog の無料プランはそれらを共有ドキュメント、ホストされたモック、CI テストに置き換え、4 人のチームなら $0 です。別の API クライアントにも料金を払っているなら、統合による計算はさらに良くなります。その比較は最高の Postman 代替をご覧ください。

Charles が依然として理にかなうとき

作業が本当に通信路に関するものであるなら、Charles(あるいは同等品)を保持しましょう。サードパーティ SDK のトラフィック監査、リビルドできないアプリのデバッグ、モバイルでの証明書ピンニング回避策への取り組み、悪いネットワークのバグを再現するためのデバイス全体のスロットリング。そこではプロキシが適切なツールであり、$50 の買い切りは妥当な価格です。Apidog への切り替えは、チームメイトが最初にモックを必要としたとき、ペイロードの質問にキャプチャセッションではなくドキュメントで答えられたとき、そしてエラーパスが手編集のレスポンスではなくテストになったときに報われます。

よくある質問

Charles Proxy は無料ですか?

いいえ。30 日間の無料トライアルがあり、その後は 1 ユーザー $50 の買い切りライセンスで、5 席からボリュームディスカウント、サイトライセンスは $400 です。Apidog は最大 4 ユーザーまで無料ですが、Charles のキャプチャ側ではなく API 作業側を置き換えます。無料のキャプチャなら mitmproxy が標準的な答えで、パケットキャプチャツールまとめがこの分野を比較しています。

Apidog は Charles のようにネットワークトラフィックをキャプチャできますか?

いいえ、そう装うことはしません。Apidog に MITM キャプチャはありません。自分で定義またはインポートした API を扱います。Apidog が置き換えるのは、自分が両端を所有している Charles の使い方です。自分の API のレスポンスを検査すること、Map Local でレスポンスを偽装すること、リクエストを再送すること。そのワークフローにとっては専用設計の住処であり、最高の Fiddler 代替を同じように範囲設定したのと同じです。

Apidog では Map Local と Rewrite を何が置き換えますか?

スマートモックサーバーです。レスポンススキーマとともにエンドポイントを定義すれば、Apidog は共有 URL から即座にリアルなモックデータを返します。ローカルファイルなし、マシンごとのプロキシルールなし、テストデバイス上のルート証明書なし。カスタムの期待値で、特定の固定ペイロードが必要なケースにも対応します。Map Local がするのと同じ仕事を、あなたのマシンでしか動かない部分を除いて行います。

最高の無料 Charles Proxy 代替は何ですか?

2 つの作業に 2 つの答えがあります。トラフィックキャプチャには mitmproxy。MIT ライセンスで、Python でスクリプト可能、Web UI があります。ほとんどの開発者が実際に Charles 経由で行っている API デバッグ、モック、テストには、Apidog の無料プランです。リクエストクライアント、スマートモック、ドキュメント、そして Apidog CLI 経由の CI 実行を最大 4 ユーザーまで含みます。

Apidog はモバイル API 開発で使えますか?

API 側なら、はい。iOS や Android の開発ビルドを Apidog のモックサーバー URL に向ければ、デバイス上でプロキシや証明書の設定なしにリアルなレスポンスが得られます。モバイルアプリのライブトラフィックをキャプチャする場合(特に証明書ピンニングが絡む場合)は、キャプチャプロキシを保持してください。Charles の iOS アプリと Proxyman の両方がその役割を担います。

API 作業は API プラットフォームへ

1 週間の Charles セッションを監査し、それから API 作業を、回避策でなくなる場所へ移しましょう。何度も検査しているエンドポイントを定義し、フロントエンドには Map Local ルールの代わりにモック URL を渡し、ブレークポイントでの編集を CI で実行されるテストに変えましょう。Apidog をダウンロードするか、ブラウザで始めてください。4 人のチームなら無料で、最初のモックサーバーはスキーマ 1 つ分の距離にあります。

Top comments (0)