返回更新列表
新发布Sep 19, 2026

urx v0.11.0

从 OSINT 档案中提取 URL,用于安全洞察

分享
Urx Logo

从 OSINT 档案中提取 URL,助力安全洞察。

Urx 从 Wayback Machine 和 Common Crawl 等 OSINT 档案中收集某个域名的 URL。它会并行查询每个来源,然后对结果进行过滤、测试和格式化,以供安全工作使用。

功能特性

  • 无需密钥的来源:Wayback Machine、Common Crawl、OTX、Arquivo.pt、URLScan(匿名)
  • 需要密钥且支持密钥轮换的来源:VirusTotal、URLScan、ZoomEye、GitHub Code Search、BeVigil(来自 Android 应用的 URL)
  • 通过 --cdx-endpoint 支持任何其他 CDX 服务器(pywb、OutbackCDX、国家档案馆)
  • 档案侧过滤器(--from/--to、--archive-status、--archive-mime)在 CDX 查询内部执行
  • 客户端元数据过滤器(--meta-*),针对捕获日期、MIME 类型和状态,适用于所有提供方
  • 路径范围目标(urx example.com/shop)和漏洞赏金范围文件(--scope-file)
  • 按扩展名、子字符串、正则(--match-regex、--filter-regex)和预设(no-images、only-js、only-secrets、only-backup、only-config、only-api)进行过滤
  • 规范化与去重:--normalize-url、--merge-endpoint、--dedup-similar
  • 输出为纯文本、JSON、JSON Lines、CSV 或 wordlist;--stream 在 URL 到达时即写出
  • 参数视图:--params、--params-by-endpoint、--fuzz-placeholder FUZZ,用于 ffuf 或 dalfox
  • 每个 URL 的捕获元数据:first_seen、last_seen、mime、archive_status、digest
  • 从 WARC、URLTeam 和文本文件(--files)或 stdin 输入
  • 实时测试:--check-status、--check-title、--extract-links、--extract-js-endpoints
  • 归档正文:--archive-body 从已不存在的页面中挖掘链接,每个不同正文仅发起一次请求;--archive-body-dir 会保留它们
  • API 规范扩展(--expand-specs):OpenAPI 3.x、Swagger 2.0、GraphQL introspection
  • 归档的 robots.txt 和 sitemap.xml 版本(--archived-discovery)
  • 对目标发起认证请求(-H、--cookie、--user-agent),绝不会发送到档案
  • SQLite 或 Redis 缓存(Redis 需要 --features redis-cache 构建)、--incremental 扫描、urx cache 维护以及 --notify webhook

Preview

安装

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)

从源代码(二进制文件位于 target/release/urx):

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

Docker(ghcr.io/hahwul/urx)。该镜像没有入口点,因此请将 ./urx 放在镜像名称之后:

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

适用于 Linux、macOS 和 Windows 的预编译二进制文件(每个都附带 .sha256 文件)可在 releases 页面 获取。

Shell 补全(bash、zsh、fish、powershell、elvish)以及 man 手册页:

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

用法

基本用法

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

选项

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

分类