
New releaseSep 19, 2026
urx v0.11.0
Извлекает URL-адреса из архивов OSINT для аналитики безопасности
Извлекает URL-адреса из OSINT-архивов для задач безопасности.
Urx собирает URL-адреса для домена из OSINT-архивов, таких как Wayback Machine и Common Crawl. Он опрашивает все источники параллельно, а затем фильтрует, проверяет и форматирует результаты для задач безопасности.
Возможности
- Источники без ключей: Wayback Machine, Common Crawl, OTX, Arquivo.pt, URLScan (анонимно)
- Источники с ключами и ротацией ключей: VirusTotal, URLScan, ZoomEye, GitHub Code Search, BeVigil (URL-адреса из Android-приложений)
- Любой другой CDX-сервер (pywb, OutbackCDX, национальные архивы) через
--cdx-endpoint - Фильтры на стороне архива (
--from/--to,--archive-status,--archive-mime) выполняются внутри CDX-запроса - Клиентские фильтры метаданных (
--meta-*) по дате захвата, MIME-типу и статусу для каждого провайдера - Цели с ограничением по пути (
urx example.com/shop) и файлы области bug-bounty (--scope-file) - Фильтрация по расширению, подстроке, регулярному выражению (
--match-regex,--filter-regex) и пресеты (no-images,only-js,only-secrets,only-backup,only-config,only-api) - Нормализация и дедупликация:
--normalize-url,--merge-endpoint,--dedup-similar - Вывод в виде plain, 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

Установка
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). В образе нет entrypoint, поэтому укажите ./urx после имени образа:
docker run --rm ghcr.io/hahwul/urx:latest ./urx example.com
Готовые бинарные файлы для Linux, macOS и Windows, каждый с файлом .sha256, доступны на странице релизов.
Дополнения для оболочки (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