コンテンツにスキップ

httptap

httptap

PyPI Python Versions CI Coverage

httptap は、HTTP リクエストをあらゆる意味のあるフェーズ(DNS、TCP 接続、TLS ハンドシェイク、サーバー待機、ボディ転送)に分解し、その結果をタイムラインテーブル、コンパクトなサマリー、またはマシンで扱いやすいメトリクスとして描画する Rich 製の CLI です。対話的なトラブルシューティング、リグレッション分析、パフォーマンスのベースライン記録のために設計されています。

特別オファー

🎁 GitKraken Pro を 50% 割引

GitKraken Client、VS Code 向け GitLens、そして強力な CLI ツールをまとめて、あらゆるリポジトリのワークフローを加速しましょう。

httptap コミュニティ限定

ハイライト

  • フェーズごとのタイミング計測 – httpcore のトレースフックから構築した精密な計測(低レベルのデータが利用できない場合には妥当なフォールバックを使用)
  • すべての HTTP メソッド – GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS をリクエストボディ対応でサポート
  • リクエストボディ対応 – JSON、XML、または任意のデータをインラインまたはファイルから送信し、Content-Type を自動検出
  • IPv4/IPv6 対応 – リゾルバと TLS インスペクタがアドレスとそのファミリの両方を報告。-4/-6 で名前解決を一方のファミリに限定でき、--resolve HOST:PORT:ADDR で元の Host ヘッダーと TLS SNI を保ったままホストを特定のアドレスに固定可能
  • TLS インサイト – 証明書の CN、SAN、発行者、シリアル、有効期間と有効期限までのカウントダウン、加えて暗号スイートとプロトコルバージョンを、ライブ接続から自動的に取得(追加のハンドシェイクは不要)
  • 複数の出力モード – リッチなウォーターフォールビュー、コンパクトな 1 行サマリー、またはスクリプト向けの --metrics-only
  • JSON エクスポート – 後処理のためにステップの全データ(リダイレクトチェーンを含む)を保存、または --json - で stdout にストリーム出力
  • HAR エクスポート – --har PATH でリクエストチェーンを、ブラウザーの DevTools や HAR ビューアーで開ける HAR 1.2 アーカイブとして書き出し
  • Prometheus と OpenTelemetry へのエクスポート – --prometheus PATH で node_exporter のテキストファイルを書き出し、--otlp ENDPOINT でフェーズごとのスパンを OTLP/HTTP コレクターへ送信(httptap[otel] が必要)
  • SLO しきい値チェック – --slo と --slo-file で、フェーズごとのレイテンシ予算に基づいて CI ジョブ、cron プローブ、readiness チェックを判定
  • スクリプトで扱いやすい終了コード – -f/--fail は HTTP 4xx/5xx レスポンスで 22 で終了し、SLO 違反、ネットワークエラー、リダイレクト上限にもそれぞれ専用の終了コードを用意
  • 拡張可能 – DNS、TLS、タイミング、可視化、エクスポート向けのクリーンな Protocol インターフェースにより、独自の挙動を差し込み可能

クイックサンプル

GET リクエスト:

httptap https://httpbin.io/get

JSON データ付きの POST:

httptap --data '{"name": "John"}' https://httpbin.io/post

サンプル出力

主な機能

リッチなウォーターフォールの可視化

Rich を活用した美しいターミナル UI で、HTTP リクエストの各フェーズの詳細なタイミングの内訳を表示します。

複数の出力形式

  • リッチモード(デフォルト): 色付きで整形された美しいウォーターフォールテーブル
  • コンパクトモード(--compact): ログに適した 1 行サマリー
  • メトリクスモード(--metrics-only): スクリプトや自動化のための生のメトリクス
  • JSON エクスポート(--json): リダイレクトチェーンを含むリクエストの全データを、ファイルまたは --json - で stdout に出力
  • HAR エクスポート(--har): ブラウザーの DevTools や HAR ビューアー向けの HTTP Archive 1.2 ファイルを、ファイルまたは --har - で stdout に出力
  • Prometheus テキストファイル(--prometheus): node_exporter の textfile コレクター向けのフェーズごとのゲージ
  • OpenTelemetry トレース(--otlp): リクエストごとに 1 つのスパンとフェーズごとの子スパンを OTLP/HTTP コレクターへ送信

高度なネットワークインサイト

  • IP ファミリ検出(IPv4/IPv6)付きの名前解決のタイミング
  • TCP 接続確立のタイミング
  • 証明書情報付きの TLS ハンドシェイク分析
  • 最初のバイトまでの時間(TTFB)の計測
  • レスポンスボディ転送のタイミング

リダイレクトチェーンのサポート

--follow フラグで HTTP のリダイレクトを追跡し、チェーンの各ステップのタイミングの内訳を確認できます。

次のステップ

動作要件

  • Python 3.11-3.15
  • macOS、Linux、または Windows
  • 標準的なネットワーク機能以外にシステム依存関係は不要

ライセンス

Apache License 2.0 © Sergei Ozeranskii

つながる

実務経験からの知見を得るには、作者をフォローしてください:

  • Telegram チャンネル - 開発、DevOps、アーキテクチャ、セキュリティ。誇張なしの実体験と実践的な知見。
  • GitHub - オープンソースプロジェクトとコントリビューション

謝辞

素晴らしいライブラリの肩の上に築かれています:

  • httpx - モダンな HTTP クライアント
  • httpcore - 低レベルの HTTP プロトコル実装
  • cryptography - X.509 証明書の解析
  • Rich - 美しいターミナル整形