
高速なマルチプローブHTTPツールキット。偵察と情報収集のためのツール。TLS、CSP、ヘッダー、技術スタック、CDNをプローブします。マッチャー、フィルター、JSON出力に対応し、自動セキュリティテストが可能です。
機能 • インストール • 使用方法 • ドキュメント • 注意事項 • Discordに参加
httpx は、retryablehttp ライブラリを使用して複数のプローブを実行できる、高速で多目的なHTTPツールキットです。スレッド数を増やしても結果の信頼性を維持するように設計されています。
httpx のインストールには go >=1.25.0 が必要です。以下のコマンドを実行してリポジトリを取得してください:
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
httpxのインストールについて詳しくは、https://docs.projectdiscovery.io/tools/httpx/install を参照してください。
| ❗ 免責事項 |
|---|
| このプロジェクトは活発に開発中です。リリース時には互換性を壊す変更が発生する可能性があります。アップデート前に変更履歴を確認してください。 |
| このプロジェクトは主にスタンドアロンCLIツールとして構築されました。サービスとして実行するとセキュリティリスクが生じる可能性があります。 注意して使用し、追加のセキュリティ対策を講じることを推奨します。 |
httpx -h
これによりツールのヘルプが表示されます。以下はサポートされているすべてのスイッチです。
httpx は、retryablehttp ライブラリを使用して複数のプローブを実行できる高速で多目的なHTTPツールキットです。
使用方法:
./httpx [フラグ]
フラグ:
INPUT:
-l, -list string 処理するホストのリストを含む入力ファイル
-rr, -request string 生のリクエストを含むファイル
-u, -target string[] プローブするターゲットホストを入力
-im, -input-mode string 入力ファイルのモード (burp)
PROBES:
-sc, -status-code 応答のステータスコードを表示
-cl, -content-length 応答のコンテンツ長を表示
-ct, -content-type 応答のコンテンツタイプを表示
-location 応答のリダイレクト先を表示
-favicon '/favicon.ico' ファイルの mmh3 ハッシュを表示
-hash string 応答本文のハッシュを表示 (対応: md5,mmh3,simhash,sha1,sha256,sha512)
-jarm JARM フィンガープリントハッシュを表示
-rt, -response-time 応答時間を表示
-lc, -line-count 応答本文の行数を表示
-wc, -word-count 応答本文の単語数を表示
-title ページタイトルを表示
-bp, -body-preview 応答本文の最初のN文字を表示 (デフォルト 100)
-server, -web-server サーバー名を表示
-td, -tech-detect Wappalyzerデータセットに基づいて使用中のテクノロジーを表示
-cff, -custom-fingerprint-file string テクノロジー検出用のカスタムフィンガープリントファイルのパス
-method HTTPリクエストメソッドを表示
-ws, -websocket WebSocketを使用しているサーバーを表示
-ip ホストのIPアドレスを表示
-cname ホストのCNAMEを表示
-extract-fqdn, -efqdn jsonl/csv出力で応答本文とヘッダーからドメインとサブドメインを抽出
-asn ホストのASN情報を表示
-cdn 使用中のCDN/WAFを表示 (デフォルト true)
-probe プローブの状態を表示
HEADLESS:
-ss, -screenshot ヘッドレスブラウザを使用してページのスクリーンショットを保存
-system-chrome スクリーンショットにローカルインストール済みChromeを使用
-ho, -headless-options string[] 追加オプションでヘッドレスChromeを起動
-esb, -exclude-screenshot-bytes JSON出力からスクリーンショットのバイト列を除外
-ehb, -exclude-headless-body JSON出力からヘッドレスヘッダーを除外
-no-screenshot-full-page 全ページスクリーンショットの保存を無効化
-st, -screenshot-timeout value スクリーンショットのタイムアウト (秒) (デフォルト 10s)
-sid, -screenshot-idle value スクリーンショット撮影前のアイドル時間 (秒) (デフォルト 1s)
-jsc, -javascript-code string[] ナビゲーション後にJavaScriptコードを実行
MATCHERS:
-mc, -match-code string 指定されたステータスコードと一致する応答 (-mc 200,302)
-ml, -match-length string 指定されたコンテンツ長と一致する応答 (-ml 100,102)
-mlc, -match-line-count string 指定された行数と一致する応答本文 (-mlc 423,532)
-mwc, -match-word-count string 指定された単語数と一致する応答本文 (-mwc 43,55)
-mfc, -match-favicon string[] 指定されたファビコンハッシュと一致する応答 (-mfc 1494302000)
-ms, -match-string string[] 指定された文字列と一致する応答 (-ms admin)
-mr, -match-regex string[] 指定された正規表現と一致する応答 (-mr admin)
-mcdn, -match-cdn string[] 指定されたCDNプロバイダーと一致するホスト (cloudfront, fastly, google など)
-mrt, -match-response-time string 指定された応答時間 (秒) と一致する応答 (-mrt '< 1')
-mdc, -match-condition string DSL式条件と一致する応答
EXTRACTOR:
-er, -extract-regex string[] 一致した正規表現の応答内容を表示
-ep, -extract-preset string[] 事前定義された正規表現 (url,ipv4,mail) と一致した応答内容を表示
FILTERS:
-fc, -filter-code string 指定されたステータスコードで応答をフィルタ (-fc 403,401)
-fpt, -filter-page-type string[] 指定されたページタイプで応答をフィルタ (例: -fpt login,captcha,parked)
-fep, -filter-error-page [非推奨: -fpt を使用] MLベースのエラーページ検出で応答をフィルタ
-fd, -filter-duplicates ほぼ重複する応答を除外 (最初の応答のみ保持)
-fl, -filter-length string 指定されたコンテンツ長で応答をフィルタ (-fl 23,33)
-flc, -filter-line-count string 指定された行数で応答本文をフィルタ (-flc 423,532)
-fwc, -filter-word-count string 指定された単語数で応答本文をフィルタ (-fwc 423,532)
-ffc, -filter-favicon string[] 指定されたファビコンハッシュで応答をフィルタ (-ffc 1494302000)
-fs, -filter-string string[] 指定された文字列で応答をフィルタ (-fs admin)
-fe, -filter-regex string[] 指定された正規表現で応答をフィルタ (-fe admin)
-fcdn, -filter-cdn string[] 指定されたCDNプロバイダーでホストをフィルタ (cloudfront, fastly, google など)
-frt, -filter-response-time string 指定された応答時間 (秒) で応答をフィルタ (-frt '> 1')
-fdc, -filter-condition string DSL式条件で応答をフィルタ
-strip 応答内のすべてのタグを除去。対応形式: html,xml (デフォルト html)
-lof, -list-output-fields 出力するフィールドのリスト (カンマ区切り)
-eof, -exclude-output-fields string[] 条件に基づいて出力フィールドを除外
RATE-LIMIT:
-t, -threads int 使用するスレッド数 (デフォルト 50)
-rl, -rate-limit int 1秒あたりの最大リクエスト数 (デフォルト 150)
-rlm, -rate-limit-minute int 1分あたりの最大リクエスト数
MISCELLANEOUS:
-pa, -probe-all-ips 同じホストに関連するすべてのIPをプローブ
-p, -ports string[] プローブするポート (nmap構文: 例 http:1,2-10,11,https:80)
-path string プローブするパスまたはパスリスト (カンマ区切り、ファイル)
-tls-probe 抽出されたTLSドメイン (dns_name) にHTTPプローブを送信
-csp-probe 抽出されたCSPドメインにHTTPプローブを送信
-tls-grab TLS(SSL)データを取得
-pipeline HTTP1.1パイプラインをサポートするサーバーをプローブして表示
-http2 HTTP2をサポートするサーバーをプローブして表示
-vhost VHOSTをサポートするサーバーをプローブして表示
-ldv, -list-dsl-variables DSLマッチャー/フィルターをサポートするJSON出力フィールドキー名を一覧表示
UPDATE:
-up, -update httpx を最新バージョンに更新
-duc, -disable-update-check 自動アップデートチェックを無効化
OUTPUT:
-o, -output string 出力結果を書き込むファイル
-oa, -output-all すべての形式で出力結果を書き込むファイル名
-sr, -store-response HTTP応答を出力ディレクトリに保存
-srd, -store-response-dir string HTTP応答をカスタムディレクトリに保存
-ob, -omit-body 出力から応答本文を除外
-csv 出力をCSV形式で保存
-csvo, -csv-output-encoding string 出力エンコーディングを指定
-j, -json 出力をJSONL(ines)形式で保存
-irh, -include-response-header JSON出力にHTTP応答(ヘッダー)を含める (-jsonのみ)
-irr, -include-response JSON出力にHTTPリクエスト/応答(ヘッダー+本文)を含める (-jsonのみ)
-irrb, -include-response-base64 JSON出力にbase64エンコードされたHTTPリクエスト/応答を含める (-jsonのみ)
-include-chain JSON出力にHTTPリダイレクトチェーンを含める (-jsonのみ)
-store-chain 応答にHTTPリダイレクトチェーンを含める (-srのみ)
-svrc, -store-vision-recon-cluster ビジュアルレコンクラスターを含める (-ss および -srのみ)
-pr, -protocol string 使用するプロトコル (unknown, http11, http2, http3)
-fepp, -filter-error-page-path string フィルタリングされたエラーページを保存するパス (デフォルト "filtered_error_page.json")
-rdb, -result-db 結果をデータベースに保存
-rdbc, -result-db-config string データベース設定ファイルのパス
-rdbt, -result-db-type string データベースの種類 (mongodb, postgres, mysql)
-rdbcs, -result-db-conn string データベース接続文字列 (環境変数: HTTPX_DB_CONNECTION_STRING)
-rdbn, -result-db-name string データベース名 (デフォルト "httpx")
-rdbtb, -result-db-table string テーブル/コレクション名 (デフォルト "results")
-rdbbs, -result-db-batch-size int データベース挿入のバッチサイズ (デフォルト 100)
-rdbor, -result-db-omit-raw データベースから生のリクエスト/応答データを除外
CONFIGURATIONS:
-config string httpx 設定ファイルのパス (デフォルト $HOME/.config/httpx/config.yaml)
-r, -resolvers string[] カスタムリゾルバーのリスト (ファイルまたはカンマ区切り)
-allow string[] 処理を許可するIP/CIDRのリスト (ファイルまたはカンマ区切り)
-deny string[] 処理を拒否するIP/CIDRのリスト (ファイルまたはカンマ区切り)
-sni, -sni-name string カスタムTLS SNI名
-random-agent ランダムなUser-Agentを使用 (デフォルト true)
-auto-referer Refererヘッダーを現在のURLに設定
-H, -header string[] リクエストとともに送信するカスタムHTTPヘッダー
-http-proxy, -proxy string 使用するプロキシ (http|socks) (例 http://127.0.0.1:8080)
-unsafe Goの正規化をスキップして生のリクエストを送信
-resume resume.cfg を使用してスキャンを再開
-fr, -follow-redirects HTTPリダイレクトに従う
-maxr, -max-redirects int ホストあたりの最大リダイレクト数 (デフォルト 10)
-fhr, -follow-host-redirects 同じホスト上のリダイレクトに従う
-rhsts, -respect-hsts リダイレクトリクエストでHSTS応答ヘッダーを尊重
-vhost-input 入力としてvhostのリストを取得
-x string プローブするリクエストメソッド。'all' ですべてのHTTPメソッドをプローブ
-body string HTTPリクエストに含めるPOST本文
-s, -stream ストリームモード - ソートせずに入力ターゲットの処理を開始
-sd, -skip-dedupe 入力アイテムの重複排除を無効化 (ストリームモードのみ)
-ldp, -leave-default-ports ホストヘッダーにデフォルトのhttp/httpsポートを残す (例: http://host:80 - https://host:443)
-ztls TLS13用に自動フォールバック付きのztlsライブラリを使用
-no-decode 本文のデコードを回避
-tlsi, -tls-impersonate 実験的なクライアントhello (ja3) TLSランダマイゼーションを有効化
-no-stdin Stdin処理を無効化
-hae, -http-api-endpoint string 実験的なHTTP APIエンドポイント
-sf, -secret-file string 認証用のシークレットファイルのパス
DEBUG:
-health-check, -hc 診断チェックを実行
-debug CLIにリクエスト/応答内容を表示
-debug-req CLIにリクエスト内容を表示
-debug-resp CLIに応答内容を表示
-version httpx のバージョンを表示
-stats スキャン統計を表示
-profile-mem string httpx メモリプロファイルダンプファイル (任意)
-silent サイレントモード
-v, -verbose 冗長モード
-si, -stats-interval int 統計更新の間隔 (秒) (デフォルト: 5)
-nc, -no-color CLI出力の色を無効化
-tr, -trace トレース
OPTIMIZATIONS:
-nf, -no-fallback プローブしたプロトコル (HTTPS および HTTP) の両方を表示
-nfs, -no-fallback-scheme 入力で指定されたプロトコルスキームでプローブ
-maxhr, -max-host-error int 残りのパス/スキップ前にホストあたりの最大エラー数 (デフォルト 30)
-e, -exclude string[] 指定されたフィルター ('cdn', 'private-ips', cidr, ip, regex) に一致するホストを除外
-retries int リトライ回数
-timeout int タイムアウト (秒) (デフォルト 10)
-delay value HTTPリクエスト間の遅延 (例: 200ms, 1s) (デフォルト -1ns)
-rsts, -response-size-to-save int 保存する最大応答サイズ (バイト) (デフォルト 50000000)
-rstr, -response-size-to-read int 読み取る最大応答サイズ (バイト) (デフォルト 50000000)
CLOUD:
-auth projectdiscovery cloud (pdcp) APIキーを設定 (デフォルト true)
-ac, -auth-config string projectdiscovery cloud (pdcp) APIキー資格情報ファイルを設定
-pd, -dashboard projectdiscovery cloud (pdcp) UIダッシュボードに出力をアップロード/表示
-tid, -team-id string アセット結果を指定されたチームIDにアップロード (任意)
-aid, -asset-id string 既存のアセットIDに新しいアセットをアップロード (任意)
-aname, -asset-name string 設定するアセットグループ名 (任意)
-pdu, -dashboard-upload string projectdiscovery cloud (pdcp) UIダッシュボードにhttpx出力ファイル (jsonl) をアップロード
httpxの実行方法の詳細については、https://docs.projectdiscovery.io/tools/httpx/running を参照してください。
httpx をライブラリとして使用するhttpx は、Option 構造体のインスタンスを作成し、CLIで指定するものと同じオプションを設定することでライブラリとして使用できます。検証後、構造体をランナーインスタンスに渡し(プログラム終了時に閉じる必要あり)、RunEnumeration メソッドを呼び出します。その方法を示す最小限の例は examples フォルダにあります。
httpx は HTTPS スキームでプローブし、HTTPS に到達できない場合のみ HTTP にフォールバックします。-l burp-export.xml -im burp で入力として使用できます。-no-fallback フラグを使用すると、HTTP と HTTPS の両方の結果をプローブして表示できます。-ports http:443,http:80,https:8443protocol:resolver:port の形式で複数のプロトコル (doh|tcp|udp) をサポートします (例: udp:127.0.0.1:53)-sf secrets.yaml を使用してドメインベースの認証に使用できます。サポートされている認証タイプ: BasicAuth、BearerToken、Header、Cookie、Query。例:
プローブ機能は @tomnomnom/httprobe の研究に触発されました ❤️
httpx は projectdiscovery チームによって 💙 で作られ、MITライセンス の下で配布されています。
| プローブ | デフォルトチェック | プローブ | デフォルトチェック |
|---|
| URL | true | IP | true |
| Title | true | CNAME | true |
| Status Code | true | Raw HTTP | false |
| Content Length | true | HTTP2 | false |
| TLS Certificate | true | HTTP Pipeline | false |
| CSP Header | true | Virtual host | false |
| Line Count | true | Word Count | true |
| Location Header | true | CDN | false |
| Web Server | true | Paths | false |
| Web Socket | true | Ports | false |
| Response Time | true | Request Method | true |
| Favicon Hash | false | Probe Status | false |
| Body Hash | true | Header Hash | true |
| Redirect chain | false | URL Scheme | true |
| JARM Hash | false | ASN | false |
id: example-auth
info:
name: Example Auth Config
static:
- type: Header
domains:
- api.example.com
headers:
- key: X-API-Key
value: secret-key-here
- type: BasicAuth
domains-regex:
- ".*\\.internal\\.com$"
username: admin
password: secret
-ports-path-vhost-screenshot-csp-probe-tls-probe-favicon-http2-pipeline-tls-impersonate