DEV

Telerik Fiddler AutoResponderによるHTTP(S)レスポンスの作成方法

10月 30, 2021

fiddler
Fiddler AutoResponder機能によるHTTP(S)レスポンスの作成方法

ここでは、Fiddler Classic(以下、Fiddler)のAutoResponder機能の使い方について、詳細に説明します。

Fiddlerとはそもそも何か、また、Fiddler全般の使い方に関しては、以下の記事をご確認ください:

FiddlerのAutoResponder機能を使用すると、「指定したURLパターンを持つHTTP(S)リクエスト」に対して、Fiddlerが「リクエストへの応答かActionを実行」します。

AutoResponder機能では、「指定したURLパターンを持つHTTP(S)リクエスト」と「応答/Action」を1つのルールとして定義・管理します。

本機能を使用することにより、バックエンドがなくても、必要なHTTP(S)レスポンスをAutoResponder機能で定義・作成して、アプリに応答できます。

AutoResponder機能は、以下の様なケースで力を発揮します:

  • Webアプリのフロントエンド側の単体テスト
  • Webアプリの不具合の再現
  • 本番稼働中のWebアプリのJavaScriptファイルの一部をローカルのものと置き換えて、動作確認

FiddlerのComposer機能がバックエンド側の確認用であれば、AutoResponder機能はフロントエンド側の確認用といえます。

AutoResponder機能について、詳細を見ていきましょう。

AutoResponder機能の画面構成と使い方概要

Fiddlerは、デバッグツールとして誕生した背景もあることから、最初はどう使えばよいのか分からないことが多いツールです。

Composer機能は直感的に分かるのですが、AutoResponder機能は…(笑)。

本章では、そんなAutoResponder機能の画面構成と使い方の概要を説明します。AutoResponder機能の設定とルールの詳細は、次章以降で説明します。

画面構成

AutoResponder機能は、以下画面の緑枠、青枠、赤枠の大きく3つに分けることができます。それぞれの概要は以下の通りです:

  • 緑:キャプチャしたHTTP(S)リクエスト一覧
  • 青:AutoResponder機能の設定
  • 赤:AutoResponder機能のルール

AutoResponder機能の画像を以下に示します:

AutoResponder機能の画面構成
AutoResponder機能の画面構成

使い方概要

ここでは、基本的な操作方法を説明します。

ルールは、以下の手順で作成・有効化します(画像にも手順を記載しています):

  1. 「AutoResponder」タブを選択
  2. 「Enables Rules」チェックボックスと「Accept all CONNECTS」チェックボックスを選択
    「Enables Rules」チェックボックスにチェックが入っていると、Fiddlerの自動応答機能が有効となる
  3. 「Add Rule」ボタンで、自動応答するルール(条件)を追加
  4. 「Rule Editor」で自動応答するルール(条件)の詳細を設定
    最初のプルダウンには、合致するHTTP(S)リクエストを設定。2つ目のプルダウンでは、応答内容の詳細を設定。以下の画像では、HTTP(S)リクエストが「sandbox」に合致する場合、「200_SimpleHTML.dat」を応答するルールとなっている
  5. 「Save」ボタンで、「Rule Editor」の内容を保存
    保存した結果は、画面下部の一覧に表示(以下画像は、登録済の状態)。一覧の「左側のチェックボックス」が選択されているものが有効となる
ルールの有効化・作成手順
ルールの有効化・作成手順

AutoResponder機能の設定

ここでは、AutoResponder機能で設定できる項目を説明します。

設定項目

AutoResponder機能には、4つの設定項目があります。

Enable Rules(ルールの有効化/無効化)

AutoResponder機能を有効にします。

有効となっている場合は「上部のバーが緑色」となり、無効となっている場合は、「上部のバーが灰色」となります。

AutoResponder Enabled
Enable Rules有効化した状態
AutoResponder Disabled
Enable Rules無効化した状態

Accept all CONNECTs(CONNECTメソッドの受入)

CONNECTメソッドとは、HTTPS通信時に必要なトンネリングを開始する時に使用します。AutoResponder機能で、SSL/TLSを使用する場合は、チェックを入れておきましょう。よく分からない場合は、チェックを入れておけばOKです。

Unmatched requests passthrough(ルールに合致しないリクエストはスルー)

