Honest verdicts
Found / NotFound / Uncertain(reason) — when a Cloudflare wall, login
page, or rate-limit blocked us, we say so instead of guessing. Adler
distinguishes “verified-absent” from “I gave up at the first wall”.
Named for Irene Adler — “the Woman”, the one who outwitted Sherlock Holmes. Where Sherlock searched, Adler outsmarts.
Honest verdicts
Found / NotFound / Uncertain(reason) — when a Cloudflare wall, login
page, or rate-limit blocked us, we say so instead of guessing. Adler
distinguishes “verified-absent” from “I gave up at the first wall”.
Reach the hard sites
Per-site geo / IP-type routing, operator session injection for login-walled sites, Chrome 134 TLS-fingerprint emulation, and headless Chrome for bot-protected platforms — all bounded by per-scan budgets.
Self-healing registry
adler --doctor validates every detection signal; --doctor --fix
diffs present/absent responses and proposes corrected signatures.
A nightly GitHub Action sweeps the registry and flags structural rot.
CLI · Library · Web UI · API
Single Rust binary for the terminal; adler-core on crates.io for
embedding; adler --web launches a SolidJS SPA with live SSE streaming;
JSON API for driving from your own frontend or scripts.
For first-time users:
cargo binstall, cargo install, or build from source.For operators going beyond the basics:
adler-core from your
own Rust code.If something isn’t behaving as expected, the FAQ covers the common cases (everything Uncertain, why fewer Found than Sherlock / Maigret, sock-puppet legality, …).
The honest positioning vs other open-source username-search tools, on the dimensions that matter when sites push back:
| Sherlock | Maigret | Blackbird | Snoop | Adler | |
|---|---|---|---|---|---|
| Approx. sites | 400 | 3,000 | 600 | 5,400 | 3,000 |
| Verdict model | Found / NotFound | Found / NotFound | Found / NotFound | Found / NotFound | Found / NotFound / Uncertain(reason) |
| Bot-protected sites | — | — | — | — | headless Chrome |
| TLS-fingerprint blocking | — | — | — | — | Chrome 134 emulation |
| Per-site geo / IP-type routing | one global | one global + Tor + I2P | — | — | per-site policy |
| Login-walled sites | — | global cookies.txt | — | — | per-site named sessions |
| Automatic escalation | — | — | — | — | cheap → browser on CF / 429 |
| Self-healing registry | — | — | — | — | --doctor --fix |
| Web UI | — | yes | — | — | SolidJS SPA + SSE + JSON API |
| Embeddable library | — | partial | — | — | adler-core on crates.io (Rust) |
| Runtime / packaging | Python | Python | Python | Python | Rust — single static binary |
Adler’s thesis: honest verdicts plus access for the sites that matter.
A NotFound from a Python-HTTP-only tool on a Cloudflare-walled,
TLS-fingerprinted, geo-restricted, or login-walled site is often just “I
gave up at the first wall.” Adler reports Uncertain(reason) when it
couldn’t verify, and ships the transports you need to break the wall —
without solving CAPTCHAs or evading human-verification.