ToolConvoyToolConvoyv2.6
DEV

HAR to cURL — HAR ファイルを cURL、fetch、Python、Go コードに変換

HAR (HTTP Archive) ファイルを cURL コマンド、または fetch、Python、Go、Node.js のコードに変換します。完全にブラウザ内で動作。アップロード不要、制限なし。

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件
DEV

HAR to cURL / fetch / Python / Go / Node

Convert HAR (HTTP Archive) files to runnable code in 5 languages. 100% local — your traffic never leaves the browser.

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件
Loading…
広告
広告

HAR(HTTP Archive)は、ブラウザから HTTP トラフィックをキャプチャするための標準フォーマットです。2012 年以降、すべてのブラウザは Network タブから HAR ファイルをエクスポートでき、そのフォーマットは十分に文書化された JSON で、ページが行ったすべてのリクエスト — method、URL、headers、cookies、query parameters、request body、response status、response headers、response body、timing — を記録します。主な用途はデバッグです。プロダクション環境では API 呼び出しが失敗するけれど開発環境では動く、という場合や、サードパーティの API がテスト環境でドキュメント通りの挙動をしない、といったケースでは、HAR をエクスポートして実際の HTTP トラフィックを精査することが、相違点を見つける最も速い手段です。本ツールはその HAR を 5 言語の実行可能コードに変換し、キャプチャしたリクエストをコントロールされた環境でそのままリプレイできるようにします。

HAR ファイルについて意外と見落とされがちなのは、それがどれだけの情報を露出するかという点です。HAR には、録画中に送信されたすべてのヘッダー、すべての Cookie、すべての Authorization トークンが記録されます。銀行サイト、ソーシャルネットワーク、社内管理ツールにログインした状態で HAR を録画したなら、その HAR にはセッションの認証情報が含まれています。HAR を公開で共有することは、ログイン済みセッションを公開で共有するのと同じです。本ツールのリクエスト詳細パネルでは、変換前にヘッダーを編集できます — 共有する必要のある HAR については、変換後のコードをエクスポートする前に Authorization、Cookie、そしてあらゆるカスタム認証ヘッダーを必ず黒塗りしてください。HAR ファイルそのものを共有する場合にも、同じ注意が必要です。

最後に使い分けの目安を示します。バグ再現のために単一リクエストをリプレイすることが目的なら、リストからそのリクエストを選び、cURL を選んで、出力をターミナルで実行してください。テストフィクスチャを書くことが目的なら、fetch または Python を選び、出力をテストファイルに貼り付けて適切なアサーションを足してください。ログイン・ユーザーデータ取得・ログアウトのような複数ステップのフローを理解することが目的なら、すべてのリクエストを選んで一連のシーケンスとして変換してください — 出力は元の順序を保ったままになるので、フローをステップごとにリプレイできます。本ツールは数秒で実行可能なコードを生成します。次の一歩は、通常は皆さまの具体的なユースケースに応じて、適切なアサーションとエラーハンドリングを追加することです。

広告

使い方

  1. HAR ファイルをドロップする

    .har ファイルをドロップゾーンにドラッグするか、HAR JSON を入力欄に貼り付けてください。HAR とは HTTP Archive 形式のことで、Chrome、Firefox、Edge、Safari はすべてネットワークトレースを HAR としてエクスポートできます。ツールが JSON をパースしてリクエスト一覧を表示します。

  2. 変換するリクエストを選ぶ

    リクエスト一覧には HAR 内のすべての HTTP 呼び出しが並びます — method、URL、status、size、time。1 件でも複数でも、すべてのリクエストでも選べます。HAR がログイン・データ取得・ログアウトのような一連のユーザー操作をキャプチャしている場合は、複数選択が正解です。

  3. 出力言語を選ぶ

    cURL(シェルスクリプトにおける HTTP の共通語)、fetch(ブラウザ/Node.js)、Python `requests`、Go `net/http`、もしくは任意の組み合わせを選べます。出力はリクエストごとに 1 つのコードブロックとなり、そのまま貼り付けて使えます。

よくある質問

ブラウザから HAR ファイルを取得するには?

DevTools(F12 または Cmd+Opt+I)を開き、Network タブへ移動して、キャプチャしたいリクエストを再現し、リスト内の任意のリクエストを右クリックして「Save all as HAR with content」(Chrome)または「Save All As HAR」(Firefox)を選択します。ファイルはプレーンな JSON です。

