What's New
Features
- Concurrent crawling — Multiply noise output with configurable concurrent workers (default: 3). Shared state protected by mutex. ([#10])
- Graceful shutdown — SIGINT/SIGTERM propagates through all goroutines via
context.Context. In-flight HTTP requests are cancelled cleanly. ([#8]) - SSRF protection — Blocks requests to loopback, RFC1918, link-local, and IPv6 ULA addresses. Redirects limited to 5 hops. ([#13])
Bug Fixes
- Recursive crawl → iterative loop — Eliminates stack overflow risk from unbounded recursion in
browseFromLinkswithmax_depth: 25. ([#7]) - Config validation — Invalid config (empty root URLs, invalid sleep range) now fails fast with descriptive error messages. ([#9])
- Timeout flag override — CLI
--timeoutno longer silently overrides config when unset. ([#9]) - Response body truncation — Single
Read(buf)replaced withio.ReadAll(io.LimitReader)to capture full response up to 1 MB. ([#12]) - Regex recompilation —
regexp.MustCompilemoved to package-level vars — compiled once, not on every call. ([#12])
Miscellaneous
- Code quality sweep — Migrated to
math/rand/v2, blacklist O(n) → O(1) via map, updated user agents to 2025-era, added--versionflag with ldflags injection. ([#11]) - Module import paths — Fixed to use
github.com/calpa/urusaiconsistently.
Install
# macOS (Apple Silicon)
curl -sL https://github.com/calpa/urusai/releases/download/v1.1.0/urusai-macos-arm64.tar.gz | tar xz
# macOS (Intel)
curl -sL https://github.com/calpa/urusai/releases/download/v1.1.0/urusai-macos-amd64.tar.gz | tar xz
# Linux
curl -sL https://github.com/calpa/urusai/releases/download/v1.1.0/urusai-linux-amd64.tar.gz | tar xzFull Changelog: v1.0.3...v1.1.0