HTTPアーカイブ形式

HTTP Archive(HAR) 形式のファイルは、HTTP リクエストと HTTP レスポンスの情報を交換するための業界標準です。HAR ファイルのコンテンツは JSON 形式で、ブラウザとウェブサイトのインタラクションを含みます。ファイル拡張子は.har が一般的です。

HARファイルは、GitLab CI/CDパイプラインの一部としてウェブAPIファズテストを実行するために使用することができます。

caution
HARファイルはウェブクライアントとウェブサーバ間で交換される情報を保存します。また、認証トークン、APIキー、セッションクッキーのような機密情報を保存することもできます。リポジトリに追加する前に、HAR ファイルの内容をレビューすることをお勧めします。

HARファイルの作成

HARファイルは手動で作成することも、ウェブセッションの録画に特化したツールを使用して作成することもできます。専用のツールを使用することをお勧めします。ただし、これらのツールで作成されたファイルが機密情報を暴露せず、安全に使用できることを確認することが重要です。

以下のツールを使用すると、ネットワークアクティビティに基づいてHARファイルを生成できます。これらのツールは、ネットワークアクティビティを自動的に記録し、HARファイルを生成します:

  1. GitLab HAR Recorder.
  2. Insomnia API クライアント.
  3. Fiddler デバッグプロキシ
  4. Safari ウェブブラウザ
  5. Chrome ウェブブラウザ。
  6. Firefox ウェブブラウザ。
caution
HAR ファイルには、認証トークン、API キー、セッション Cookie などの機密情報が含まれている可能性があります。リポジトリに追加する前に、HAR ファイルの内容をレビューすることをお勧めします。

GitLab HARレコーダー

GitLab HAR RecorderはHTTPメッセージを記録し、HTTP Archive(HAR) ファイルに保存するコマンドラインツールです。GitLab HAR Recorderの詳細はホームページをご覧ください。

GitLab HAR Recorderのインストール

前提条件:

  • Python 3.6以上のインストール。
  • Microsoft Windows の場合は、Microsoft Visual C++ 14.0もインストールする必要があります。Visual StudioDownloads ページにあるBuild Tools for Visual Studioに含まれています。
  • HAR Recorderをインストールします。

GitLab HAR Recorderをインストールします:

pip install gitlab-har-recorder --extra-index-url https://gitlab.com/api/v4/projects/22441624/packages/pypi/simple

GitLab HAR Recorderを使ってHARファイルを作成します。

  1. プロキシポートとHARファイル名を指定してレコーダーを起動します。
  2. プロキシを使用してブラウザーのアクションを完了します。
    1. プロキシが使用されていることを確認してください!
  3. レコーダーを停止してください。

HARにすべてのリクエストが含まれていることを確認するには、オンラインHARビューアなどを使用します:

Insomnia API クライアント

InsomniaAPI Client は、API の設計、記述、テストを支援する API 設計ツールです。また、Web API Fuzz Testing で使用する HAR ファイルを生成することもできます。

Insomnia API Client を使って HAR ファイルを作成します。

  1. API を定義またはインポートします。
    • Postman v2.
    • Curl。
    • OpenAPI v2、v3。
  2. 各APIコールが動作することを確認します。
    • OpenAPI 仕様をインポートした場合は、実際に動作するデータを追加します。
  3. API > インポート/エクスポートを選択します。
  4. Export Data (データのエクスポート)] > [Current Workspace (現在のワークスペース)] を選択します。
  5. HAR ファイルに含めるリクエストを選択します。
  6. エクスポートを選択します。
  7. Select Export Type] ドロップダウン リストで、[HAR – HTTP Archive Format] を選択します。
  8. To-Do を選択します。
  9. HARファイルの保存場所とファイル名を入力します。

Fiddlerデバッグプロキシ

Fiddlerはウェブデバッガツールです。HTTP と HTTP(S) のネットワークトラフィックをキャプチャし、それぞれのリクエストを調べることができます。また、リクエストとレスポンスを HAR 形式でエクスポートすることもできます。

Fiddler で HAR ファイルを作成

  1. Fiddlerのホームページにアクセスし、サインインしてください。アカウントをお持ちでない場合は、まずアカウントを作成してください。
  2. APIを呼び出すページをブラウズします。Fiddler は自動的にリクエストをキャプチャします。
  3. 1つ以上のリクエストを選択し、コンテキストメニューからExporter > Selected Sessions を選択します。
  4. 形式を選択] ドロップダウン リストで、[HTTPArchive v1.2] を選択します。
  5. ファイル名を入力し、[保存]を選択します。

Fiddlerは、エクスポートが成功したことを確認するポップアップメッセージを表示します。

サファリ・ウェブ・ブラウザ

SafariはAppleがメンテナーしているウェブブラウザです。ウェブ開発の進化に伴い、ブラウザは新しい機能をサポートしています。Safariではネットワークトラフィックを調査し、HARファイルとしてエクスポートすることができます。

SafariでHARファイルを作成

前提条件:

  • Develop メニュー項目を有効にします。
    1. Safariの環境設定を開きます。Command+, を押すか、メニューからSafari > Preferences… を選択します。
    2. 詳細設定タブを選択し、Show Develop menu item in menu bar
    3. 環境設定ウィンドウを閉じます。
  1. Web インスペクタを開きます。Option+Command+iを押すか、メニューから [開発] > [Web インスペクタを表示] を選択します。
  2. Network] タブを選択し、[Preserve Log] を選択します。
  3. APIを呼び出すページを参照します。
  4. Web Inspectorを開き、Networkタブを選択します。
  5. エクスポートするリクエストを右クリックし、[Export HAR] を選択します。
  6. ファイル名を入力し、[保存]を選択します。

Chromeウェブブラウザ

ChromeはGoogleがメンテナーをしているウェブブラウザです。ウェブ開発の進化に伴い、ブラウザは新しい機能をサポートしています。Chromeでは、ネットワークトラフィックを調査し、HARファイルとしてエクスポートすることができます。

ChromeでHARファイルを作成

  1. ChromeのコンテキストメニューからInspectを選択します。
  2. ネットワーク]タブを選択します。
  3. ログを保存]を選択します。
  4. APIを呼び出すページを参照します。
  5. 1つ以上のリクエストを選択します。
  6. 右クリックし、[すべてコンテンツ付き HAR として保存] を選択します。
  7. ファイル名を入力し、[保存]を選択します。
  8. 追加のリクエストを追加するには、それらを選択して同じファイルに保存します。

Firefox ウェブブラウザ

Firefoxは Mozilla によってメンテナーされているウェブブラウザです。ウェブ開発の進化に伴い、ブラウザは新しい機能をサポートしています。Firefox では、ネットワークトラフィックを調査し、HAR ファイルとしてエクスポートできます。

FirefoxでHARファイルを作成

  1. FirefoxのコンテキストメニューからInspectを選択します。
  2. ネットワーク]タブを選択します。
  3. APIを呼び出すページを参照します。
  4. Network] タブを確認し、要求が記録されていることを確認します。メッセージPerform a request or Reload the page to see detailed information about network activityがある場合は、[Reload] を選択してリクエストの記録を開始します。
  5. 1つ以上のリクエストを選択します。
  6. 右クリックし、[すべて HAR として保存] を選択します。
  7. ファイル名を入力し、[保存]を選択します。
  8. 追加のリクエストを追加するには、それらを選択して同じファイルに保存します。

HAR検証

HARファイルを使用する前に、機密情報が漏洩しないことを確認することが重要です。

それぞれのHARファイルについて

  • HARファイルの内容を見る
  • HARファイルの機密情報のレビュー
  • 機密情報の編集または削除

HARファイルの内容の表示

HARファイルの内容を構造的に表示できるツールで表示することをお勧めします。いくつかのHARファイルビューアーがオンラインでご利用いただけます。HARファイルをアップロードしたくない場合は、パソコンにインストールしたツールをご利用ください。HARファイルはJSON形式を使用しているため、テキストエディタで表示することもできます。

HARファイルの閲覧にお勧めのツールは以下の通りです:

HARファイルの内容のレビュー

HARファイルに以下のような内容がないか、レビュアーがレビューします:

私たちは、機密情報を編集または削除することを強くお勧めします。

以下をチェックリストとしてご利用ください。網羅的なリストではありません。

  • シークレットを探してください。例えば、アプリケーションが認証を必要とする場合、共通の場所や認証情報をチェックしてください:
    • 認証関連ヘッダ。例:クッキー、作成者。これらのヘッダには有効な情報が含まれている可能性があります。
    • 認証に関連するリクエスト。これらのリクエストのボディには、ユーザー証明書やトークンのような情報が含まれるかもしれません。
    • セッショントークン。セッショントークンはアプリケーションへのアクセスを許可します。これらのトークンの場所は様々です。ヘッダ、クエリパラメータ、ボディなどです。
  • 個人を特定できる情報を探す
    • 例えば、アプリケーションがユーザーとその個人データ(電話、名前、電子メール)のリストを取得するとします。
    • 認証情報も個人情報を含むかもしれません。

機密情報の編集または削除

HARファイルの内容レビューで見つかった機密情報を編集または削除します。HARファイルはJSONファイルで、テキストエディタで編集できます。

HARファイルを編集した後、HARファイルビューアーで開き、書式と構造が損なわれていないことを確認してください。

以下の例では、Visual Studio Codeのテキストエディタを使用して、ヘッダー内の作成者トークンを編集しています。

Authorization token edited in Visual Studio Code