HAR フォーマットには何が含まれていますか?

HAR ファイルは `log` オブジェクトを含む JSON ドキュメントで、`log` の中に `entries` 配列があります。各 entry には request(method、URL、headers、cookies、queryString、postData)と response(status、headers、content、timing)が含まれます。Authorization のような機微なヘッダーもこのファイルに含まれます。

変換前にリクエストを編集できますか?

はい — リクエスト詳細パネルにはすべての headers、cookies、body フィールドが表示されます。フィールドをインラインで編集可能で、変換には編集後の値が使われ、元の HAR の値ではありません。Authorization ヘッダーを黒塗りしたり、host をテストサーバーに置き換えたりする際に便利です。

出力にはレスポンス処理も含まれますか?

出力されるのはリクエストのコードであり、完全なリクエスト・レスポンスのハンドラーではありません。cURL の場合、レスポンスは stdout に出力されます。fetch の場合、出力は response.json() やエラーハンドリングを含まない単一の呼び出しです — 必要に応じてご自分のコードに追加してください。

数千件の entry を含む HAR も変換できますか?

はい — パーサーはやや大きな HAR ファイル(数 MB 程度)を問題なく扱えます。変換自体は entry 単位で行われるため、全件選択して変換しても出力が長くなるだけです。非常に大きな HAR ファイル(10 MB 以上)の場合、初期パース時に UI が一時的に固まることがあります。

制限事項

  • Authorization ヘッダーが露出するHAR ファイルには Authorization、Cookie、API key を含むすべてのリクエストヘッダーが含まれます。ログイン済みのブラウザセッションから HAR を保存すると、セッション認証情報がそのまま記録されます。HAR ファイルはパスワードと同じ扱いをしてください — 公開共有は避け、共有前に必ずサニタイズしましょう。
  • WebSocket の entry は扱えないHAR の仕様には WebSocket フレームが含まれていますが、ブラウザのエクスポーターがこれを埋めることはほぼありません。本ツールは HTTP/HTTPS のリクエストに焦点を当てています。WebSocket のトレースについては、ブラウザの WebSocket インスペクター、または Wireshark のような専用ツールをご利用ください。
  • バイナリの body は復元されないHAR 内のリクエスト/レスポンスの body は、バイナリの場合は base64 エンコードされています。本ツールは base64 文字列をそのまま出力するだけで、元のファイルへは復元しません。バイナリのダウンロードが必要であれば、HAR を変換するのではなく、ブラウザから直接レスポンスを保存してください。

プラットフォーム別の注意点

macOS
Safari の Web インスペクターは Network タブから HAR をエクスポートできます。ブラウザ版ツールは Safari 由来の HAR もそのまま受け付けます(フォーマットは Chrome と同一です)。コマンドラインで作業したい場合は、本ツールのバックエンドにある同じライブラリが `curlconverter` という npm パッケージとして公開されています。
Windows
Edge の DevTools は Chrome と同じフォーマットで HAR をエクスポートします。ブラウザ版ツールは Edge 由来の HAR をそのまま受け付け、修正は不要です。コマンドラインで作業したい場合は、HAR を jq で加工して cURL 生成スクリプトにパイプしてください。
Linux
Firefox の DevTools は Network タブから HAR をエクスポートできます。ブラウザ版ツールは Firefox 由来の HAR を受け付けます。コマンドラインで作業したい場合は、`har-to-curl`(npm の CLI)を使えばブラウザなしで同じ変換ができます:`npx har-to-curl input.har > output.sh`。
CLI
本ツールのバックエンドにある同じライブラリが、npm では `har-to-curl` および `curlconverter` として公開されており、CLI モードも用意されています。ビルドスクリプトやテストフィクスチャへの組み込み、保存済み HAR ファイルの一括変換に便利です。
Web
完全にクライアントサイドで動作します。ページ読み込み後はオフラインでも動作可能。HAR ファイルはメモリ内でパースされ、サーバーには一切送信されません。セッション認証情報を含む HAR でも安心して使えますが、「ブラウザにシークレットを貼り付けるのは避けるべき」という一般的な注意は引き続き当てはまります。
広告
広告