Skip to content

Oli97430/sherlock-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SHERLOCK-RS

Hunt social media accounts by username — Rust Edition

Rust License Sites Platform Author

A complete Rust rewrite of Sherlock with a modern dark web UI — single .exe, zero installation.


Overview

Sherlock-RS scans 478+ social platforms in parallel to check whether a username exists. Just run the exe: a local server starts, your browser opens automatically, and results stream in real time.

New: Simultaneous multi-username search with tabs, automatic rotation of 25 real User-Agents, and smart retry logic on network errors.


Features

Feature Details
🔍 478+ sites scanned Official Sherlock database, one-click update from the UI
👥 Multi-username Enter multiple names at once (comma or newline), results per tab
Parallel scanning 20 concurrent requests via Tokio async — full scan in minutes
🔄 User-Agent rotation 25 real browsers (Chrome, Firefox, Edge, Safari, Opera…) rotated randomly per request
🔁 Smart retry 3 attempts with exponential backoff (500 ms / 1 000 ms) on network errors only
🎨 Modern UI Dark-themed web interface with real-time results (Server-Sent Events)
🛡️ WAF detection Cloudflare, PerimeterX, AWS CloudFront detected and flagged
🧅 Proxy / Tor Native SOCKS5 support (socks5://127.0.0.1:9050 for Tor)
📥 Export Download results as CSV (spreadsheet) or TXT
🔎 Filter & sort Sort by name, status or response time — live text filter
📦 Zero install Single self-contained 5 MB .exe, no dependencies required

Installation

Quick method — Download the binary

  1. Download the latest release from the Releases page
  2. Double-click sherlock-rs.exe
  3. Your browser opens automatically — that's it

Build from source

Requirements:

git clone https://github.com/Oli97430/sherlock-rs.git
cd sherlock-rs
cargo build --release

The binary will be located at target/release/sherlock-rs.exe.


Usage

sherlock-rs.exe

The program starts a local server on a random port and opens your default browser. No extra commands needed.

Basic steps

  1. Enter one or more usernames to search (separated by comma or newline)
  2. Adjust options if needed (timeout, proxy, NSFW)
  3. Click Hunt or press Enter
  4. Results appear in real time, site by site
  5. Export results as CSV or TXT via the dedicated buttons

Multi-username search

The input field accepts multiple names at once:

johndoe
janedoe, alice

Each username gets its own tab with a live counter of accounts found. The tab being scanned pulses in blue.

Interface options

Option Description
Timeout Maximum wait time per request (default: 30 s, min: 5 s)
NSFW Include adult content platforms in the search
Proxy SOCKS5 or HTTP proxy URL, e.g. socks5://127.0.0.1:9050 for Tor
Update DB Downloads the latest site database from GitHub

Keyboard shortcuts

Key Action
Enter Start search (from the username field)
Shift + Enter Add a new line (multi-username input)
Escape Stop the current search

How it works

Detection methods

Sherlock-RS faithfully implements the 3 detection methods from the original project:

Type Logic
status_code HTTP 404 (or custom code) → not found; 200-299 → found
message Specific error text found in response body → not found
response_url Redirects disabled; 200-299 → found, otherwise not found

WAF detection (Cloudflare, PerimeterX…) is applied first, before any other logic, to avoid false positives. Blocked results are reported separately with the Blocked status.

User-Agent rotation

Each individual request randomly picks a User-Agent from 25 real modern browsers:

  • Chrome 128–131 (Windows, macOS, Linux, Android)
  • Firefox 130–133 (Windows, macOS, Linux)
  • Edge 130–131 (Windows, macOS)
  • Safari 17 (macOS, iOS)
  • Opera 116, Brave

This significantly reduces bot-detection-based blocking.

Exponential backoff retry

On network errors (timeout, connection refused, DNS failure):

Attempt 1  →  fails  →  wait 500 ms
Attempt 2  →  fails  →  wait 1 000 ms
Attempt 3  →  final result (success or error displayed)

Valid HTTP responses (even 403 or 404) do not trigger a retry.


Result statuses

Status Meaning Tip
Found Account detected on the platform Click the URL to open the profile
Not found No account under this name
⚠️ Blocked Blocked by a WAF (Cloudflare…) Retry with a proxy or Tor
🔴 Error Network error or timeout after 3 attempts Increase the timeout
Invalid Username format doesn't match the site's rules Normal for some sites

Code architecture

sherlock-rs/
├── Cargo.toml              # Dependencies and project metadata
├── src/
│   ├── main.rs             # Entry point, console banner, server startup
│   ├── server.rs           # Axum server: REST routes + SSE streaming
│   ├── checker.rs          # Async scan engine: UA rotation, retry, detection
│   ├── sites.rs            # Load and parse data.json (local cache + GitHub)
│   ├── result.rs           # Types: QueryStatus (enum), QueryResult (struct)
│   └── export.rs           # CSV and TXT export grouped by username
└── frontend/
    └── index.html          # Full UI embedded in the binary (HTML/CSS/JS)

Rust crates used

Role Crate
Async runtime tokio 1
Web server + SSE axum 0.7
HTTP client reqwest 0.12
JSON serialization serde + serde_json
Regular expressions regex
Randomness (UA rotation) rand 0.8
CSV export csv
Browser launcher open
System directories dirs
Error handling anyhow

Credits


License

MIT — see the LICENSE file


Built with passion and Rust 🦀 — Olivier Hoarau

About

Hunt down social media accounts by username - Rust rewrite with modern web UI

Resources

License

Stars

6 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors