Skip to content

feat: add optional web UI with live scan progress#2883

Open
lbrezende wants to merge 1 commit into
sherlock-project:masterfrom
lbrezende:lbrezende/visual-feedback
Open

feat: add optional web UI with live scan progress#2883
lbrezende wants to merge 1 commit into
sherlock-project:masterfrom
lbrezende:lbrezende/visual-feedback

Conversation

@lbrezende
Copy link
Copy Markdown

Summary

Adds an optional Flask web UI that surfaces Sherlock's scan progress visually, so users see continuous feedback during a run instead of waiting in silence for the full scan to finish.

Why

A default Sherlock scan checks ~400 sites and takes 1–2 minutes. First-time users often can't tell whether the tool is working, stuck, or done — especially when --print-found stays silent until a match lands. This adds a lightweight, opt-in view to close that feedback gap without touching the CLI.

What's in it

A single-file module (sherlock_project/web.py) wrapping the CLI, with three display modes:

  • Found — clean list of matched profiles only
  • Live (default) — streaming view: matches appear inline as clickable links, misses stack as red dashes so progress is always visible
  • Full log — complete raw output

Plus:

  • EN / PT-BR localization with browser auto-detection and persistence
  • Live counter of hits and misses
  • Line-by-line streaming (no buffering)
  • Completely opt-in; the core CLI is untouched

How to run

```bash
pip install flask
python -m sherlock_project.web

http://127.0.0.1:5000

```

Host and port can be overridden with `SHERLOCK_WEB_HOST` and `SHERLOCK_WEB_PORT`.

Notes

  • Flask is loaded lazily with a friendly install hint — it is not added as a core dependency
  • Username input is validated server-side against `^[A-Za-z0-9_.-]{1,64}$` before being passed to the subprocess
  • `ruff check` passes

Happy to adjust scope, placement, or styling based on maintainer preferences.

Adds sherlock_project/web.py, a lightweight Flask wrapper around the
CLI that streams scan progress to the browser. Users get continuous
visual feedback during a run instead of waiting in silence for the
full scan to complete.

Three display modes:
- Found: lists only matched profiles
- Live (default): streams matches inline, misses as red dashes
- Full log: complete raw output

Also includes EN/PT-BR localization with browser auto-detection,
hit/miss counters, and line-by-line streaming.

Flask is an optional dependency, loaded lazily with a friendly
install hint. The core CLI is untouched.

Run with: python -m sherlock_project.web
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant