Zurück zu den Updates
New releaseSep 19, 2026

urx v0.11.0

Extrahiert URLs aus OSINT-Archiven für Sicherheitseinblicke

Teilen
Urx Logo

Extrahiert URLs aus OSINT-Archiven für Sicherheitserkenntnisse.

Urx sammelt URLs für eine Domain aus OSINT-Archiven wie der Wayback Machine und Common Crawl. Es fragt jede Quelle parallel ab und filtert, prüft und formatiert anschließend die Ergebnisse für Sicherheitsarbeiten.

Funktionen

  • Quellen ohne Schlüssel: Wayback Machine, Common Crawl, OTX, Arquivo.pt, URLScan (anonym)
  • Quellen mit Schlüssel und Schlüsselrotation: VirusTotal, URLScan, ZoomEye, GitHub Code Search, BeVigil (URLs aus Android-Apps)
  • Jeder andere CDX-Server (pywb, OutbackCDX, nationale Archive) über --cdx-endpoint
  • Archivseitige Filter (--from/--to, --archive-status, --archive-mime) laufen innerhalb der CDX-Abfrage
  • Clientseitige Metadatenfilter (--meta-*) auf Erfassungsdatum, MIME-Typ und Status, für jeden Anbieter
  • Pfadbezogene Ziele (urx example.com/shop) und Bug-Bounty-Scope-Dateien (--scope-file)
  • Filter nach Endung, Teilstring, Regex (--match-regex, --filter-regex) und Presets (no-images, only-js, only-secrets, only-backup, only-config, only-api)
  • Normalisierung und Deduplizierung: --normalize-url, --merge-endpoint, --dedup-similar
  • Ausgabe als Plain, JSON, JSON Lines, CSV oder wordlist; --stream schreibt URLs, sobald sie eintreffen
  • Parameteransichten: --params, --params-by-endpoint, --fuzz-placeholder FUZZ für ffuf oder dalfox
  • Erfassungsmetadaten pro URL: first_seen, last_seen, mime, archive_status, digest
  • Eingabe aus WARC-, URLTeam- und Textdateien (--files) oder stdin
  • Live-Tests: --check-status, --check-title, --extract-links, --extract-js-endpoints
  • Archivierte Bodies: --archive-body extrahiert Links aus Seiten, die nicht mehr existieren, eine Anfrage pro unterschiedlichem Body; --archive-body-dir behält sie
  • API-Spec-Erweiterung (--expand-specs): OpenAPI 3.x, Swagger 2.0, GraphQL-Introspektion
  • Archivierte Versionen von robots.txt und sitemap.xml (--archived-discovery)
  • Authentifizierte Anfragen an das Ziel (-H, --cookie, --user-agent), die niemals an Archive gesendet werden
  • SQLite- oder Redis-Cache (Redis erfordert einen Build mit --features redis-cache), --incremental-Scans, urx cache-Wartung und --notify-Webhooks

Preview

Installation

cargo install urx       # https://crates.io/crates/urx
brew install urx        # https://formulae.brew.sh/formula/urx
yay -S urx              # AUR
choco install urx       # Chocolatey (Windows)

Aus der Quelle (Binärdatei unter target/release/urx):

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

Docker (ghcr.io/hahwul/urx). Das Image hat keinen Entrypoint, daher ./urx nach dem Image-Namen angeben:

docker run --rm ghcr.io/hahwul/urx:latest ./urx example.com

Vorkompilierte Binärdateien für Linux, macOS und Windows, jeweils mit einer .sha256, befinden sich auf der Releases-Seite.

Shell-Completions (bash, zsh, fish, powershell, elvish) und die Manpage:

urx --completions zsh > ~/.zfunc/_urx        # ~/.zfunc must be on $fpath
urx --completions bash > ~/.local/share/bash-completion/completions/urx
urx --completions fish > ~/.config/fish/completions/urx.fish
urx --manpage > ~/.local/share/man/man1/urx.1

Verwendung

Grundlegende Verwendung

urx example.com                 # one domain
urx example.com example.org     # several domains
cat domains.txt | urx           # domains from stdin

Optionen

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]

Output Options:
  -o, --output <OUTPUT>          Output file to write results
      --output-dir <PATH>        Write one file per URL host into this directory (extension matches --format). Coexists with --output / stdout. [alias: --oD]
  -f, --format <FORMAT>          Output format: "plain", "json" (one array), "jsonl" (one JSON object per line), "csv", "wordlist" (path segments and parameter names, deduplicated and sorted); anything else is a usage error [default: plain]
      --stream           Write URLs as each provider reports them instead of once at the end (unsorted; bypasses cache; rejects options needing the full result set)
      --merge-endpoint   Merge endpoints with the same path and merge URL parameters
      --normalize-url    Normalize URLs for better deduplication (sorts query parameters, removes trailing slashes)
      --dedup-similar    Collapse URLs that differ only in variable data (numeric ids, UUIDs, hashes, dates, query values)
      --params           Replace the URL list with every query parameter name the run saw, once each
      --params-by-endpoint
                         One line per endpoint: the endpoint and the comma-separated union of the parameter names seen on it (id-looking path segments collapse to `{id}`)
      --fuzz-placeholder <VALUE>
                         Replace every query parameter value with VALUE, keeping one URL per parameter signature — output you can feed straight to ffuf or dalfox

Kategorien