ルールに合致しない場合は、リクエストを対象のサーバに送り、その結果を応答します。ルールに合致したものは、Fiddlerが応答を返します。HTMLだけFiddlerで応答し、他のJavaScriptファイルやCSSファイルは、サーバから応答を返したい場合に使用します。

Enable Latency(レイテンシの有効化/無効化)

レイテンシを有効にします。レイテンシとは、リクエストを送信してから、応答が返ってくるまでの間の遅延時間のことです。レイテンシは、ミリ秒単位で指定できます。指定方法は、「AutoResponder機能のルール→ルール一覧」を参照ください。

AutoResponder機能のルール

ここでは、AutoResponder機能で作成できるルール及び、ルールの管理方法を説明します。

Rule Editorを使用したルールの作成方法

Rule Editorは、「URLパターン」と「応答/Action」の組み合わせを1つのルールとして定義するために使用します。AutoResponder機能では、ルール単位で有効/無効を設定できます。

ルールは、画面左上の「Add Rule」ボタンを選択後、「URLパターン」と「応答/Action」を定義することにより、追加できます:

  • URLパターン:「Request URL Pattern」
    HTTP(S)リクエストのパターンを指定
  • 応答/Action:「Local file to return or *Action to execute」
    URLパターンに合致したHTTP(S)リクエストに対する「HTTP(S)レスポンス内容」か「実行するFiddler Action」を指定。Fiddlerが他のセッションでキャプチャした「サーバからのHTTP(S)レスポンス」を応答することも可能
Rule Editorとルール一覧
Rule Editorとルール一覧

各テキストボックスやボタンの詳細は、以下の通りです:

「URLパターン」テキストボックス(Request URL Pattern)

「URLパターンで入力した内容に合致する/合致しない」URLをレスポンス対象とします。以下のURLパターンは、指定可能なものの一部となります:

URLパターン形式説明
文字列入力した文字列に部分一致するURL。大文字、小文字を区別しません
regex:文字列入力した正規表現に合致するURL
not:文字列入力した文字列に合致しないURL
EXACT:文字列入力した文字列に完全一致するURL。大文字、小文字を区別する
URLWithBody 文字列入力したURL、HTTP BODY内に指定した文字列が合致するHTTP(S)リクエスト。
例:「URLWithBody:Upload.php regex:^.BodyText.$」。
Upload.phpのHTTP BODY内に「BodyText」が存在すれば一致
method入力したHTTPメソッドに合致するURL。
「GET」、「POST」、「OPTIONS」等を指定可
flagFiddler内で管理しているSessionFlagsを指定。
SessionFlagsで指定できる内容はFiddler公式マニュアルに記載がある
HeaderHTTP HEADER内に入力した文字列が存在する
URLパターン テキストボックスで指定できる形式一覧

上記URLパターンは、1つのルール内で組み合わせて使用できます(「regexとnotの組み合わせ」、「methodと文字列の組み合わせ」など)。

URLパターン形式が分からない時は、プルダウンを選択すると入力形式の一覧が表示されます。Fiddlerの公式サイトに記載のないものもあります:

「URLパターン」の入力形式
「URLパターン」の入力形式

「応答/Action」テキストボックス(Local file to return or *Action to execute)

URLパターンに合致した「リクエストへの応答」か「*Action(予め定義されたアクション)」を指定します。応答は、以下の形式で指定できます(指定可能なものの一部となります):

Non-finalアクション/Finalアクションの違いは、後続のルールを実行するか/しないかです。Non-finalアクションは、実行後、ルール一覧にある一つ下のルールを実行します。Finalアクションを実行すると、その時点で処理は終了します。

