
OSINTアーカイブからURLを抽出し、セキュリティインサイトを得る。
Urxは、Wayback MachineやCommon CrawlなどのOSINTアーカイブからURLを収集するために設計されたコマンドラインツールです。効率性を重視してRustで構築されており、非同期処理を活用して複数のデータソースを迅速にクエリします。このツールは、指定されたドメインのURL情報を収集するプロセスを簡素化し、セキュリティテストや分析など様々な目的に使用できる包括的なデータセットを提供します。
--cdx-endpoint URLでプラグイン可能 — コード変更は不要-H、--cookie、--user-agentは、urxがターゲットに対して行うすべてのリクエスト(--check-status、--extract-links、--extract-js-endpoints、--expand-specs)に適用され、アーカイブには意図的に一切送信されない--match-regex / --filter-regex)で結果をフィルタリング--meta-*):収集後に、最初/最後のキャプチャ日時、記録されたMIMEタイプ、記録されたステータスをすべてのプロバイダーで統一的にフィルタリングurx example.com/shopはスコープをCDXクエリ自体にプッシュする(url=example.com/shop*)ため、大規模サイトのサブツリーはインデックス全体のごく一部のコストで済み、クライアント側でフィルタリングされることがない--scope-file):プログラム自身の*.example.com / !admin.example.comリストをそのまま使用し、繰り返し可能で和集合として扱われ、除外が常に優先される--dedup-similar)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を報告するたびに書き出されるため、パイプラインは最も遅いアーカイブを待つことなく即座に動作を開始する--archive-body)するため、もはや存在しないページでも含まれていたリンクを明らかにする — CDXダイジェストの重複排除により、異なるボディごとに1リクエスト--extract-js-endpointsを使用すると、アーカイブされたJavaScriptもマイニングする:ビルドハッシュで命名されたバンドルはサイトが再デプロイされた瞬間に404になるが、アーカイブはそのAPIサーフェスがまだ存在する唯一の場所である--archive-body-dir)し、リンク抽出器が探さないもの — 開発者コメント、インライン化された認証情報、内部ホスト名 — をgrepするためのコーパスとして、追加リクエストなしで利用--expand-specs):OpenAPI 3.x、Swagger 2.0、GraphQLイントロスペクションドキュメント(JSONまたはYAML)を、それらが記述するすべてのルートに変換 — 1リクエストでドキュメント化されたサーフェス全体を取得--check-statusはLocation、Content-Length、Content-Typeも記録し、--check-titleはHTMLの<title>を追加--archived-discovery):Wayback Machineが保持するすべての異なるバージョンにより、2015年のDisallow:が、サイトがその後言及しなくなったパスを今でも示すurx cacheサブコマンドでキャッシュを検査および保守:stats、list、prune、drop <domain>、clear
cargo install urx
### Homebrew から```bash
# 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](https://github.com/hahwul/urx/pkgs/container/urx)
### シェル補完
`urx` は自身の補完スクリプトを生成するため、実際にインストールされているバイナリのフラグと常に一致します。```bash
# 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 もサポートされています。このフラグにはターゲットドメインは不要です。
urx --manpage > ~/.local/share/man/man1/urx.1 man urx
## 使用方法
### 基本的な使用方法```bash
# 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 ..., clear
Arguments: [DOMAINS]... Domains to fetch URLs for
Options: -c, --config Config file to load --provider-config Separate provider config file holding only API keys (default: $XDG_CONFIG_HOME/urx/provider-config.toml). CLI/env > provider-config > main config. --completions 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 ... Read URLs directly from files (supports WARC, URLTeam compressed, and text files)
--domain-list File of newline-separated domains to scan (repeatable; merged with positional DOMAINS and stdin; # comments allowed)