アップデート一覧に戻る
New releaseSep 19, 2026

urx v0.11.0

OSINTアーカイブからURLを抽出してセキュリティインサイトを得る

共有
Urx Logo

OSINTアーカイブからURLを抽出し、セキュリティインサイトを得る。

Urxは、Wayback MachineやCommon CrawlなどのOSINTアーカイブからURLを収集するために設計されたコマンドラインツールです。効率性を重視してRustで構築されており、非同期処理を活用して複数のデータソースを迅速にクエリします。このツールは、指定されたドメインのURL情報を収集するプロセスを簡素化し、セキュリティテストや分析など様々な目的に使用できる包括的なデータセットを提供します。

機能

  • 複数のソースから並列でURLを取得(Wayback Machine、Common Crawl、OTX、Arquivo.pt)
  • 他のあらゆるCDXインデックスサーバーをプラグイン可能 — 各国のウェブアーカイブ、プライベートなpywb、OutbackCDX — --cdx-endpoint URL でコード変更なしに利用可能
  • デフォルトでキー不要:Wayback、Common Crawl、OTX、Arquivo.pt、URLScan(匿名)はすべてAPIキーなしで動作
  • BeVigilプロバイダー:展開されたAndroidアプリから抽出されたURL — ウェブアーカイブが決してクロールしなかったエンドポイント
  • すべてのキー付きプロバイダー(VirusTotal、URLScan、ZoomEye、GitHub、BeVigil)のAPIキーローテーションによるレート制限の緩和
  • 認証付きテスト:-H、--cookie、--user-agent はurxがターゲットに対して行うすべてのリクエスト(--check-status、--extract-links、--extract-js-endpoints、--expand-specs、および robots/sitemap プローブ)に適用され、アーカイブには意図的に一切送信されない
  • ファイル拡張子、部分文字列パターン、または完全な正規表現(--match-regex / --filter-regex)による結果のフィルタリング
  • 定義済みプリセット:ファイルファミリー別("no-images"、"only-js")とセキュリティ関心別("only-secrets"、"only-backup"、"only-config"、"only-api")の両方
  • アーカイブ側フィルタリング:ステータスコード、MIMEタイプ、日付範囲をCDXクエリ自体にプッシュするため、フィルタリングされたキャプチャはネットワークを通過しない
  • クライアント側メタデータフィルタリング(--meta-*):収集後に、最初/最後のキャプチャ日、記録されたMIMEタイプ、記録されたステータスをすべてのプロバイダーで統一的にフィルタリング
  • パススコープ付きターゲット:urx example.com/shop はスコープをCDXクエリ自体にプッシュする(url=example.com/shop*)ため、大規模サイトのサブツリーはクライアント側でフィルタリングされるのではなく、インデックス全体のごく一部のコストで済む
  • バグバウンティスコープファイル(--scope-file):プログラム自身の *.example.com / !admin.example.com リストをそのまま使用し、繰り返し可能で和集合として扱われ、除外が常に優先される
  • URL正規化と重複排除:クエリパラメータのソート、末尾スラッシュの削除、意味的に同一のURLのマージ、およびid、ハッシュ、日付のみが異なるほぼ重複したURLの統合(--dedup-similar)
  • 複数の出力形式のサポート:プレーンテキスト、JSON、JSON Lines、CSV、および wordlist — ターゲットが構築されるパスセグメントとパラメータ名で、id、ハッシュ、日付は除外される
  • パラメータとファズビュー:--params(ターゲット全体のパラメータインベントリ)、--params-by-endpoint(どのエンドポイントが何を受け取るか)、--fuzz-placeholder FUZZ(パラメータシグネチャごとに1つのテンプレート化されたURL、ffufやdalfoxですぐに使用可能)
  • アーカイブキャプチャメタデータ:first_seen、last_seen、mime、archive_status、digest が、CDXアーカイブが報告したすべてのURLとともに追加のネットワークコストなしで返される
  • ストリーミング出力(--stream):各プロバイダーが報告するたびにURLが書き出されるため、パイプラインは最も遅いアーカイブを待つことなく即座に動作を開始する
  • 直接ファイル入力のサポート:WARCファイル、URLTeam圧縮ファイル、テキストファイルからURLを直接読み取り
  • 結果をコンソールまたはファイルに出力、あるいはパイプライン統合用にstdin経由でストリーミング
  • URLテスト:
    • HTTPステータスコードとパターンに基づくURLのフィルタリングと検証。
    • 収集したURLから追加のリンクを抽出 — アンカー、スクリプト、スタイルシート、フォームアクション、iframe、画像、メディアソース、オブジェクト、埋め込み、メタリフレッシュターゲット
    • 収集したURLのアーカイブされたレスポンスボディをマイニング(--archive-body)するため、もはや存在しないページでも含まれていたリンクを提供する — CDXダイジェストの重複排除により、異なるボディごとに1リクエスト
    • --extract-js-endpoints を使用すると、アーカイブされたJavaScriptもマイニングする:ビルドハッシュで命名されたバンドルはサイトが再デプロイされた瞬間に404になるが、アーカイブはそのAPIサーフェスがまだ存在する唯一の場所である
    • リプレイされたボディを保持(--archive-body-dir)し、リンク抽出器が探さないもの — 開発者コメント、インライン化された認証情報、内部ホスト名 — をgrepするためのコーパスとして、追加リクエストなしで利用
    • API仕様の展開(--expand-specs):OpenAPI 3.x、Swagger 2.0、GraphQLイントロスペクションドキュメント(JSONまたはYAML)を、それらが記述するすべてのルートに変換 — 1リクエストでドキュメント化されたサーフェス全体を取得
    • レスポンスメタデータ:--check-status は Location、Content-Length、Content-Type も記録し、--check-title はHTMLの <title> を追加する
  • アーカイブされたrobots.txtとsitemap.xmlの発見(--archived-discovery):Wayback Machineが保持するすべての異なるバージョンにより、2015年の Disallow: が、サイトがそれ以降言及しなくなったパスを今も示している
  • キャッシュとインクリメンタルスキャン:
    • ローカルSQLiteまたはリモートRedisキャッシュによるドメインの再スキャン回避(Redisは --features redis-cache 付きのビルドが必要。パッケージ版ビルドには含まれない)
    • 前回のスキャン以降の新規URLのみを発見するインクリメンタルモード
    • 設定可能なキャッシュTTL。各スキャンはTTLの2倍より古いエントリを掃除し、urx cache prune はそれを超えたものを削除する
    • キャッシュを検査・保守する urx cache サブコマンド:stats、list、prune、drop <domain>、clear