応答形式説明Non-final アクション/Final アクション
ローカルファイル「Fiddlerインストールディレクトリ\ResponseTemplates」以下のファイルの内容を応答するFinalアクション
URL入力したURLの応答を返す。Fiddlerがブラウザに変わり、URLへアクセスして、その応答を返すFinalアクション
セッションFiddlerがキャプチャしたセッションの応答を返す。キャプチャ済のセッションからドラッグアンドドロップでルールを作成するFinal Action
*bpuリクエストをFiddlerが受信した時にブレークする。
リクエスト内容をこちらで修正後、サーバに送信する
Non-finalアクション
*bpafterリクエストをサーバに送信し、レスポンスが戻ってきた時にFiddlerでブレークする。応答をクライアントに戻す前に修正できるNon-finalアクション
*delay:####次のルールを処理するまでに、指定ミリ秒数待機するNon-finalアクション
*header:Name=Valueリクエストヘッダに指定したName=Valueを追加するNon-finalアクション
*flag:Name=ValueFiddlerが認識するセッションフラグを追加するす。通常は、セッションフラグをセットするValueは重要ではなく、Nameの有無でFiddlerの挙動が変わる。Non-finalアクション
*CORSPreflightAllowCORSが許可されている旨のレスポンスを返すFinalアクション
*resetTCP/IPにおけるRSTパケットをクライアントにレスポンスして、接続を強制終了するFinalアクション
*dropクライアントにはレスポンスせずに、接続を閉じるFinalアクション
*exitルールの処理をこの時点で終わりにしますFinalアクション
「応答/Action」テキストボックスで指定できる形式一覧

指定する 「リクエストへの応答」か「*Action(予め定義されたアクション)」 が分からない場合は、「URLパターン」テキストボックス同様、プルダウンを選択すると、入力形式の一覧が表示されます(指定可能なものの一部となります):

「応答/Action」の入力形式
「応答/Action」の入力形式

「Match only once」チェックボックス

「Match only once」チェックボックスにチェックを入れて、ルールを作成すると、該当ルールに合致するHTTP(S)リクエストが複数回Fiddlerに届いても、1度しか該当ルールを実行しません。

「Save」ボタン

「URLパターン」テキストボックス、「応答/Action」テキストボックスと「Match only once」チェックボックスの内容でルールを作成します。保存した内容は、ルールの一覧部に有効化されている状態で、表示されます。

ルール一覧

Rule Editorで作成したルール一覧を確認・修正できます。

コンテキストメニュー(ルール一覧を右クリックした際に表示されるメニュー)

ルール一覧では、定義したルールに対して、コンテキストメニューから「コメント」や「レイテンシ」の設定などができます。コンテキストメニューからできることを以下に示します:

コンテキストメニューとショートカットキー一覧
コンテキストメニューとショートカットキー一覧
コンテキストメニュー説明
Removeルールを削除する
Promoteルールを一つ上に移動する
Demoteルールを一つ下に移動する
Cloneルールをコピーする
Set Latency…ルールのレイテンシを設定する(ミリ秒)
Set Comment…ルールにコメントを設定する
Edit Response…ルールのレスポンスを修正する
Generate Fileルールをファイルに出力する
Edit File With…レスポンスファイルを選択したエディタで開く
Open URL…ルールのURLをブラウザで開く
Group選択したルールをグループ化する
UnGroup選択したルールをグループから除外する
Find…ルール検索用のダイアログボックスを表示する
Export All…ルールを全てfarxファイルとしてエクスポートする
コンテキストメニューと説明

エクスポート

コンテキストメニューより、ルール一覧上のものをすべてエクスポートできます。 エクスポートしたファイルの拡張子は、「.farx」形式となります。

インポート

エクスポートしたルールは、画面左上の「Import...」ボタンより、Fiddlerにインポートできます。他の端末で作成したルールも、「.farx」形式でエクスポートしたものであれば、インポートできます。

グループ化・グループ化解除

大量のルールを登録すると、ルール一覧がカオス状態になります。その様な時は、関連するルールをまとめるグループ化を行い、整理するとよいでしょう。

グループ化したいルールを選択した後、以下のいずれかを選択します:

  • 画面左上の「Group」ボタンを選択
  • コンテキストメニューより、「Group」を選択

以下は、グループ化した後の画面です:

グループ化した後の状態
グループ化した後の状態

グループ化を解除したい場合は、該当のグループを選択→「Ungroup」ボタンを選択するか、コンテキストメニューから「UnGroup」を選択します。

Rule Editorのその他機能

Rule Editorのその他機能を以下に示します:

「Test」リンク

「Test」リンクを選択すると、「URLパターン」確認用のダイアログボックスが開きます:

「URLパターン」とテストURLが合致した場合
「URLパターン」とテストURLが合致した場合
 「URLパターン」とテストURLが合致しない場合
「URLパターン」とテストURLが合致しない場合

ダイアログボックスの「URL Pattern」を変更して、ルールの「URLパターン」としたい場合は、「Save Changes」ボタンを選択します。

AutoResponder機能の説明は以上です。

【Fiddler関連記事一覧】

-DEV