Preview

インストール

Cargoから

# https://crates.io/crates/urx
cargo install urx

Homebrew から

# https://formulae.brew.sh/formula/urx
brew install urx

ソースから

git clone https://github.com/hahwul/urx.git
cd urx
cargo build --release

コンパイル済みバイナリは target/release/urx に生成されます。

Docker から

ghcr.io/hahwul/urx

docker pull ghcr.io/hahwul/urx:latest
# the image has no entrypoint, so name the binary before its arguments
docker run --rm ghcr.io/hahwul/urx:latest ./urx example.com

AUR から

yay -S urx

Chocolatey から(Windows)

choco install urx

GitHub Releases から

Linux、macOS、Windows 用のビルド済みバイナリ(それぞれ .sha256 付き)が すべての release に添付されています。

シェル補完

urx は自身の補完スクリプトを生成するため、実際にインストールされている バイナリのフラグと常に一致します。

# zsh — any directory on your $fpath works
urx --completions zsh > ~/.zfunc/_urx
# (make sure ~/.zfunc is on the fpath, then `compinit`)

# bash
urx --completions bash > ~/.local/share/bash-completion/completions/urx

# fish
urx --completions fish > ~/.config/fish/completions/urx.fish

powershell と elvish もサポートされています。このフラグにはターゲットドメインは不要です。

Man ページ

urx --manpage > ~/.local/share/man/man1/urx.1
man urx

使用方法

基本的な使用方法

# Scan a single domain
urx example.com

# Scan multiple domains
urx example.com example.org

# Scan domains from a file
cat domains.txt | urx

オプション

Usage: urx [OPTIONS] [DOMAINS]... [COMMAND]

Commands:
  cache  Inspect and maintain the URL cache: stats, list, prune, drop <DOMAIN>..., clear

Arguments:
  [DOMAINS]...  Domains to fetch URLs for

Options:
  -c, --config <CONFIG>           Config file to load
      --provider-config <PATH>    Separate provider config file holding only API keys (default: ~/.config/urx/provider-config.toml; %APPDATA%\urx\ on Windows). CLI/env > provider-config > main config.
      --completions <SHELL>       Print a shell completion script (bash, zsh, fish, powershell, elvish) to stdout and exit
      --manpage                   Print the roff man page to stdout and exit
  -h, --help             Print help
  -V, --version          Print version

Input Options:
      --files <FILES>...        Read URLs directly from files (supports WARC, URLTeam compressed, and text files)
      --domain-list <PATH>      File of newline-separated domains to scan (repeatable; merged with positional DOMAINS; stdin is read only when they name no domains; `#` comments allowed) [alias: --dL]

カテゴリ